• 正文
  • 相关推荐
申请入驻 产业图谱

如何在KEIL MDK调试时避免看门狗引起的复位?

04/17 11:14
222
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

MCU程序里使用了看门狗,在KEIL MDK里通过加断点进行调试时,很容易因停留在断点处来不及“喂狗”而导致看门狗复位,这给调试带来不便。虽然关闭看门狗代码重新编译能解决问题,但当我们不想或不能修改程序时,可以尝试以下方法:

第一步,在MDK调试模式下,先在初始化看门狗的函数调用处(例如 iwdg_init())设置一个断点,并让程序运行到此处暂停。

第二步,在代码编辑窗口,将鼠标光标点击放置在idwg_init()函数调用的下一行语句上,然后右键选择 “Set Program Counter”(设置程序计数器)。

这样操作后,程序计数器(PC)的当前指令地址就被跳过idwg_init()函数的执行,直接指向了后续的语句。此时,继续运行程序就不会执行看门狗的初始化。

这个方法的原理是:通过设置程序计数器(PC),我们直接改变了CPU接下来要执行的指令地址。在调试器中,我们跳过了iwdg_init()函数的执行,因此看门狗定时器根本就没有被启动和使能,它在整个调试过程中都处于默认的关闭状态,自然也就不会产生复位信号。这是一个纯调试环境下的“欺骗”手段,对程序本身的代码没有任何改动。通过查看IWDG相关寄存器,可以确认看门狗确实未被初始化。

这样操作之后,后续不管怎么加断点调试,都不会再引起看门狗复位了。

总结一下:这个方法适用于在必须保留看门狗代码的前提下进行调试的场景。它避免了反复修改代码、重新编译下载的繁琐步骤,提升了调试效率。但需要注意的是,这只是一个调试技巧,最终发布的软件版本仍需确保看门狗逻辑正确运行,以保证系统在异常时的自恢复能力。

扫码加入嵌入式交流群:

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录