stm32串口波特率设置记录

本文介绍了STM32 USART_BRR寄存器的配置方法,通过计算得出USARTDIV的整数部分和小数部分,确保串口通信的波特率设置准确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求得:USARTDIV = 468.75,
因为STM32的波特比率寄存器USART_BRR分为整数部分和小数部分,所以分开计算。
则有,小数部分:DIV_Fraction = 16*0.75 =12
注:这里是将10进制小数转换成16进制的小数所以乘以16

 

### 配置STM32串口波特率 #### USART/UART寄存器配置 对于STM32系列微控制器,USART_BRR寄存器用于设定波特率。此寄存器是一个无符号16位寄存器,在STM32F1系列中,其计算公式为: \[ \text{USART\_BRR} = \left(\frac{\text{USART\_APBCLK}}{16}\right) / \text{baud\_rate}-1 \] 其中`USART_APBCLK`代表外设总线频率而`baud_rate`则是期望的波特率[^4]。 为了简化开发过程并提高代码可移植性和易读性,推荐使用HAL库函数来进行初始化操作而不是直接写入硬件寄存器。下面给出一段基于HAL库的例子来说明如何设置指定的波特率: ```c #include "stm32f1xx_hal.h" // 假定已经完成了必要的系统初始化工作... void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 9600; // 设定目标波特率为9600bps huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } } ``` 这段程序展示了怎样利用HAL库中的结构体成员变量轻松完成对串行接口参数(包括但不限于波特率)的定义,并调用相应的API执行实际初始化动作[^3]。 当涉及到自适应波特率功能时,则需进一步考虑接收端同步机制以及动态调整算法等问题。具体来说就是通过检测起始位边缘触发事件来捕捉传输速率信息从而自动匹配发送方使用的波特率值[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值