高级会员
- 积分
- 835
- 威望
- 429
- 贡献
- 232
- 兑换币
- 255
- 注册时间
- 2013-9-8
- 在线时间
- 87 小时
- 毕业学校
- 青州实验高级中学
|
1贡献
void gpio_init (PORTx portx, u8 n,GPIO_CFG cfg,u8 data)
{
ASSERT( (n < 32u) && (data < 2u) ); //使用断言检查输入、电平 是否为1bit
//选择功能脚 PORTx_PCRx ,每个端口都有个寄存器 PORTx_PCRx
PORT_PCR_REG(PORTX[portx],n)=(0|PORT_PCR_MUX(1)/*|cfg*/);
//端口方向控制输入还是输出
if( ( (cfg&0x01) == GPI) || (cfg == GPI_UP) || (cfg == GPI_UP_PF) )
// 最低位为0则输入 || 输入上拉模式 || 输入上拉,带无源滤波器
{
GPIO_PDDR_REG(GPIOx[portx]) &= ~(1<<n); //设置端口方向为输入
}
else
{
GPIO_PDDR_REG(GPIOx[portx]) |= (1<<n); (这句话也不知道从哪里来的 ) //设置端口方向为输出
if(data == 1)//outpu
{
GPIO_SET(portx,n,1); (这个函数是哪里来的啊 不懂) //对端口输出控制,输出为1
}
else
{
GPIO_SET(portx,n,0); //对端口输出控制,输出为0
}
}
}
红色部分不懂求指教 我是一个新手
|
最佳答案
查看完整内容
GPIO_PDDR_REG 是 GPIO PDDR 寄存器
GPIO_SET 是 在头文件定义的 宏定义
|