原贴链接:http://www.openedv.com/forum.php?mod=viewthread&tid=306
在Alientek的源码中的按键输入实验中有如下一段初始化代码:
void KEY_Init(void){
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
GPIOA->CRL|=0X00000008;
GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入
GPIOA->CRH|=0X80800000;
GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉
GPIOA->ODR|=1<<15; //PA15上拉
}
经常有用户问道,为什么端口设置为输入,然后还要对输出寄存器进行写操作, GPIOA->ODR|=1<<15; //PA15上拉
在中文数据手册里面的确没有看到说明,下面是英文手册里面的(从网上找的):
即在将端口设置为上拉/下拉输入的状况下,是由将GPIOx->ODR相应位设置为0或1来设置为下拉输入还是上拉输入的。
|