keil程序烧录到板子成功,但是没有实验现象,debug时反复循环几句话问题的解决
问题描述
- 参照stm32的pdf学习过程中,已完成用stlink连接好板子与计算机,蓝色电源灯亮起。
- 打开keil中示例的走马灯项目,编译并成功下载烧录到主板中,按照书中描述的现象,此时应该交替亮起led灯,但亮起失败。
- 使用debug功能,不断的在循环之中,将代码停下后逐步运行,在汇编窗口发现程序反复在三句话中循环执行,程序卡在这无法执行。
设备及其他简介
若部分设备型号与本文不同,但面对的情况相同,可以适当依照本文尝试解决。
开发板:stm32zet6
仿真器:stlink
IDE:keil mdk5.18
解决过程及思路
理论上来说,程序的烧录过程并没有任何问题,所以个人认为问题不是出现在软件上,而是硬件上。在debug的过程中,有时在命令行窗口上是可以看到很多cannot access memory。所以我一开始还以为是没有存储卡什么的(,有些换晶振的帖子看了感觉又有点舍不得,在反复折磨boot01上的跳线帽无果之后,愤怒之下将stlink直接给拔了,发现它的usb线另一端可以插在开发板上,就插上去了。
是的,没装stlink那个盒子,直接用那个usb线插板子上了
第一时间当然是没有反应,但好巧不巧,我这乱动手的毛病,顺手把电源按了,于是跑马灯就这样跑了起来,我一愣,马上考虑查看现在debug的情况,在keil上的debug直接给你结束了,告诉你连接stlink中断,也就是说,板子现在是在跑之前烧制在里面的程序。
结合情况推理:如果有两根这个线,就可以一根连接在usb232那个口子,另一根按照之前连接在stlink来负责烧程序和debug
纳尼,这又是什么原理?我百思不得其解,如果是电源上的需求,理论上来说stlink不是也可以给开发板充电吗?毕竟我们cpu灯还在歪脖子树上亮着呢,又或者是usb232串口有什么特殊性?
- 进一步测试,说干就干
将线连接到usb_slave紧挨着的另一个串口。(考虑有人版本不一样,给演示一下图,图来自正点原子的pdf资料,侵权请联系删除,大家请勿商业使用),经测试与usb232在这里干的事没有任何区别。
结论及相关推测
- 嫌麻烦就再找根线,连上usb口;不嫌麻烦就烧制再拔线到usb口查看演示效果,就是不能debug了有点伤。
- 记得按下电源开关。
- 推测这里usb线起到的是充电的作用,应该是烧制程序的引脚占用了执行程序通电的引脚,所以在假设成立的情况下推测,给开发板充上电源应该都可以解决,开发板本身就有一个正牌的充电口,大家可以插上试试(我不测试验证是因为找不到充电器惹,欢迎验证后回复)