出stm32波特率计算题
时间: 2023-07-20 20:15:06 浏览: 115
好的,假设我们需要设置串口的波特率为115200,使用的是8位数据位,无奇偶校验位,1位停止位,时钟频率为72MHz。
首先,根据STM32的手册可以得到USARTDIV的计算公式:
USARTDIV = (时钟频率 + 波特率/2) / 波特率
将数值代入公式,得到:
USARTDIV = (72MHz + 115200/2) / 115200
USARTDIV = 625
因为USARTDIV是一个16位寄存器,范围为0~65535,所以需要将计算结果四舍五入。最后,将计算结果分别存入USART_BRR的高8位和低8位即可。
USART_BRR = (0x0000 << 4) | 625
其中,0x0000表示不使用波特率整除器,<< 4表示将USART_BRR的高8位向左移动4位。
因此,设置波特率的代码如下:
```c
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
USART_Init(USART1, &USART_InitStructure);
USART1->BRR = (0x0000 << 4) | 625;
```
阅读全文