- #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</pre><br>
- <br>
- <pre></pre>
- <pre code_snippet_id="2259825" snippet_file_name="blog_20170312_3_6194001" name="code" class="html">#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;
- }
s3c2451_gpio函数
最新推荐文章于 2022-04-21 21:31:02 发布