按键驱动测试程序
来源:互联网 发布:图像算法工程师待遇 编辑:程序博客网 时间:2024/05/16 11:42
宝剑锋从磨砺出,梅花香自苦寒来。——《警世贤文》
上一篇分析了一波驱动程序的代码,虽然有一些部分还是不懂,但还是挤出来一个测试程序,不足之处,请各位告知:
#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驱动和按键驱动。
执行后按奇数下亮,偶数下灭。
对于定时器还不是太理解,以后将进一步理解定时器。
1 0
- 按键驱动测试程序
- 2440 Linux按键驱动及测试程序
- linux按键驱动编写及测试程序
- platform_button 按键驱动的测试程序
- linxu下244X的按键驱动,测试程序
- 基于中断的按键驱动以及其测试程序
- ok6410按键驱动与测试
- platform按键驱动学习之测试实例
- ds18b20 驱动测试程序
- UVC驱动测试程序
- Watchdog驱动测试程序
- led驱动测试程序
- ok6410 按键测试c语言版程序
- 按键驱动
- 按键驱动
- 按键驱动
- 按键驱动
- 按键驱动
- hadoop常见异常
- 《web安全深度剖析》笔记三
- JMS&MQ,从入门到精通(八)
- 用Hive分析nginx日志——1
- linux上安装使用maven
- 按键驱动测试程序
- android框架搭建(一)-基本工具[log]的建立
- 《web安全深度剖析》笔记四
- 小心!Ubuntu14.04 升级到16.04 的几个坑
- BUG总结之Maven(2017.3~.4月)
- 安卓之推送消息---- 极光推送篇
- Android Studio系列(二)使用AS开发/调试整个android系统源代码(不定时更新)
- 数据库分库
- js和jq的insert/append/after/before添加节点和文本