【STM32修改串口波特率】

STM32微控制器中的串口波特率调整通常涉及到USART(通用同步接收器/发送器)模块的配置。USART模块提供了多个寄存器来设置波特率,其中关键的寄存器包括BRR(波特率寄存器)和USART_CR1(控制寄存器1)。

以下是基本步骤:

理解公式:

波特率(baud rate)= (SMBA (时钟频率 / 16) + 1) / (USART_BaudRate Prescaler * 16)。其中,SMBA(System Multiplier Baudrate Arrangement)是USART_BaudRate Prescaler的乘法因子,取决于你的系统时钟速率。

选择合适的预分频器:

USART_BaudRate Prescaler可以设置为8, 16, 32, 64, 128或256。预分频器越小,波特率越高。你需要根据实际的系统时钟频率来计算合适的预分频值。

配置BRR寄存器:

对于STM32F1系列,你可以使用USART_BRR寄存器来设置波特率。这个寄存器是一个无符号16位寄存器,计算公式为:USART_BRR = ((USART_APBCLK / 16) - 1) / baud_rate。

启用波特率发生器:

在USART_CR1寄存器中,设置USART_FLAG_TXE(发送数据就绪标志)和USART_CR1_USBS位(波特率发生器使能)。这会启动波特率发生器,开始计算正确的波特率。

设置波特率模式:

根据你的应用需求,可能还需要在USART_CR1寄存器中设置USART_MODE(波特率模式)位。例如,USART_MODE_8BIT是8位UART模式,USART_MODE_9BIT是9位UART模式。

测试:

设置好配置后,你需要使用实际的数据传输来验证波特率是否正确。

示例代码:

相关推荐
Zyed4 小时前
[FreeRTOS]Day8-Part1队列+红外遥控器玩游戏+旋转编码器玩游戏
stm32·单片机·玩游戏
十月的皮皮4 小时前
STM32从零到量产开发:四路继电器工业控制模块开发— Modbus RTU 通讯协议设计
stm32·stm32cubemx·hal库
JSMSEMI115 小时前
JSM4430 30V N 沟道增强型 MOSFET
单片机·嵌入式硬件
XMAIPC_Robot5 小时前
RK3588+FPGA半导体设备量产踩坑大全|发热、时序漂移、推理抖动、成像干扰、EMC干扰方案
人工智能·嵌入式硬件·fpga开发·arm+fpga
朝饮坠露兮16 小时前
#浮动源 vs 共地源:模拟 IC 测试中的 VI 源架构详解
嵌入式硬件
安妮细水长流19 小时前
汽车电子面试问题记录
单片机
碎光拾影19 小时前
i.MX6ULL时钟系统配置指南
c语言·arm开发·嵌入式硬件
GeekArch19 小时前
第28讲:避坑——AI堆栈分配错误、栈溢出BUG
c语言·人工智能·stm32·mcu·学习·bug
wuyk5551 天前
59.嵌入式C语言高级宏定义实战:多行宏、字符串化与符号拼接
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·51单片机
梅名智1 天前
找不到libm.so, libc.so
嵌入式硬件