在编译器v6下的串口数据错误;

环境

mdk5 5.38a版本 ;pack包2.17版本;编译器v6.19

产生问题

串口数据错误;

参考文章;

STM32串口发送的数据与串口助手显示的数据不一致(巩固STM32时钟树)_stm32 串口接收的数据跟发送的不一样_火红色祥云的博客-CSDN博客

 实际原因:

就是stm32f4xx.h文件的最新版本有变动;外部时钟已经设定为25M;如下;

#if defined(STM32F40_41xxx) || defined(STM32F427_437xx)  || defined(STM32F429_439xx) || defined(STM32F401xx) || \
    defined(STM32F410xx) || defined(STM32F411xE) || defined(STM32F469_479xx)
 #if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
 #endif /* HSE_VALUE */
#elif

外部时钟被定义为25m;改成8m就可以了

 旧版的

#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
  
#endif /* HSE_VALUE */

解决方法

解决方案1:要么使用老版本1.4(或者其他老版本)的stm32f4xx.h和库文件inc文件夹src文件夹文件;

解决方案2:或者使用新版本的stm32f4xx.h,改外晶振设定数值

你可能感兴趣的:(单片机,stm32,嵌入式硬件)