关于如何使用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 @ 2022-07-11 15:13  r_jw  阅读(3443)  评论(0)    收藏  举报