按键驱动测试程序
2017-04-28 18:27
686 查看
宝剑锋从磨砺出,梅花香自苦寒来。——《警世贤文》
上一篇分析了一波驱动程序的代码,虽然有一些部分还是不懂,但还是挤出来一个测试程序,不足之处,请各位告知:
编译以后和前面LED操作一样,在开发板上安装led驱动和按键驱动。
执行后按奇数下亮,偶数下灭。
对于定时器还不是太理解,以后将进一步理解定时器。
上一篇分析了一波驱动程序的代码,虽然有一些部分还是不懂,但还是挤出来一个测试程序,不足之处,请各位告知:
#include <stdio.h> #include <stdlib.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #define KEY1 0x01 #define KEY2 0x02 #define KEY3 0x04 #define KEY4 0x08 #define PLATDRV_MAGIC 0x60 #define OFF _IO (PLATDRV_MAGIC,0x18) #define ON _IO (PLATDRV_MAGIC,0X19) int main (int argc, char **argv) { int button_fd; int led_fd; int ret_button; int current_button; int i; int j; int x; int y; button_fd = open("/dev/button",0); if(button_fd<0) { printf("open button failed.\n"); exit(1); } while(1) { ret_button = read(button_fd,¤t_button,sizeof(4)); if(ret_button != sizeof(current_button)) { printf("Read() button failed.\n"); } else { if (current_button == KEY1) { led_fd = open("/dev/led0",O_RDWR,755); switch(i%2) { case 0: ioctl(led_fd,OFF,0); i++; printf("Turn led0 OFF.\n"); break; case 1: ioctl(led_fd,ON,0); i++; printf("Turn led0 ON.\n"); break; } } else if (current_button == KEY2) { led_fd = open("/dev/led1",O_RDWR,755); switch(j%2) { case 0: ioctl(led_fd,OFF,1); j++; printf("Turn led1 OFF.\n"); break; case 1: ioctl(led_fd,ON,1); j++; printf("Turn led1 ON.\n"); break; } } else if (current_button == KEY3) { led_fd = open("/dev/led2",O_RDWR,755); switch(x%2) { case 0: ioctl(led_fd,OFF,2); x++; printf("Turn led2 OFF.\n"); break; case 1: ioctl(led_fd,ON,2); x++; printf("Turn led2 ON.\n"); break; } } else if (current_button == KEY4) { led_fd = open("/dev/led3",O_RDWR,755); switch(y%2) { case 0: ioctl(led_fd,OFF,3); y++; printf("Turn led3 OFF.\n"); break; case 1: ioctl(led_fd,ON,3); y++; printf("Turn led3 ON.\n"); break; } } } } ioctl(led_fd,OFF); close(led_fd); close(button_fd); return 0; }
编译以后和前面LED操作一样,在开发板上安装led驱动和按键驱动。
执行后按奇数下亮,偶数下灭。
对于定时器还不是太理解,以后将进一步理解定时器。
相关文章推荐
- linux按键驱动编写及测试程序
- linxu下244X的按键驱动,测试程序
- 2440 Linux按键驱动及测试程序
- TQ2440按键驱动及测试程序
- 基于中断的按键驱动以及其测试程序
- platform_button 按键驱动的测试程序
- 【Tiny6410 And Linux】—(6.2)—LCD 驱动测试程序(BMP 显示位图)——原理
- 一个基于mini2440的测试按键与led灯的测试程序
- V4L2 camera 驱动 capture测试程序
- s3c2410多通道adc驱动及测试程序
- 【Tiny6410 And Linux】—(6.1)—LCD 驱动测试程序——原理
- Mini 2440 LED、按键和蜂鸣器裸机测试程序(C语言)
- linux下的spi驱动及测试程序移植开发
- mini2440的ds18b20驱动和测试程序
- 6410led驱动模块及测试程序(独立控制四个led)
- S3c2440 I2C驱动与测试程序追踪交叉分析
- 从驱动测试程序到apk整个过程的编写
- Linux嵌入式驱动初体验(六)--- LED驱动测试程序
- mini2440的ds18b20驱动和测试程序
- s3c6410字符设备(一)led字符驱动与测试程序