首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

嵌入式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蜂鸣器停止鸣叫。
继承事业,薪火相传
返回列表