STM32F407外部晶振改为25M后芯片死机检测不到芯片的解决办法

本文主要是介绍STM32F407外部晶振改为25M后芯片死机检测不到芯片的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 问题
    • 问题分析
    • 解决办法
    • STM32F4主时钟的计算公式
      • 推荐阅读:

问题

使用正点原子的STM32F407代码,下载到外部晶体为25MHz的开发板上,LED不闪烁,串口无输出,单片机直接死机,调试器检测不到芯片。

问题分析

正点原子的STM32F407探索者开发板,焊接的是8M的晶体,而官方固件库里默认为25M的晶体,所以在正点原子的开发教程和示例代码中都把官方库做了一定的修改,即:

官方固件,适用于外部25M晶体:

  • stm32f4xx.h文件122行:
#if !defined  (HSE_VALUE) #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz *
  • system_stm32f4xx.c文件316行:
#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      25

正点原子修改,适用于外部8M晶体:

  • stm32f4xx.h文件
#if !defined  (HSE_VALUE) #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
  • system_stm32f4xx.c文件
#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

按理说,频率错误,应该只是串口乱码和定时器不准确,不知道为什么会导致程序直接没跑起来,死机了,连芯片都检测不到。

解决办法

知道了问题的来源,解决就非常简单了,只需要修改以上两个宏定义的值就可以。

  • 1.使用官方固件库默认文件,即直接把官方固件库的中的stm32f4xx.h文件和system_stm32f4xx.c文件替换工程下的文件。
  • 2.修改正点原子工程里的文件。

以上两种方法都一样,都是修改晶体频率HSE_VALUE和倍频系数PLL_M。

  • stm32f4xx.h文件122行:
#if !defined  (HSE_VALUE) #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz *
  • system_stm32f4xx.c文件316行:
#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      25

修改完成后,重新编译工程,正常的话,应该是调试器检测不到芯片,无法进行程序下载。
为了挽救死机的芯片,我们在下载程序之前,需要先按住复位键不松开,然后点击下载按钮,等1秒钟,再松开复位按键,这样就可以下载进去了,程序正常运行,Perfect!

STM32F4主时钟的计算公式

8M晶体计算:

PLL = HSE_VALUE * N / (M*P) = 8M* 336 /(8*2) = 168MHz

25M晶体计算:

PLL = HSE_VALUE * N / (M*P) = 25M* 336 /(25*2) = 168MHz

推荐阅读:

  • 阿里平头哥首次交货——玄铁910是个啥?是芯片吗?
  • Qt平台下使用QJson解析和构建JSON字符串
  • 国产处理器的逆袭机会——RISC-V
  • 真正的RISC-V开发板——VEGA织女星开发板开箱评测
  • 【2019北京国际消费电子博览会】参观总结
  • Qt实现软件自动更新的一种简单方法

  • 我的博客:www.wangchaochao.top
  • 我的公众号:mcu149

这篇关于STM32F407外部晶振改为25M后芯片死机检测不到芯片的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382484

相关文章

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

vscode不能打开终端问题的解决办法

《vscode不能打开终端问题的解决办法》:本文主要介绍vscode不能打开终端问题的解决办法,问题的根源是Windows的安全软件限制了PowerShell的运行,而VSCode默认使用Powe... 遇到vscode不能打开终端问题,一直以为是安全软件限制问题,也没搜到解决方案,因为影响也不大,就没有管

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展