s3c2451gpio函数

    xiaoxiao2021-03-25  46

    #ifndef _S3C2451_GPIO_ #define _S3C2451_GPIO_ #define GPACON *((volatile int *)0x56000000) #define GPADATA *((volatile int *)0x56000004) #define GPBCON *((volatile int *)0x56000010) #define GPBDATA *((volatile int *)0x56000014) #define GPFCON *((volatile int *)0x56000050) #define GPFDATA *((volatile int *)0x56000054) #define BIT(n) (1 << (n)) enum{ GPAIO = 0, GPBIO, GPFIO }; enum{ INPUT = 0, OUTPUT }; int GPIO_key(); int GPIO_init(int gpiox,int pin,int dir); int GPIO_writedata(int gpiox,int pin,int data); #endif #include"s3c2451_gpio.h" char temp = 0; char i = 0; int GPIO_init(int gpiox,int pin,int dir) { if(gpiox == GPBIO) { if(dir == INPUT) { GPBCON &= ~BIT(pin*2); GPBCON &= ~BIT(pin*2 + 1); } else if(dir == OUTPUT) { GPBCON |= BIT(pin*2); GPBCON &= ~BIT(pin*2 + 1); } } else if(gpiox == GPAIO) { if(dir == OUTPUT) { GPACON &= ~BIT(pin); } } else if(gpiox == GPFIO) { if(dir == INPUT) { GPFCON &= ~BIT(pin*2); GPFCON &= ~BIT(pin*2 + 1); } else if(dir == OUTPUT) { GPFCON |= BIT(pin*2); GPFCON &= ~BIT(pin*2 + 1); } } return 0; } int GPIO_writedata(int gpiox,int pin,int data) { if(gpiox == GPBIO) { if(data == 0) GPBDATA &= ~BIT(pin); else GPBDATA |= BIT(pin); } else if(gpiox == GPAIO) { if(data == 0) GPADATA &= ~BIT(pin); else GPADATA |= BIT(pin); } return 0; } int GPIO_key() { if((GPFDATA & 0x01)== 0) { i++; if(i%2) GPIO_writedata(GPBIO,5,0); else GPIO_writedata(GPBIO,5,1); } else if((GPFDATA & 0x02)== 0) { GPIO_writedata(GPBIO,6,temp); temp = ~temp; temp &= 0x01; } else if((GPFDATA & 0x04)== 0) { GPIO_writedata(GPAIO,25,0); } else if((GPFDATA & 0x08)== 0) { GPIO_writedata(GPAIO,26,0); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-36210.html

    最新回复(0)