新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式Linux設備驅動開發之:按鍵驅動程序實例

        嵌入式Linux設備驅動開發之:按鍵驅動程序實例

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 澜沧| 衡山县| 阳原县| 凤山市| 扶余县| 保康县| 黄平县| 天祝| 山丹县| 嘉峪关市| 阜新| 涪陵区| 嘉义县| 临澧县| 巴彦淖尔市| 武宁县| 吕梁市| 蕉岭县| 沁源县| 库尔勒市| 新邵县| 汾阳市| 桂林市| 禄劝| 濮阳县| 麻江县| 大同县| 政和县| 邵阳市| 蒲江县| 左贡县| 玉龙| 屏东县| 曲麻莱县| 阳曲县| 克拉玛依市| 玉田县| 那曲县| 耒阳市| 潞城市| 屏山县|