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

问题描述

分享一个之前遇到的STM32F4晶体频率问题,导致单片机死机的解决办法。使用一款新的F4开发板,直接使用的正点原子STM32F407工程模板代码,管脚配置正确,下载到外部晶体为25MHz的开发板之后,LED不闪烁,串口无输出,单片机直接死机,调试器检测不到芯片。

问题分析

之前写过一篇文章:STM32串口打印输出乱码的解决办法,那个F103乱码是因为外部晶体频率12M,而程序中8M对应不上,导致的串口乱码和定时器定时不准确,但是单片机并没有死机,程序还可以正常下载,解决办法也很简单,只需要修改程序中的外部高速时钟频率(HSE_VALUE)和倍频系数(RCC_CFGR_PLLMULL6)即可,而现在F407的这个情况貌似和之前F103的那个问题一样,也是晶体频率配置的问题,但是这个是直接死机了,单片机并没有工作。现在的开发板晶体频率是25M,而正点原子开发板的晶体频率是8M,应该就是这个问题导致的。在《正点原子F407开发指南》中新建工程模板章节,官方固件库中默认的晶体频率是25MHz,为了适配板子的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

所以解决办法很简单,只需要修改程序中的晶体频率倍频系数即可。

解决办法

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

这里涉及到STM32F4主时钟的计算,主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后的时候还需要经过一个分频系数为 P(第一个输出 PLLP)或者 Q(第二个输出 PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。计算公式:

PLL = HSE_VALUE * N / (M*P)

8M晶体计算:

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

25M晶体计算:

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

所以25M晶体对应的HSE_VALUE=25000000,PLL_M=25,修改程序中的

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秒钟,再松开复位按键,这样就可以下载进去了,程序正常运行,Amazing!

推荐阅读:



我的博客:www.wangchaochao.top

或微信扫码关注我的公众号

原文地址:https://www.cnblogs.com/whik/p/11407678.html

时间: 2024-08-29 18:53:43

STM32F407外部晶体改为25M后检测不到芯片的解决办法的相关文章

MAC OS X 10.10 应用程序下载失败后lunchpad产生灰色图标的解决办法

方法如下:打开应用程序- 实用工具 - 终端. 以此出入如下字符 defaults write com.apple.dock ResetLaunchPad -bool true killall Dock 再次打开 LaunchPad 的时候, 所有图标会被重建, 并且之前的所有设置都会丢失. 没有特殊情况不要使用哦. 以免丢失之前的排列方式与文件夹. MAC OS X 10.10 应用程序下载失败后lunchpad产生灰色图标的解决办法,布布扣,bubuko.com

安装genymotion后出现无法创建虚拟设备的解决办法

安装genymotion后出现无法创建虚拟设备的解决办法 如果你安装系统的用户名中含有中文,而且使用到上篇文章所说的方法安装VirtualBox后,当你正确安装genymotion后创建虚拟机时如果出现Unable to create virtual device.Failed to attach disk.这种提示信息,原因是因为你部署虚拟设备的路径中还有中文,解决办法如下: 1.打开genymotion,找到Settings选项,然后点击进入如下界面: 2.点击VirtualBox选项,会发

XenServer 以模板方式安装新的虚拟机后虚拟机网卡无法启动的解决办法

在XenServer上根据模板新建一个虚拟机后无法识别网卡,重新启动网卡后显示 Bringing up interface eth0:  Device eth0 has different MAC address than expected, ignoring. 最终解决办法是将/etc/sysconfig/network-scripts/ifcfg-eth0 中的HDADDR给注释掉,因为这里配置文件的MAC地址还是原来模板机的MAC地址,新配置的虚拟机的MAC地址和这个不一样,所以无法启动.

Stuts2的&quot;struts.devMode&quot;设置成true后,不起作用的解决办法

不用 <constant name="struts.devMode" value="true" /> 改成 <constant name="struts.configuration.xml.reload" value="true"/> 有人说是因为tomcat加了空格的问题,具体不清楚. 下面是4个开发模式常用配置的简介--- <!-- 开启使用开发模式,详细错误提示 --> <!--

MySQL 数据库输入密码后闪退的问题及解决办法

MySQL 数据库输入密码后闪退的问题及解决办法 1.问题说明 在启动MySQL服务端并输入密后,出现闪退现象.实际上,这种问题很常见,大多数原因可能是在咱们使用安全软件的时候,无意中关闭了MySQL服务.此外,如果MySQL服务已经启动了,但还是出现了闪退的现象,那就可能是MySQL的配置出现了问题. 2.解决方案(步骤) 鼠标右击此电脑 点击管理 点击服务和应用程序 点击服务 找到MySQL,点击启动此服务即可 原文地址:https://www.cnblogs.com/zhuchengbo/

Vivado SDK 2014.2 创建新工程后,BSP版本不对的解决办法

问题描述如下: 1. 使用Vivado SDK 2014.2已经创建了工程,但是此时,hdf文件增加了外设,需要重新创建工程以更新SDK中的外设描述: 2. 使用新的hdf创建工程后,发现system.mss文件中有些外设的BSP包名称显示为红色,把system.mss改成可编辑模式后,看到外设对于的BSP包版本不对: 3. 由于外设的BSP包版本不对,导致工程编辑错误,无法生成elf文件. 解决办法: 使用新的hdf文件重新创建工程之前,先在Xilinx Tools --> Repositor

CentOS最小化安装后AR8151网卡驱动未安装解决办法

最近拿来一台PC,12年的时候安装的CentOS6.2(x64),那个时候使用的是外置网卡,最小化安装系统时,主板自带网卡没有显示出来也就没注意,但是最近需要用到双网卡,就郁闷了.于是发生了下面一系列问题. 1.lspci命令没有 遇到问题: 在最小化安装的centos6.X系统中,使用lspci命令查看硬件信息,提示找不到命令:command not found. [[email protected] netperf-2.6.0]# lspci -bash: lspci: command no

Windows10安装Mysql后没有服务并且不能启动解决办法

在安装mysql过程中遇到一个问题  install/remove of the Service Denied,这个问题说明自己没有安装和删除的权利,原因是自己在运行cmd过程是没有使用管理员身份运行,解决方法:就是以管理员身份运行cmd,再进行安装 步骤: 1 .打我的电脑C:\Windows\System32\cmd.exe,右击cmd选择以管理员身份运行 2.在dos命令窗口执行cd e:\workspace\mysql-5.6.24-win32\lib 转到bin目录下,执行 mysql

【Windows10】运行软件后,窗口不显示的解决办法

摘要: Windows10偶尔出现运行软件后,窗口不显示(但是已经运行,任务栏有图标),或者运行中突然出现只剩下右上角的"最小化.最大化和关闭键"的小窗口. 1. 后者可以先最大化,然后拖动整个窗口,调整大小解决. 2. 前者打开软件窗口不显示的解决办法: 鼠标放在任务栏,出现该程序的预览窗口,然后左键单击,再按Alt+空格,会在桌面左上角显示还原.移动.最小化.最大化.关闭等的菜单列表窗口,且最小化.最大化.关闭是可选状态. 然后点击最大化,然后操作同上,拖动即可. 参考 1.WIN