这个驱动本来是非常简单的,但是我就是想做个杂项驱动。
Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。
蜂鸣器控制原理
先来看下蜂鸣器的电路图:
其实做了前面的LED点灯驱动,那做这个驱动就是分分钟钟的事。从上面的电路图可以知道控制蜂鸣器的引脚就是GPB0;这样就非常简单了,需要操作的就是。
1、初始化
s3c2410_gpio_cfgpin(S3C2410_GPB(0), S3C2410_GPIO_OUTPUT);// 设置GPBCON
s3c2410_gpio_setpiin(S3C2410_GPB(0), 1); // 设置GPBDAT
2、根据参数开关蜂鸣器
s3c2410_gpio_setpin(S3C2410_GPB(0), flag); // 根据flag来开关蜂鸣器;
杂项设备知识
杂项设备结构体(杂项设备的主设备号固定为10,不同的杂项设备是通过次设备号来区分的)