微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PWM在ARM Linux中的原理和蜂鸣器驱动实例开发

PWM在ARM Linux中的原理和蜂鸣器驱动实例开发

时间:11-09 来源:互联网 点击:

t /linux-2.6.30.4/drivers/char/Kconfig //添加PWM蜂鸣器设备配置

config MY2440_PWM_BEEP
tristate"My2440 PWM Beep Device"
dependsonARCH_S3C2440
default y
---help---
My2440 PWM Beep

#gedit /linux-2.6.30.4/drivers/char/Makefile //添加PWM蜂鸣器设备配置

obj-$(CONFIG_MY2440_PWM_BEEP) +=my2440_pwm.o

5.配置内核,选择PWM蜂鸣器设备选项

#make menuconfig

Device Drivers --->
Character devices --->
<*> My2440 PWM Beep Device (NEW)

6. 编译内核并下载到开发板上。这里要注意,现在我们不需要手动的在开发板上创建设备的节点了,因为我们现在使用了mdev进行管理了(使用方法请看:设备文件系统剖析与使用),在驱动程序中也添加了对类设备接口的支持。之前讲的一些驱动都没有,以后我们都使用这种方法。现在可以查看到/dev目录下自动创建好的my2440_pwm设备节点,就直接可以使用它了。

7. 编写PWM蜂鸣器驱动的测试程序。文件名:pwm_test.c

/*
==============================================
Name : pwm_test.c
Author : Huang Gang
Date : 25/11/2009
Copyright : GPL
Description : my2440 pwm driver test
==============================================
*/

#include
#include
#include
#include

intmain(intargc,char**argv)
{
inttmp;
intfd;
inti;

//打开蜂鸣器设备
fd=open("/dev/my2440_pwm",O_RDWR);

if(fd<0)
{
printf("Open PWM Device Faild!/n");
exit(1);
}

//提示用户输入一个参数来对蜂鸣器进行调频,0表示停止工作
printf("please enter the times number(0 is stop):/n");

while(1)
{
//输入参数
scanf("%d",&tmp);
printf("times = %d/n",tmp);

//IO控制
ioctl(fd,tmp);

if(tmp<=0)
{
break;
}
}

//关闭设备
close(fd);

return0;
}

8. 在开发主机上交叉编译测试应用程序,并到文件系统的/usr/sbin目录下,然后重新编译文件系统下载到开发板上。

#arm-linux-gcc -o pwm_test pwm_test.c

9. 在开发板上运行测试程序。可以看到根据你输入参数的大小,蜂鸣器也会发生不同频率的叫声,输入0蜂鸣器停止鸣叫。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top