WDOG监视内部系统操作,并在发生故障时强制复位。它可以运行在一个独立的1 kHz低功率振荡器,具有可编程刷新窗口,以检测程序流或系统频率的偏差。
看门狗计时器保持一个时间在系统上运行,并重置它,以防其故障。
COP 时钟有 1KHZ时钟 和总线时钟两个来源。
COP看门狗旨在在应用软件出现故障时强制重置系统 按预期执行。 防止系统从COP定时器复位(当它是 启用),应用软件必须定期复位COP计数器。 如果 应用程序丢失并且在超时之前无法重置COP计数器,a 生成系统重置以强制系统返回已知的起始点。
任何复位后,COP看门狗都会启用。 如果没有使用COP看门狗 应用程序,可以通过清除SIM_COPC [COPT]来禁用它。
下面的是喂狗操作: 在选定的超时期间,通过将0x55和0xaa(按该顺序)写入sim服务COP(SrvCOP)寄存器的地址来重置COP计数器。写入不会影响srvCOP寄存器中的数据。一旦写入序列完成,COP超时周期就会重新启动。如果程序无法在超时期间执行此重新启动,则微控制器将重置。此外,如果将0x55或0xaa以外的任何值写入srvCOP寄存器,则微控制器立即重置。
SIM_COPC[COPCLKS]选择用于COP计时器的时钟源。时钟源选项要么是总线时钟,要么是内部1 kHz时钟源。对于每个时钟源,相关的超时由SIM_COPC[COPT]控制。下表总结了SIM_COPCTRL[COPCLKS]和SIM_COPC[COPT]字段的控制功能。COP看门狗默认从1 kHz时钟源运行,最长超时是2的10次方 个周期。
选择总线时钟源后,可以通过设置SIM_COPC[COPW]进行窗口COP操作。在此模式下,写入SIM_SRVCOP以清除COP定时器必须发生在所选超时时间的最后25%。过早的写入会立即重置芯片。当选择1 kHz时钟源时,窗口COP操作不可用
下面这段很重要: COP计数器由对SIM_COPC的第一次写入和任何系统重置后初始化。后续写入SIM_COPC对COP操作没有任何影响。即使应用程序使用SIM_COPC[COPCLKS],SIM_COPC[COPT],和SIM_COPC[COPW]字段的重置默认设置,用户也应该在重置初始化期间写入写一次SIM_COPC寄存器以锁定设置。如果应用程序丢失,此方法可防止意外更改。
(翻译过来就是COP计数寄存器只能写入一次,这个过程可以是系统启动时设置,也可以是之后,但是只有一次写入的机会。)
对于SIM_SRVCOP来说,服务(清除)COP计数器刷新不应该放在中断服务例程(ISR)中,因为即使主应用程序失败,ISR也可以继续定期执行。
如果所选时钟不是1 kHz时钟源,则在微控制器处于调试模式或系统处于停止(包括VLPS或LLS)模式时,COP计数器不会增加。当微控制器退出调试或停止模式时,COP计数器将恢复。
如果选择1 kHz时钟源,COP计数器在进入调试模式或停止模式(包括VLPs或LLS)时重新初始化为0。计数器在退出调试模式或停止模式时从0开始。
无论选择哪个时钟,当芯片进入VLLSx模式时,COP都会被禁用。在从VLLSx模式唤醒芯片的重置后,COP将被重新初始化并启用,就像任何重置一样。
COPT这个写一次字段选择COP的超时时间。COPT和COPCLKS字段一起定义COP超时时间。
编写0x55和0xaa(按该顺序)重置COP超时计数器,写入任何其他值将生成系统重置。
下面的寄存器可以查看系统重置原因;
原文地址:https://www.cnblogs.com/LVNG2018/p/10742659.html