常驻嘉宾
- 积分
- 4149
- 威望
- 1496
- 贡献
- 2087
- 兑换币
- 316
- 注册时间
- 2012-2-13
- 在线时间
- 283 小时
|
void GpioInit(GPIO_Type *port,int index,int mode,int data)
{
PORT_Type *gpio;
switch((uint32)port)
{
case PTA_BASE:
gpio=PORTA;
break;
case PTB_BASE:
gpio=PORTB;
break;
case PTC_BASE:
gpio=PORTC;
break;
case PTD_BASE:
gpio=PORTD;
break;
case PTE_BASE:
gpio=PORTE;
break;
default : break;
}
gpio->PCR[index]&=~(PORT_PCR_MUX_MASK);
//配置PORT口的MUX位为GPIO模式
gpio->PCR[index]|=PORT_PCR_MUX(1);
//设置端口为输出
if(mode==1)
{
//配置PORTn口的第index引脚为输出
port->PDDR|=(1<<index);
//作为输出口时关闭该引脚的上下拉电阻功能
gpio->PCR[index]&=~(PORT_PCR_PS_MASK|PORT_PCR_PE_MASK);
if(data==1)
port->PDOR|=(1<<index);
else
port->PDOR&=~(1<<index);
}
//设置端口为输入
else
{
//配置PORTn口的第index引脚为输入
port->PDDR&=~(1<<index);
//上拉电阻
if(data==1)
gpio->PCR[index]|=PORT_PCR_PS_MASK;
//下拉电阻
else
gpio->PCR[index]&=~(PORT_PCR_PS_MASK);
gpio->PCR[index]|=PORT_PCR_PE_MASK;
}
}
我用的GPIO初始化。。交流交流 |
|