环境:
- win10 64
- MDK514 & MDK527
- Stlink+stm32f429IGT6
问题点:
有时debug仿真调试不能成功。感觉很奇怪,把遇到现象总结了一下。
总结:
-
keil工程要经常clear和Rebuild
-
keil工程的路径,不能太长,不能太深。路径的字符长度,能短就短。
-
keil工程的路径不能有汉字,debug时会闪退。
-
如果debug不能成功,开发板重新上电,现象在一段汇编代码中跑来跑去,就是不进C语言的main函数。
-
如果debug不能成功,keil环境的PC电脑,进行重启。
-
听说STM32只能打不大于6个断点。第4的现象可能是断点太多的原因。所以重启stm32单片机,清一下断点。(猜测)可能是单片机中程序的断点不能与keil的断点同步。
-
keil版本问题。有可能低版本的debug功能与stlink驱动不匹配。MDK5.14更新到MDK5.27感觉debug很顺畅。
-
描述一个现象:Debug仿真调试时,keil5.27不可更换工程,不可使用STM32CubeMX重新生成工程,否则出现debug不能进入Main函数现象,很奇怪,没有搞清楚这是为什么。更换工程后重启PC电脑,再次Debug时,在keil中可以重新进入Main函数。
-
参照:https://bbs.csdn.net/topics/392278889
可以正常STOP,可以正常run, 但STOP无法在.C文件中定位
可能flash中的代码和afx中的不一样, 有可能是加密导致的, 配置里勾掉加密,erase flash, 然后重新DEBUG
参考论坛的内容,打开了 以下几项:
进到设置窗口:options for Target"XXXX" -->Debug---->Use “stlink debugger” Settings ->
第一项:"Contex-M Target Driver Setup"窗口->-debug—>Download options ---->两项都勾上。
第二项:"Contex-M Target Driver Setup"窗口->Trace–> CoreClock要设对了,认为对应SysClk、Trace Enable使能上。
第三项:"Contex-M Target Driver Setup"窗口->FlashDownload --> Download Function选择Erase Sectors, 复选Program、Verify、Reset and Run 全勾上。 -
最后结论:上边写的都是参考。最终定论开发板有问题,也不能太相信开发板,量了一下boot0脚上的电压,竟然有3V,不知道为什么受USB转232的干扰,插着USB数据线,开机BOOT0脚自带3V电。可恶的3V电。
补充问题1:
- ST-link Utility 出现 Can not connect to target 窗口,如果你开发的软件感觉没有问题、STLINK连线正常、 ST-link Utility工具软件一通设置无效、并且出现这个问题,让你很奇怪 。可以都考虑,换一个新的ST-LINK烧写器,试一下。
- 旧STLINK烧写器使用情况:BOOT0拉高,可以烧写。正常模式,不可以debug仿真,不可烧写。
- 新STLINK烧写器使用情况:正常模式下,可以烧写,可以debug仿真。
结束。
欢迎追加。