首页
IT
登录
6mi
u
盘
搜
搜 索
IT
s3c2451
s3c2451
xiaoxiao
2021-03-25
45
#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;
}
转载请注明原文地址: https://ju.6miu.com/read-36668.html
技术
最新回复
(
0
)