IO口

STM32的每个IO端口都有7个寄存器来控制。他们是:CRH CRL IDR ODR BSRR BRR LCKR。我们常用的IO端口寄存器位CRL CRH IDR ODR。
CRL CRH控制着每个IO口的模式及输出速率。CRL控制着每组IO端口(A-G)的低8位的模式。CRH控制着每组IO端口(A-G)的高8位的模式。几个常用的配置,0x0表示模拟输入模式,0x3表示推挽输出模式(做输出口用,50M速率)、0x8表示上/下拉输入模式(做输入口用)、0xB表示复用输出(使用IO口的第二功能、50M速率)。

IDR是一个端口输入数据寄存器。该寄存器为只读寄存器,并且只能以16位的形式读出。如果想知道某个IO口的状态,只需要读出这个寄存器,再看某个位的状态就可以了。

ODR是一个端口输出数据寄存器。该寄存器为可读写寄存器。从该寄存器读出的数据可以用于判断当前IO口的输出状态。而向该寄存器写数据,则可以控制某个IO口的输出电平。

我们使用IO口的通常步骤是:
1、使能IO端口时钟
2、设置IO端口模式
3、操作IO端口

例如:

RCC->APB2ENR |= 1<<2; 
RCC->APB2ENR |= 1<<5; 
GPIOA->CRH &= 0xFFFFFFF0; 
GPIOA->CRH |= 0x00000003; 
GPIOA->ODR |= 1<<8;

 

posted on 2017-01-04 16:20  猫咪大王  阅读(623)  评论(0编辑  收藏  举报