第八章 让开发板发出声音:蜂鸣器驱动

通过学习第八章,我总结出了一些自己认为重要,需要熟练掌握的知识点。

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

转载于:https://www.cnblogs.com/daiyan666/p/5638679.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值