嵌入式技术william hill官网
直播中

贾埃罗

7年用户 1712经验值
私信 关注
[问答]

STM32F407串口波特率设置1200输出乱码怎么办

mcu:stm32f407zg

调试时,设置波特率为1200,而串口输出为乱码,电脑设置波特率19200来接收mcu的数据,却能接收正确;
(我以前没有用RTT时,用stm32f103rct6,设置波特率为1200是能用的)

下面是我修改配置部分,修改过了,还是不能用,是不是还有那个地方需要设置?

在配置时是有重新配置串口信息

回帖(7)

abdkjshd

2022-7-12 11:43:30
那个表格(_tbl)是 POSIX_TERMIOS 用的,在这里用不到。uart_init.baud 的值是 1200 吗? 如果是的,建议对照 HAL 库文档检查一下驱动代码. 谢谢!
举报

青sky

2022-7-12 11:43:44
估计是底层驱动问题,CPU主频太高,UART太低的波特率需要修改合适的串口时钟分频比:

uart->handle.Init.ClockPrescaler = UART_PRESCALER_DIVxxx
举报

其实znvm

2022-7-12 11:43:55
是主频高了
最近也遇到过这个问题, 根据这个链接, 72m主频算出来最低支持波特率在1098左右, F4的主频还要高, 1200是不行的
解决办法是调低系统主频, 或者调低串口时钟源的时钟频率
举报

而无返还

2022-7-12 11:44:03
还有更低需要300波特率的,想要串口能同时满足高波特率和低波特率,UART最好能选择不同的时钟源,要么分频器能设得非常大。
举报

夏日余晖

2022-7-12 11:44:17
1.jpg
单步进这个函数,看看最终修改波特率的时候,串口外设寄存器修改正确不。
看你的描述,被改成 19200 了。或者就没改成功。
举报

贾埃罗

2022-7-12 11:45:24
你好,我单步调试,知道配置完,看到的配置值是1200的,应该是没有被修改
举报

夏日余晖

2022-7-12 11:45:33
那最后,寄存器配置变了没,走到改串口外设寄存器地方了?改之后的值是多少?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分