关于如何使用keil程序运行时,不破坏现场环境的情况下进入debug模式

首先一定要确保你当前工程和运行程序的工程一致!!!

已我现在使用的MCU,FM33G048,调试器Jlink为例。

一定要在jlink连接目标设备前先设置完毕!!

进入设置,然后按下图进行设置

 

 

 

 

 

最后一个图有个loadaxf.ini文件,这个文件一定要放在keil的工程文件同一个文件夹下!!!

loadaxf文件内容如下:

LOAD %L INCREMENTAL

完成上述步骤以后,你就可以保存一下项目,然后连接目标设备,点击debug了!

但是!问题来了!假如我们的设备有看门狗功能,你连接的这段时间,有可能触发看门狗。

这时候就又要说道loadaxf.ini这个文件了。keil会你debug时自动调用这个文件。而这个文件可以向写c语言一样添加代码!

目前我用的芯片是FM33G048,芯片有一个寄存器可以在debug状态下自动关闭看门狗,看下图

 

 

其他MCU也一定有的,STM32啥的都有,自己找一下。我这个寄存器地址是0x40000004

所以,我们可以在loadaxf.ini文件内加入一条语句,在启动时设置这个寄存器,去关闭看门狗!如下:

*((uint32_t *)0x40000004) = 0x03

这个时候,你点击debug以后,就会自动给你关闭看门狗,也就不用担心看门狗复位了!

再再再然后,拓展一下。如果目标设备具有低功耗功能,那你debug时进入低功耗了也会丢失连接。所以这个地方你可以设置一个变量,用这个变量来阻止mcu进入低功耗,当然,默认都是不阻止的。这个地方就不详细解释了。只是作为拓展。

 

上图是在工程代码中的内容

*((uint32_t *)0x20000000) = 0x01; /*Debug时不进入低功耗*/

上面是在loadaxf.ini中的内容

以上,自己体会吧。

posted @   r_jw  阅读(2567)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示