key.c

来自「周立功magic2200实验箱linux增补例子。包括(GPIO zlg7290」· C语言 代码 · 共 71 行

C
71
字号
/****************************************************************************************************** GPIO input testing program.** Press KEY1, BEEP beeping and stop if released.****************************************************************************************************/#define IN_TGPIO#include "config.h"#define KEY1    20    //P0.20 connected to KEY1#define BEEP     7     //P0.7  controles BEEPvoid delayms(uint32 delay){    uint32 i;    for( ; delay>0; delay--)        for(i=0; i<5000; i++);}    int main(){    int fd;    uint32 pin = KEY1;       fd = open("/dev/P0", O_RDONLY);    if(fd == -1)    {        printf("\nCan't open P0!\n");        return -1;    }    printf("\nTest GPIO input(KEY), P0.20--KEY1\nPress KEY1, BEEP beeping and stop if released.\n");    // set IO Direction     ioctl(fd, GPIO_SET_PIN_IN, KEY1);    ioctl(fd, GPIO_SET_PIN_OUT, BEEP);         while(1)    {        pin = KEY1;        ioctl(fd, GPIO_READ_PIN, &pin);        while(pin != 0)         {// have no key ,continue read pin            ioctl(fd, GPIO_SET_PIN, BEEP);            pin = KEY1;            ioctl(fd, GPIO_READ_PIN, &pin);        }        // have key, delay        delayms(10);    // delay        // after delay, read pin again         pin = KEY1;        ioctl(fd, GPIO_READ_PIN, &pin);        while(pin == 0) // if key released,go on read pin        {// remain 0, key pressed,             ioctl(fd, GPIO_CLR_PIN, BEEP);            pin = KEY1;            ioctl(fd, GPIO_READ_PIN, &pin);        }    }//    close(fd);    return 0;}/********************************************************************************************************* **                            End Of File********************************************************************************************************/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?