硬件
现有的硬件为正点原子STM32F407ZGT6最小系统板,前期也是一直跟着正点原子资料学习,后来巧合遇到了野火的视频,觉得野火基于CubeMX+HAL的编程能够更快地实现功能,同时个人觉得野火的编程思路更适合我,但手头没有野火硬件,因此考虑到程序移植的办法。

出师不利:
刚上手移植第一个串口程序就出现乱码问题
在这里插入图片描述


原因分析
板载晶振区别+时钟配置问题

野火使用的是25M的晶振,而正点原子使用的是8M的晶振,,时钟源频率不同,导致程序节拍就有差异,频率不匹配,信号不能正确传输和解析,因此会出现乱码问题。
解决办法
寻找程序中配置时钟的文件
网上查了一些,在我这里不太适应,我尝试直接全局搜索(Ctrl+F)
25000000
25M
HSE_VALUE
找到了下面的信息:

HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value25 MHz), user has to ensure that HSE_VALUE is same as the real frequency of the crystal used. Otherwise, this function may have wrong result.
文件里说的很清楚,默认25MHz,根据需要自行去对应文件里改。

25000000对应改为8000000
寻找时钟配置和初始化,核对配置情况

这里重要修改一下PLLM的值
25改为8
核对串口信息
初始化USART 配置模式为 115200 8-N-1
结果
重新编译,查看结果

修改了一下打印信息,更整齐一些

本文讲述了作者在将程序从正点原子STM32F407ZGT6板移植到使用25M晶振的野火硬件时遇到的串口乱码问题,通过对比硬件、搜索时钟配置文件并调整PLLM值和USART设置,最终成功解决了问题并给出移植注意事项。
STM32F407串口信息乱码(正点原子硬件移植野火程序)&spm=1001.2101.3001.5002&articleId=132333177&d=1&t=3&u=2fa0453804c447e5b7f77cc4843bf859)
4249

被折叠的 条评论
为什么被折叠?



