3.14

#include "s3c2451_gpio.h"


GPIO_MemMapPtr const PORT_BASE_PTR[7] = {GPIOA_BASE_PTR,GPIOB_BASE_PTR,GPIOC_BASE_PTR,GPIOD_BASE_PTR,GPIOE_BASE_PTR,GPIOF_BASE_PTR,GPIOG_BASE_PTR};


void GPIO_Init(GPIO_Typedef portx,GPIO_Init_Typedef gpio_init_struct)
{
U8 i=0;
for(i=0;i<32;i++)
{
if((gpio_init_struct.pinx&(1<<i)) == (1<<i))
{
//select mode
if(GPIOA ==portx)
{
if(gpio_init_struct.mode == GPIO_MODE_OUT)
{
PORT_BASE_PTR[portx]->GPCON &= ~(1<<i);
}
else if(gpio_init_struct.mode == GPIO_MODE_ALT)
{
PORT_BASE_PTR[portx]->GPCON |= (1<<i);
}
}else{
PORT_BASE_PTR[portx]->GPCON &= ~(3<<(2*i));
PORT_BASE_PTR[portx]->GPCON |= (gpio_init_struct.mode<<(2*i));
//pull - up
PORT_BASE_PTR[portx]->GPUDP &= ~(3<<(2*i));
PORT_BASE_PTR[portx]->GPUDP |= (gpio_init_struct.udp<<(2*i));
}
}
}
}




void GPIO_WriteBit(GPIO_Typedef portx,U32 pinx,BIT_Typedef bit)
{
if( BIT_SET == bit)
{
PORT_BASE_PTR[portx]->GPDAT |= pinx;
}else
{
PORT_BASE_PTR[portx]->GPDAT &= ~pinx;
}
}




BIT_Typedef GPIO_ReadBit(GPIO_Typedef portx,U32 pinx)
{


if((PORT_BASE_PTR[portx]->GPDAT &  pinx) == pinx)
{
return BIT_SET;
}else
{
return BIT_RESET;
}






}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值