看循环处调用栈
问题简述:
使用ST link v2或者正点原子无线dap下载程序进stm32f407ZET6里面时,出现程序无法运行问题,无法运行是指使用debug在void main第一行打断点,无法进入断点,查看汇编语言那一栏,发现在启动文件里面循环,无法跳出。
问题详述:
点击烧录按钮,烧录进度条正常跑完(debug设置是烧录完自动运行),程序不能自动运行(指正常运行到main),按第1次复位之后,程序不能正常运行(指运行到main),部分端口出现电平异常。第2次按复位按键的时候,程序大概率能进入main运行(led正常闪烁),小概率还是有问题。(但是偶尔第一次烧录就能正常运行,无须复位,led闪烁)
在部分pcb板中,多次(几次不等,时间间隔为1s左右)重复复位,led无法闪烁。
在程序正常运行时,反复点击(时间间隔为2s左右,反复次数为2次以上,具体次数不等)options-debug-debug和options-debug-flash download,也能复现问题,具体现象为,程序无法进入main(也可能进入了,但led不闪烁)。
需求:
程序下载进去芯片立即能正常运行(指运行到main)
补充:
上述的程序是指led闪烁程序。
上述的复位均是短按,时间0.5s以内。
pcb重新焊过两块,还是有这个问题,有块板长按复位问题显著改善,有块板要多次复位(五六次,但不绝对)才能偶尔正常运行一次。
主控芯片也换过一批,问题依旧。
不同电脑烧录,问题能复现
main里面只有gpio初始化和delay初始化以及while里面直接对io口电平拉高拉低并延迟。
能提供pcb工程和源代码。
这个pcb有两版,新版和旧版相比是改了部分io口(一些串口,iic),但测试时(烧录闪灯程序)已去掉外设(除烧录器)
回复提供思路或方法无论能否解决问题都有0.5kcb(评论区首次提出),0.5kcb奖励和30kcb悬赏截止时间是2023.12.1
旧版(之前能用的没有改版的)实物图如下,两块pcb通过排针连接,上面是主控,下面是驱动板。
新版(问题板实物图)
新板(有问题板)的原理图
旧板(无问题板)的AD工程文件
有问题板的AD工程文件
测试的led闪烁程序