为防止协调器出现死机现象 采用看门狗进行喂狗
TI的zha1.2标准协议栈 是否有固定的api 供我们调用?
chenzhenhui chen:
我预编译了 WDTIMX
if ( (zclSampleLight_NwkState == DEV_ZB_COORD) ||(zclSampleLight_NwkState == DEV_ROUTER) ||(zclSampleLight_NwkState == DEV_END_DEVICE) ){#ifdef WDT_IN_PM1 //状态改变 清除WDCTL = 0xa0;WDCTL = 0x50;osal_start_timerEx( zclSampleLight_TaskID, SAMPLELIGHT_WATCHDOG_EVT,800);#endif
}
#ifdef WDT_IN_PM1if ( events & SAMPLELIGHT_WATCHDOG_EVT ){HalLedSet(HAL_LED_ALL,HAL_LED_MODE_TOGGLE);WDCTL = 0xa0;WDCTL = 0x50;osal_start_timerEx( zclSampleLight_TaskID, SAMPLELIGHT_WATCHDOG_EVT,800);return ( events ^ SAMPLELIGHT_WATCHDOG_EVT );}
问题:这样给 其喂狗正确么
如果正确 为什么还经常重新复位
chengzi chen:
回复 Yue TANG:
喂狗超时时间有4个选择, 而且最好在OSAL主循环的地方喂狗:
void osal_start_system( void ) { #if !defined ( ZBIT ) && !defined ( UBIT ) for(;;) // Forever Loop #endif { osal_run_system(); } }
dongdong0071:
回复 chengzi chen:
我设置的是在主循环的地方喂狗,然后我的所有按键都只能使用一次,
我不加看门狗的时候,按键可以一直使用,
Aries Lord:
回复 dongdong0071:
建议在hal poll里面喂狗,另外UART Read里面也应该喂狗
TI中文支持网