STM32 jtag调试程序时程序跑飞

本文探讨了在使用Keil MDK V5.10进行STM32F103C8硬件调试时遇到的问题,即在全速运行时程序出现跑飞现象。问题根源在于芯片JTAG引脚复用,在程序初始化阶段被映射为普通IO引脚,导致JTAG无法正常工作。同时,文章分析了看门狗开启时,单步调试可能引发的JTAG故障,以及如何通过重新配置JTAG引脚和避免看门狗干扰来解决此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境:keil MDK V5.10

操作系统:windows 7(32位)

目标硬件:STM32F103C8

问题描述:在使用jtag对某软件进行调试的时候,KEIL可以正常的进行软件下载,一旦使用F5全速运行时,立即发现程序跑飞了,暂停后汇编代码显示“MOVS R0 R0”。程序跑飞的时候可以看到目标设备程序执行过程正常(灯正常闪烁,串口调试信息正常输出)。


问题原因:芯片的JTAG引脚被复用,在程序初始化阶段将JTAG引脚remap为了普通的IO引脚导致。


PS:在使用JTAG进行程序调试的时候,如果程序中开了看门狗,调试程序进行了单步调试的情况也可能导致JTAG无法正常使用,因为目标设备的看门狗不能因为单步执行而暂停,从而导致在JTAG在线调试的单步执行或者暂停执行的情况下,目标设备由于看门狗不能暂停,已经导致硬件复位,从而脱离JTAG的调试模式,导致看起来程序跑飞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值