如何设置 STM32 的串口的波特率
时间: 2023-09-27 09:06:35 浏览: 228
要设置 STM32 的串口波特率,需要先配置串口的时钟源和时钟分频器,然后计算出波特率对应的波特率发生器的值,并将其写入 USART_BRR 寄存器中。具体步骤如下:
1. 通过 RCC_ClocksTypeDef 结构体获取系统时钟频率和串口时钟频率。
```c
RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);
uint32_t PCLKx = RCC_Clocks.PCLKx_Frequency;
```
2. 配置 USART 的时钟源和时钟分频器,使其与波特率发生器的时钟频率相同。
```c
// 时钟源为 APB1 时钟,分频器为 1,使 USART 时钟频率与 PCLKx 相同
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
USART_ClockInitTypeDef USART_ClockInitStructure;
USART_ClockInitStructure.USART_Clock = USART_Clock_Enable;
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Enable;
USART_ClockInit(USART2, &USART_ClockInitStructure);
```
3. 计算波特率对应的波特率发生器的值。
```c
uint32_t BaudRate = 115200;
uint32_t Mantissa = PCLKx / (16 * BaudRate);
uint32_t Fraction = (PCLKx % (16 * BaudRate)) * 16 / (16 * BaudRate);
uint32_t BRR = (Mantissa << 4) + Fraction;
```
4. 将波特率发生器的值写入 USART_BRR 寄存器中。
```c
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = BaudRate;
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_Rx | USART_Mode_Tx;
USART_Init(USART2, &USART_InitStructure);
USART2->BRR = BRR;
```
这样就完成了 STM32 的串口波特率的设置。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)