主题中讨论的其他器件: TM4C123
问题如下:
- 在我们的引导加载程序中、我们已将看门狗初始化为(SysCtlClockGet ()* 30秒)的时间、以便在应用程序固件无法启动和运行时将系统复位、并为看门狗中断提供服务。
- 为了测试此行为、我们加载了初始化看门狗的引导加载程序和禁用看门狗服务例程的应用程序固件、以检查看门狗是否正确触发了复位。
- 当我们打开器件电源(冷复位)时、我们看到它会在60秒后按预期复位系统、因为应用程序固件中不会处理看门狗中断。
- 但是、在看门狗在上电(冷复位)后首次复位系统后、我们看到它会每15秒(60秒/4)而不是60秒后继续复位(热复位)系统。
观察结果:
- 每次冷复位(外部掉电然后上电)都会在60秒后按预期触发复位、但之后看门狗触发的连续复位则为15秒。
- 我们发现这是因为 SysCtlClockGet ()返回15000000用于热复位、53693160用于冷复位、因此复位时间为60s 和15s。
- 在 SysCtlClockFreqSet()之前或之后添加延迟也不起作用。
- 尝试在 TM4C1294NCPDT 数据表和 Tivaware ROM 信息表中找到答案、但找不到任何可信来源。
您能否帮助我们了解为什么我们看到这种行为差异?
在热复位情况下再次调用 SysCtlClockFreqSet()之前,是否还有任何操作需要执行,以便在冷复位和热复位时获得与 SysCtlClockGet ()一致的值?