开发环境:keil MDK V5.10
操作系统:windows 7(32位)
目标硬件:STM32F103C8问题描述:在使用jtag对某软件进行调试的时候,KEIL可以正常的进行软件下载,一旦使用F5全速运行时,立即发现程序跑飞了,暂停后汇编代码显示“MOVS R0 R0”。程序跑飞的时候可以看到目标设备程序执行过程正常(灯正常闪烁,串口调试信息正常输出)。
问题原因:芯片的JTAG引脚被复用,在程序初始化阶段将JTAG引脚remap为了普通的IO引脚导致。
PS:在使用JTAG进行程序调试的时候,如果程序中开了看门狗,调试程序进行了单步调试的情况也可能导致JTAG无法正常使用,因为目标设备的看门狗不能因为单步执行而暂停,从而导致在JTAG在线调试的单步执行或者暂停执行的情况下,目标设备由于看门狗不能暂停,已经导致硬件复位,从而脱离JTAG的调试模式,导致看起来程序跑飞。
本文探讨了在使用Keil MDK V5.10进行STM32F103C8硬件调试时遇到的问题,即在全速运行时程序出现跑飞现象。问题根源在于芯片JTAG引脚复用,在程序初始化阶段被映射为普通IO引脚,导致JTAG无法正常工作。同时,文章分析了看门狗开启时,单步调试可能引发的JTAG故障,以及如何通过重新配置JTAG引脚和避免看门狗干扰来解决此类问题。
2680

被折叠的 条评论
为什么被折叠?



