如何使用keil中的看门狗检查我的代码的正确操作。
我可以将一切一致到NMI处理程序,但是当它到达例程结束时,它执行软件重置
SetWord16(SYS\u CTRL\u REG,(GetWord16(SYS\u CTRL\u REG)&~REMAP\u ADR0)| SW\u RESET);
然后它报告说它不能启动核心。我假设软件重置已经发生,但是如果不断开开发板的连接,我无法恢复控制。
如果我试图在调试器之外运行程序(在调试器运行到这一点之前停止调试器),它仍然无法正确重置。
那么如何使用启用WDOG运行我的程序来重置设备并在不刻录OTP的情况下检查其工作确定。是否有可能?
我正在运行beacon3.40.6作为基础。
使用WDOG强制设备重置是否简单?
设备:
当看门狗触发时,它最终到达NMI处理程序例程中的以下行(Beacon3.40.6)
SetWord16(SYS\u CTRL\u REG,(GetWord16(SYS\u CTRL\u REG)&~REMAP\u ADR0)| SW\u RESET);
这是重置系统的指令。执行此代码后不会发生任何事情。
~REMAP\u ADR0实际上是什么意思。数据表中给出了4个可能的值-默认值为00(ROM),这意味着它将从ROM中的位置0开始执行。
我有限的理解是我应该从系统RAM重新启动,因为这是我的程序所在的地方(假设我没有断电或进入深度睡眠模式)
有人能确认我需要将REMAP\u ADR0从其默认设置更改为其他设置吗?我什么时候不需要这样做?
SetWord16(SYS\u CTRL\u REG,(GetWord16(SYS\u CTRL\u REG)&~REMAP\u ADR0)| SW\u RESET);
因此,这条线的目的是有效地使REMAP\u ADR0对应的位为零,即强制默认值。
如果我把线路改成
setword16(sys_ctrl_reg,(getword16(sys_ctrl_reg))| sw_reset);
并在调用之前使REMAP\u ADR0=0x02(SysRAM),然后看门狗计时器过期导致“正确”重置,代码从头开始再次运行。
我还可以设置断点,工作,所以一切似乎都很好!
我仍然不知道当我和看门狗去OTP的时候会发生什么。该场景的默认设置是否正确?
你好,尼克1博士,
是的,右边的REMAP\u ADR0是确保REMAP\u ADR0设置为默认地址。默认设置应该强制引导加载程序运行,最终将从OTP读取。
谢谢你的对话
你好。
我已经尝试使用sdk\u驱动程序看门狗API来初始化看门狗。
1我启用了看门狗
//#未定义CFG\u WDOG
2我试过了
wdg\ U初始化(1)
和wdg\ U初始化(0)
我的软件似乎没有重新启动,即使我没有重置看门狗:
1它不会再次点亮指示灯(启动时有一个指示灯闪烁)
2我的Keil IDE调试会话没有命中NMI\u HandlerC
添加代码来测试看门狗计数器,并将其卡在0x00FF上
嗨kobyfrèu mag,
你是否在模拟一种最终会使你的软件崩溃并触发看门狗的情况(比如说陷入无休止的循环)?如果你在睡眠模式下使用看门狗,看门狗重置每次你从睡眠中醒来。您不必显式地启用它,只要定义它,SDK就会处理初始化。此外,在睡眠模式下,看门狗在每次唤醒时都会重新加载,它还会重新加载main函数底部的arch\u main.c文件,您可以注释掉下面的代码段并对其进行测试:
如果(使用WDOG)
wdg_reload(watchdog_default_period);
谢谢你的对话
1是的,我正试图让一个看门狗开火,以测试它是否可以运行。我不知道我是否做了激活它所需要的一切。
2我把archèu main.c注释掉了
wdg\ U重新加载(看门狗\默认\周期)
三。我的初始化序列是3个快速发光二极管闪烁。(总持续时间600毫秒)
4.我无尽的循环是慢的LED闪光(应该导致看门狗在〜2秒后燃烧)
5我通过JLink调试器从uVision将程序加载到RAM。
我允许它自由运行
7我观察了一次快速发光二极管的闪光顺序,然后缓慢发光二极管的闪光顺序就不间断了。==>没有软件重置==>没有出现看门狗
还有什么我需要做的,以使看门狗火灾,并导致复位?
嗨kobyfrèu mag,
我刚刚注意到在第五篇文章中,你有没有评论过看门狗的定义?尝试#define CFG#u WDG dont comment out,如果您将其注释掉,SDK将无法启用它。
请尝试禁用睡眠模式并保留wdg\u reload(WATCHDOG\u DEFAULT\u PERIOD)注释,在新模板中使用keil环境运行它。如果这样做,代码将转到NMI\u处理程序()。
谢谢你的对话
非常感谢。
添加
#define cgf_wdog.
我成功了。由于
而(1)
我插入了,我点击了nmi_handler,看门狗每2.5秒保持射击。你好,陈123,
谢谢你的评论。这个论坛的帖子已经很旧了,已经关闭了,你能不能提出一个新的?
谢谢,下午好