博客

来源:互联网 发布:淘宝销量信誉互刷平台 编辑:程序博客网 时间:2024/05/16 13:38

#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