目标:在STM32F401RE上用配置寄存器方法实现USART通信协议
思路:全双工异步通信,由TX引脚与RX引脚组成
配置时钟—配置GPIO口—配置USART相关寄存器
实现过程
1.配置时钟
查阅寄存器手册可知,需要配置时钟的模块有:USART1,IO port A。
// USARTI_TX对应PA9引脚;USART1_RX对应PA10引脚(查阅产品手册42页可知)
其中,USDART1在APB2总线上;IO port A在AHB总线上。
//RCC_AHB1ENR与RCC_APB2ENR寄存器
时钟树如下:
此处演示HSI振荡器配置代码(如有错误欢迎指正):
//读取HSIRDY位的值
uint8_t is_hsi_ready(void)
{
uint32_t hsirdy_mask = (uint32_t)0x00000002;
uint32_t cr_register = RCC->CR;
uint32_t hsirdy_bit = (cr_register & hsirdy_mask) != 0;
return hsirdy_bit;
}
void HSI_Init ()
{
uint8_t HSIRDY = is_hsi_ready();
while(HSIRDY == 1);
RCC->CR |= (uint32_t)0x00000001;
}
//问题标记:依据什么确定分频系数
2.配置GPIO口
对于USART1_TX口,初始化为“复用推挽输出模式”;USART1_RX口,初始化为“上拉输入模式”。
3.配置USART相关寄存器
(1)时序图(寄存器手册510页)
对于数据传输,有8位字长和9位字长两种模式,其中,9位字长添加了奇偶校验位,在USART_CR1寄存器的M位设置使用哪种字长模式,关于空闲字符(Idle character)和分隔符(break character),介绍如下:
(2)TX配置方法(寄存器手册512页)
(3)RX配置方法(寄存器手册515页)
其它配置略。
(4)配置寄存器(寄存器手册548页)
此处演示USART_CR1寄存器配置代码:
//配置TX模式
USART->CR1 |= (uint32_t)0X00002008;
USART_BRR寄存器:
其余寄存器略。
//问题标记:USART配置寄存器信息是如何与USART1/2/3建立联系的(为什么不是三个分别配置)
4,寄存器手册和产品手册下载:
链接:https://pan.baidu.com/s/1pRsMbcSpS8mCGbcNY1y4mA
提取码:1111
如有错误,欢迎指正