嵌入式Linux之我行——PWM在ARM Linux中的原理和蜂鸣器驱动实例开发(3)(转)
 
- UID
- 1029342
- 性别
- 男
|

嵌入式Linux之我行——PWM在ARM Linux中的原理和蜂鸣器驱动实例开发(3)(转)
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 <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
int main(int argc, char **argv)
{
int tmp;
int fd;
int i;
//打开蜂鸣器设备
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);
return 0;
}
|
8. 在开发主机上交叉编译测试应用程序,并复制到文件系统的/usr/sbin目录下,然后重新编译文件系统下载到开发板上。
#arm-linux-gcc -o pwm_test pwm_test.c
|
9. 在开发板上运行测试程序。可以看到根据你输入参数的大小,蜂鸣器也会发生不同频率的叫声,输入0蜂鸣器停止鸣叫。 |
|
|
|
|
|