STM32F407串口乱码(正点原子与野火开发版兼容性问题)

编程入门 行业动态 更新时间:2024-10-18 03:36:47

STM32F407串口乱码(正点原子与<a href=https://www.elefans.com/category/jswz/34/1762823.html style=野火开发版兼容性问题)"/>

STM32F407串口乱码(正点原子与野火开发版兼容性问题)

设备信息

我使用的开发板是正点原子的stm32f407探索者开发板 ,使用的固件库以及程序是从野火资料下载中心下载的,使用串口查看数据的时候,上位机接收到的数据显示总是乱码,具体如下图所示。

解决方案
每一款单片机都有自己的时钟源,存在外部高速时钟(HSE)和外部低速时钟(LSE),而单片机中的系统时钟最大值为168Mhz,一般都是由外部高速时钟提供,然后经过内部锁相环吧频率升上去。
外部高速晶振如图,正点原子探索者为8M,而野火的霸天虎为25Mhz,两款时钟源不同,因此直接复制的话,会使得,内部时钟混乱。因此出现串口乱码的情况,因此改串口或者该系统时钟源都可以。
在这里我用的是配置系统时钟源,是其最后都达到168Mhz

正点原子及8M HSE开发版时钟配置

野火霸天虎25MHZ开发版时钟配置

可以看出二者在一些系统寄存器的配置上不都一样

解决办法
1、 PLL_M
全局搜索“#define PLL_M ”——在system_stm32f4xx.c文件中

/************************* PLL Parameters *************************************/
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      8
#else /* STM32F411xE */
#if defined (USE_HSE_BYPASS)
#define PLL_M      8    
#else /* STM32F411xE */   
#define PLL_M      16
#endif /* USE_HSE_BYPASS */
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */  

2 、HSE_VALUE
当前项目搜索“#define HSE_VALUE”——在stm32f4xx.h文件中,确保HSE_VALUE的值与板子上的晶振保持一致。如晶振是25MHz,HSE_VALUE=25000000;晶振是8MHz,HSE_VALUE=8000000。

#if defined (USE_HSE_BYPASS)     
#define HSE_BYPASS_INPUT_FREQUENCY   8000000
#endif /* USE_HSE_BYPASS */    

如果不一样的话,就不能用了
将正点原子或是野火写的system.stm32f4xx.c整个相应的替换
将正点原子或是野火写的system.stm32f4xx.c整个相应的替换
将正点原子或是野火写的system.stm32f4xx.c整个相应的替换
不要自己改,因为时钟配置很复杂,新手不要尝试自己改。

3.如果替换的话还是不行,需要改stm32f4xx.h
这是因为系统时钟配置的问题,搜索HSE_VALUE,将HSE_VALUE的值改为板子对应的值。

/*** @brief In the following line adjust the value of External High Speed oscillator (HSE)used in your application Tip: To avoid modifying this file each time you need to use different HSE, youcan define the HSE value in your toolchain compiler preprocessor.*/           #if !defined  (HSE_VALUE) #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */#endif /* HSE_VALUE *//*** @brief In the following line adjust the External High Speed oscillator (HSE) Startup Timeout value */

将25000000改为8000000即可,这次就可以用了
亲测有效,谢谢支持

更多推荐

STM32F407串口乱码(正点原子与野火开发版兼容性问题)

本文发布于:2024-03-08 16:00:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721367.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:野火   乱码   串口   原子   兼容性问题

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!