RA4M2上面有两个看门狗定时器,一个是Watchdog Timer (WDT),另外一个是Independent Watchdog Timer (IWDT)。后者使用单独的时钟源,即使在芯片内部PLL出现故障时,也能复位芯片。但是后者只有通过硬件配置,不能通过软件配置,所以一般使用前者。
首先还是使用RASC来配置
然后配置参数,这里可以配置的包括周期,分频值,窗口范围,是否产生NMI中断,以及NMI中断回调等
首先计算超时时间,超时时间由timeout和clock_division决定,其定义如下
其中分频值支持以下几个
时钟周期支持以下几个
WDT的时钟源是这个
一般超时的时间可以这样算
秒数(s)*看门狗定时器频率(hz) = 超时时钟周期*分频数
这里最大的超时,是把周期设置为16384,分频设置为8192,超时时间2s左右
然后window_start window_end是喂狗的窗口期,如果不用窗口模式,那把start设置为WDT_WINDOW_START_100,end设置为WDT_WINDOW_END_0 即可
reset_control是决定定时器超时时间到产生一个NMI中断(WDT_RESET_CONTROL_NMI)还是直接复位(WDT_RESET_CONTROL_RESET ),这里为了测试,我们选择让其产生NMI中断
然后生成工程即可
在程序中使用
R_WDT_Open(&g_wdt0_ctrl, &g_wdt0_cfg);
初始化看门狗定时器,然后在循环中使用
R_WDT_Refresh(&g_wdt0_ctrl);
来喂狗
完整版的代码如下
烧录到板上之后,可以看到只要在2s内喂狗,设备就能一直正常运行。
更多回帖