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

     
  • 相关阅读:
    caffe常用层: batchNorm层和scale层
    简述configure、pkg-config、pkg_config_path三者的关系
    python删除list中元素的三种方法
    Leetcode 872. Leaf-Similar Trees
    Leetcode 508. Most Frequent Subtree Sum
    Leetcode 572. Subtree of Another Tree
    Leetcode 894. All Possible Full Binary Trees
    Leetcode 814. Binary Tree Pruning
    Leetcode 557. Reverse Words in a String III
    python 多维list声明时的小问题
  • 原文地址:https://www.cnblogs.com/qian0101/p/5646561.html
Copyright © 2011-2022 走看看