前段时间调试STM32F407ZGT6最小系统板,遇到一个情况:
没有问题的简单程序(出现问题之前跑过,烧录在其他板子上也运行正常),在调试的时候,点击Debug按钮后,就直接运行,如下图:
上图,点击右上角的Debug后,自动转到下图(没有点下图中 圈出来的运行按钮),写的程序也没有执行,总之就是死在这里了...
后面查了下,程序压根没有执行到main函数,所以设置断点等方法肯定没用。
中断运行后,程序停在如下界面(主要看汇编代码,main的C代码可忽略)
根据汇编代码可以看到,程序在0x1FFF 0000~0x1FFF 77FF的系统存储区来回跳转(类似死循环),而系统存储区的代码是芯片出厂时已经固化的启动代码,用户无法访问和修改
网上没查到什么明确的解决办法,或者他们的解决办法试过了没用。如下面链接
keil5 调试不进主函数一直卡在0x1FFFF3B2 F8D01808 LDR r1,[r0,#0x808]_keil debug运行在0x1fff2782那里-CSDN博客
一度以为板子不小心碰到了,比如静电等,或者误操作,被搞坏了
但今天上电,突然可以正常运行了,最后的操作如下:
将Erase Sectors改为Erase Full Chip,然后编译、烧录、Debug。当时这个操作还是没有效果的,也就暂时搁置,忙其他的了。
今天重新上电之后,突然就好了(期间没有碰板子和写代码)。
说明:本人有三块相同的板子,都是STM32F407ZGT6,暂时叫做A,B,C
A一直没有问题,B,C出现的问题如上面描述。
将Erase Sectors改为Erase Full Chip是在B上面操作的,今天给B重新上电恢复正常了
然后将C板编译烧录(编译烧录前已经改回Erase Sectors),C板也恢复正常。
现在三块板子全部可以正常使用。
但是出现上面状况的原因和为什么回复正常,还不清楚,有知道的欢迎在评论区留言指点
哦对了,电路板接线没有问题的,下面链接的情况在我的板子上不存在。不过也是一种可能,所以贴出来,供大家参考keil5 调试不进主函数main(),一直卡在0x1FFFF3AA F8D01808 LDR r1,[r0,#0x808]_单片机keil调试卡在0x1ffff3a6-CSDN博客