STM32F407VET6 / BLACK_F407VE开发板间隔0.5秒不断重启
有一块 STM32F407VET6 的故障开发板, 之前的问题是经常无法烧录, 必须reset之后才能连接, 具体查看这篇 STM32F407VET6烧录出现flash download failed target dll has been cancelled. 并且程序运行一段时间后会halt. 这块开发板后来一直搁箱底吃灰了几年.
最近打算把这片 STM32F407VET6 换到新板子上, 已经重新打好了板子. 今天在动手换板子前, 上电试一下, 烧录是正常的, 烧录失败时按一下Reset基本上能成功, 跑一个最简单的闪灯程序, 跑了十几分钟后依然在闪, 莫非这个板子又好了?
然后又跑了一个带串口输出的程序, 发现还是有问题, 这个 STM32F407VET6 会不断重启.
排除电压问题
开始怀疑是电压问题, 用STLink连接时电压只有3.0V多点, 猜测可能AMS1117坏了? 换成USB供电, 测AMS1117的输出脚是3.3V, 没有问题. 测晶振两侧电压, 都是1.67V左右, 也没问题.
排除NRST脚浮空
因为 STM32F407 的 NRST脚复位后自带上拉电阻, 所以不存在浮空导致复位的问题, 这个原因可以排除
排除软件问题
因为这个重启很有规律, 差不多每0.5秒重启一次. 猜测是软件问题. 擦除整片后再写入, 无效.
定位到Option Bytes
通过 JLink 进行debug, 发现debug的过程是正常的(!), 不会重启, 但是一旦解除断点继续执行, 就又开始自动重启了.
Debug 过程不重启, 至少说明外设硬件方面没问题, 肯定是 STM32F407VET6 自身的某些设置导致的重启, 例如硬件看门狗.
如果开启硬件看门狗, 上电之后就会开始工作且无法停止, 这项功能是在 Option Bytes 中设置的. 在 Ubuntu 下貌似没法改.
换回 Win10 系统, 用 STM32 ST-Link Utility 连接开发板, 打开 Option Bytes, 在一个非常不起眼的位置看到了 WDG_SW , 果然没有勾选.
勾选后应用, 重启问题就消失了.
现在这块板子看起来是正常了, 省了换板子的时间了.
上网查了一下, 也有遇到这个问题的
- STM32F103RC 一上电重复重启 https://blog.csdn.net/lee_xuwei/article/details/81780536
- STM32之option bytes踩坑记录 https://www.jarvisw.com/?p=577
- Watchdog-related firmware restart issue on STM32F405 https://github.com/rusefi/rusefi/issues/711
SEGGER JLink 可以设置 Option Bytes, 因此在 Ubuntu 下是可以操作的
- Option byte programming https://wiki.segger.com/ST_STM32F4
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
2022-02-12 GRC: 个人信息保护法, 个人隐私, 企业风险合规治理
2021-02-12 OpenWrt的dnsmasq, ipset和iptables配置
2019-02-12 PHP异步扩展Swoole笔记(1)