STMCU小助手
发布时间:2022-3-2 22:33
|
前言8 v7 a" g% }7 W& K7 A( {9 t d 本篇 LAT 的内容简介了 STM32 ST-LINK Utility 的 Hot Plug 功能。 问题:$ J" U% ?/ }7 U% t* c 客户反映,使用 STM32 某型芯片时,上电以后芯片未能正确启动;怀疑芯片是从 system memory 启动。 分析:; M6 K/ L! y* d5 O6 N& z. n 1、 检查硬件:电源,NRST 电路,Boot0 配置,确认硬件平台基本符合要求。其中,电源的去耦电容部分在走线上可以改进,但是在实验室环境下应该不至于导致芯片不能工作。 2、 使用仿真器进行调试客户程序,发现一切正常。( G) ?4 V$ |% F6 Y8 Y- Q: {8 [$ d 3、 断开仿真器,芯片单独上电运行,未出现预期结果。 F8 q, z+ _: o0 Y/ Q: K ( ?$ ^( V& n _" w" w3 _0 j 处理: 在 STM32 ST-Link Utility 中,有一个 Hot Plug 功能,可以用它来辅助查看一些信息。 d O, z7 D' @ - Q2 i9 y' X& [# U" O% H
: f! y1 m" [* ^/ Q, X9 p5 ~& t 首先,将目标板上电。 然后,使用 ST-Link 并在软件中设置使用 Hot Plug 连接,如上图所示。 在正常连接以后,按照下图选择:
此时,会出现如下界面: 7 V, `: }6 N) A0 t+ c: L' i8 S! M' }
6 j6 ]' W* c9 v- Q, V. t 经过上述步骤,查看 PC 值,发现实际上芯片已经执行到 0x08000000 以后,并非先前所认为的芯片没有正常启动。进一步了解,发现用户将自己的应用程序从某个地址开始烧入,但在其之前有一段客户自己的程序用来执行 bootloader 功能。也就是说,芯片上电以后程序已经执行,但是由于某种原因,一直陷在第一段应用程序中没有执行下去。为了验证这个推断,重新编写测试程序(例如 IO 翻转)烧入 0x08000000。上电以后如预期的那样在相应的 IO 上观察到了波1 `! S0 V+ z+ H 形。 $ J, M( U) N4 x9 s* R2 F J7 ? 结论: 经过上述处理,证实该案例是由应用程序引起而非芯片未能启动。因此,当客户根据第一段程序代码进行检查后顺利解决该1 v6 i" [# X; J7 e0 A( f3 V1 [ # n4 R/ \" a! F J N" o 问题。 Hot Plug 功能操作比较简单,但是由于不是仿真调试,往往不为人注意。在调试时,结合其他调试手段恰当使用该功能有时会起到事半功倍的效果。# f5 j# R/ P2 Q& ]7 \ H 7 F$ v- e t) a! k+ c |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版