zoukankan      html  css  js  c++  java
  • 蜂鸣器

    1、通过向寄存器写入特定的值来控制蜂鸣器发出声音。

    2、在遇到无法卸载Linux驱动时通过直接修改Linux驱动相应的内存地址删除Linux驱动避免重启机器的麻烦。

    3、通过不同的源代码文件存放不同的的功能代码有利于代码的分类和管理。

    4、Main.c是Linux驱动的主程序。

    5、初始化Linux驱动

    Static int _init main _init(void)

    6、卸载Linux驱动

    Static void _exit main _exit(void)

    7、注册初始化Linux驱动的函数

    Module_init(main_init);

    8、注册卸载Linux驱动的函数

    Module_exit(main_exit);

    9、代码重用分为静态和动态两种、

    10、强行卸载Linux驱动发生的情况:

    初始化函数崩溃、卸载函数被阻塞、

    11、通过相应的寄存器来控制蜂鸣器的打开和关闭。

    12、蜂鸣器驱动原理:蜂鸣器也称为PWM(脉冲宽度调制),基本原理是通过脉冲来控制蜂鸣器的打开和关闭。

    13、通过I/O命令打开和关闭PWM。

    14、PWM设备文件的close函数

    Static int s3c64xx_pwm_close(struct inode *inode,struct file *file)

    15、释放信号量

    Up(&lock);

    16、打开PWM

    Pwm_start();

    17、停止PWM

    Pwm_stop();

    18、初始化信号量

    Init_MOTEX(&lock);

    19、注册设备文件

    /dev/pwm_den

    20、移除设备文件

    Misc_deregister(&misc);

    21、I/O命令;打开PWM

    #define PWM_IOCTL_START 1

    22、I/O命令;停止PWM

    #define PWM_IOCTL_STOP 0

    23、打开PWM的函数

    Extern void pwm_start(void);

    24、停止PWM的函数

    Extern void pwm_stop(void);

    25、将GPFCON寄存器的高两位清零,其他位保留

    Tmp &=~(0x3U << 30);

    26、将GPFCON寄存器的高两位设为10

    Tmp |= (0x2U << 30);

    27、将新的值写会GPFCON寄存器,PWM开始尖叫

    Iowrite32(tmp, s3c64XX_GPFCON);

    28、将新的值写会GPFCON寄存器,PWM停止发出尖叫

    Iowrite32(tmp, s3c64XX_GPFCON);

    29、打开PWM

    # ./ioctl /dev/pwm_dev 1 0

    30、停止PWM

    # ./ioctl /dev/pwm_dev 0 0

     
  • 相关阅读:
    shell 基础进阶 *金字塔
    shell,awk两种方法写9*9乘法表
    shell脚本判断一个用户是否登录成功
    shell 冒泡算法 解决数组排序问题
    shell 石头剪刀布
    应用shell (ssh)远程链接主机
    nmcli命令使用
    光盘yum源autofs按需挂载
    LVM扩容,删除
    LVM创建
  • 原文地址:https://www.cnblogs.com/qian0101/p/5646561.html
Copyright © 2011-2022 走看看