完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
串口波特率怎么配置,CLK_CKDIVR = 0x18;
8000000/115200 = 69 UART2_BRR2 = 0x05; UART2_BRR1 = 0x04; 这样配置以后,串口接收是乱码,波特率错了,我计算哪里出错了?求教 |
|
相关推荐
2个回答
|
|
为何不直接调用库函数配置波特率
|
|
|
|
串口波特率配置不正确导致接收乱码的原因可能是发送端和接收端的波特率不匹配。在这种情况下,数据传输会出现错误,导致接收到的数据无法正确解析。为了解决这个问题,我们需要确保发送端和接收端的波特率设置相同。
关于您提供的代码,我将逐步分析并找出可能的错误: 1. CLK_CKDIVR = 0x18; 这行代码设置了时钟分频器的值。我们需要知道原始时钟频率以及分频后的时钟频率,以便计算波特率。 2. 8000000/115200 = 69 这个计算看起来是正确的,但是我们需要确认这个值是否与您的硬件配置相匹配。 3. UART2_BRR2 = 0x05; UART2_BRR1 = 0x04; 这两行代码设置了UART的波特率寄存器。波特率寄存器的值取决于时钟频率和所需的波特率。在STM32微控制器中,波特率寄存器的计算公式为: UART_BRR = ((时钟频率) / ((波特率) * 16)) - 1 根据您提供的代码,我们可以计算出波特率寄存器的值: ((8000000) / ((115200) * 16)) - 1 = 69 - 1 = 68 但是您的代码中UART2_BRR2 = 0x05; UART2_BRR1 = 0x04; 这两个值加起来是69,这与我们计算出的值68不符。 为了解决这个问题,请按照以下步骤操作: 1. 确认您的硬件配置,包括原始时钟频率和分频后的时钟频率。 2. 使用正确的时钟频率和所需的波特率重新计算波特率寄存器的值。 3. 更新您的代码,确保UART2_BRR2和UART2_BRR1的值相加等于计算出的波特率寄存器值。 4. 重新编译并上传您的代码,然后测试串口通信是否正常。 5. 如果问题仍然存在,请检查其他可能影响串口通信的因素,如数据位、停止位和奇偶校验位等。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:49 , Processed in 0.948758 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号