上次,我们写了一个led的驱动程序,这一节,我们只需稍微改动一下就可以实现蜂鸣器的驱动,让我们来看看吧。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5CanVXYs9CX0xWdhZWZk9CX09Wbl9lcvRXakVGa49CXy9GdpRWZoh3LcRXZu5ibkN3Yuc2bsJmLjlGdhR3cvw1LcpDc0RHaiojIsJye.gif)
还是跟之前一样,先找电路图,找到电路板上对应的引脚和相关联的寄存器。
1、看电路图
(1)蜂鸣器接口位于电路板的底板,看电路图可知道是高电平有效。
(2)相对应的找到核心板的接口。由此可知,我们的蜂鸣器是gpd0_0
接下来找数据手册,找到对应的寄存器,然后配置它就可以了。
2、查数据手册,找到相关的寄存器,并配置
(1)找到gpd0con,地址是0x114000a0,我们需要配置gpd0con(0)为输出状态。也就是写0x1这个值到这个寄存器。
(2)找到gpd0dat这个寄存器,用于配置蜂鸣器的高低电平,物理地址是0x114000a4,刚好与上一个差4个字节的偏移
我们只要对这个寄存器写1和写0,那么蜂鸣器就可以叫起来了,哈哈。是不是很简单?
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5CanVXYs9CX0xWdhZWZk9CX09Wbl9lcvRXakVGa49CXy9GdpRWZoh3LcRXZu5ibkN3Yuc2bsJmLjlGdhR3cvw1LcpDc0RHaiojIsJye.gif)
3、开始写驱动程序。
4、写测试程序
5、编写makefile
6、编译
7、查看设备主设备号,这里就省略图了,我们得到主设备号是250 cat /proc/devices
8、创建设备节点 mknod /dev/test-dev c 250 0
9、开始执行
由于蜂鸣器的现象没有实质的效果展示,只能通过终端打印,如有兴趣,自己去尝试,用其它板子也可以,就照着我这个方法写驱动,一定成功的!