在前面一章的测试程序的基础上,修改了另外一个pwm蜂鸣器驱动测试程序,这个相对更简单。不多说,直接上程序。
1.编写PWM蜂鸣器驱动的测试程序。文件名:pwm_test.c.
#include //必要的头文件--输入输出函数定义
#include //标准函数库定义
#include //Unix 标准函数定义
#include
#include
#include //定义了很多宏和open,fcntl函数原型
int main(int argc, char **argv)
{
int fd;
unsigned long temp =0;
int i;
fd = open("/dev/pwm", O_RDWR); //打开蜂鸣器的设备文件
if (fd < 0) //打开失败
{
perror("open device pwm");
exit(1); //打开错误,则终止进程。退出参数为1
}
printf("open device sucess\n");
for(i=0;i<2000;i++) //响应输入的蜂鸣器频率
{
scanf("%d",&temp);
printf("temp= %d \n",temp);
ioctl(fd, 1,temp);
if(temp == 0) //当输入为0是时退出
break;
}
ioctl(fd, 0); //停止蜂鸣器
close(fd); //关闭设备驱动程序文件
return 0;
}
2.在linux上交叉编译测试应用程序。
# arm-linux-gcc -o pwm_test pwm_test.c -static
3.将生成的pwm_test复制到EM4412开发板的system目录下,然后进入开发板的system目录,给pwm_test权限。
#chmod 777 pwm_test
4.运行pwm_test。
# ./pwm_test
这时候你可以输入从1到2000的任意值,蜂鸣器就响了,输入0就关闭。