新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式Linux设备驱动开发之:按键驱动程序实例

嵌入式Linux设备驱动开发之:按键驱动程序实例

作者:时间:2013-09-13来源:网络收藏

本文引用地址:http://www.amcfsurvey.com/article/257107.htm

11.6.3按键驱动的测试程序

的测试程序所下所示。在测试程序中,首先打开按键设备文件和gpio设备(包括4个LED和蜂鸣器)文件,接下来,根据按键的输入值(按键ID)的二进制形式,LEDD9~D12发亮(例如,按下11号按键,则D9、D10和D12会发亮),而蜂鸣器当每次按键时发出声响。

/*butt_test.c*/

#includesys/stat.h>

#includefcntl.h>

#includestdio.h>

#includesys/time.h>

#includesys/types.h>

#includeunistd.h>

#includeasm/delay.h>

#includebutt_drv.h

#includegpio_drv.h

main()

{

intbutt_fd,gpios_fd,i;

unsignedcharkey=0x0;

butt_fd=open(BUTTONS_DEVICE_FILENAME,O_RDWR);/*打开按钮设备*/

if(butt_fd==-1)

{

printf(Openbuttondevicebuttonerrr!n);

return0;

}

gpios_fd=open(GPIO_DEVICE_FILENAME,O_RDWR);/*打开GPIO设备*/

if(gpios_fd==-1)

{

printf(Openbuttondevicebuttonerrr!n);

return0;

}

ioctl(butt_fd,0);/*清空键盘缓冲区,后面参数没有意义*/

printf(PressNo.16keytoexitn);

do

{

if(read(butt_fd,key,1)=0)/*读键盘设备,得到相应的键值*/

{

continue;

}

printf(KeyValue=%dn,key);

for(i=0;iLED_NUM;i++)

{

if((key(1i))!=0)

{

ioctl(gpios_fd,LED_D09_SWT+i,LED_SWT_ON);/*LED发亮*/

}

}

ioctl(gpios_fd,BEEP_SWT,BEEP_SWT_ON);/*发声*/

sleep(1);

for(i=0;iLED_NUM;i++)

{

ioctl(gpios_fd,LED_D09_SWT+i,LED_SWT_OFF);/*LED熄灭*/

}

ioctl(gpios_fd,BEEP_SWT,BEEP_SWT_OFF);

}while(key!=16);/*按16号键则退出*/

close(gpios_fd);

close(butt_fd);

return0;

}

首先编译和加载,而且要创建设备文件节点。

$makeclean;make/*驱动程序的编译*/

$insmodbutt_dev.ko/*加载buttons*/

$cat/proc/devices/*通过这个命令可以查到buttons设备的主设备号*/

$mknod/dev/buttonsc2520/*假设主设备号为252,创建设备文件节点*/

接下来,编译和加载GPIO驱动程序,而且要创建设备文件节点。

$makeclean;make/*驱动程序的编译*/

$insmodgpio_drv.ko/*加载GPIO驱动*/

$cat/proc/devices/*通过这个命令可以查到GPIO设备的主设备号*/

$mknod/dev/gpioc2510/*假设主设备号为251,创建设备文件节点*/

然后编译并运行驱动测试程序。

$arm-linux-gcc–obutt_testbutt_test.c

$./butt_test

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程


蜂鸣器相关文章:蜂鸣器原理

上一页 1 2 3 4 5 下一页

评论


相关推荐

技术专区

关闭