我在freertos下面设置了一个watchdog
void WatchdogIntHandler(void)
{
MAP_WatchdogIntClear(WDT_BASE);
}
//
// Initialize WDT
//
WDT_IF_Init(WatchdogIntHandler,80000000 * 3);
MAP_PRCMPeripheralClkEnable(PRCM_WDT, PRCM_SLP_MODE_CLK);
当系统进入LPDS模式后,我模拟了一次让系统崩溃的场景,发现watchdog并没有让系统重启,当我去掉LPDS模式,再次模拟系统崩溃的场景,watchdog 让系统重启了,watchdog是不能够在LPDS模式下起作用吗?还是需要做一些其他的配置?
Viki Shi:
State information is lost and only certain MCU-specific register configurations are retained. The MCU can wake up from external events or by using an internal timer. (The wake-up time is less than 3 ms.) Certain parts of memory can be retained while the MCU is in LPDS mode. The amount of memory retained is configurable. Users can choose to preserve code and the MCU-specific setting. The MCU can be configured to wake up using the RTC timer or by an external event on a GPIO (GPIO0–GPIO6)
LPDS模式下会关闭WDT,但是可以使用内部定义器唤醒MCU
user4905330:
回复 Viki Shi:
谢谢回复,还有个问题请教一下,TI SDK 里面有两个函数cc_app_putoff_pm, cc_app_resmue_pm, 当我设置模式为LPDS模式后,调用这个两个函数是不是看可以主动的关闭和进入LPDS模式?
比如
lp3p0_setup_power_policy(POWER_POLICY_STANDBY);//设置了LPDS模式,当系统idle时会进入LPDS状态
在某个地方调用了
cc_app_putoff_pm()//系统退出LPDS模式
在某个地方调用了
cc_app_resmue_pm() //重新进入LPDS模式
不知理解的对不对,或者怎么理解才是正确的?