|
OS Heap Min 13656
Task Name Status ID Priority Heap Min CPU usage
DBG_Task R 7 5 144 0%
IDLE R 2 0 105 0%
tcpip_thread B 4 5 884 0%
tcp_client B 10 3 765 0%
CH_PRO B 12 3 541 0%
CH_PRO B 13 3 549 0%
CH_PRO B 15 3 541 0%
CH_PRO B 14 3 549 0%
CH_PRO B 17 3 541 0%
CH_PRO B 16 3 541 0%
CH_PRO B 18 3 541 0%
CH_PRO B 19 3 541 0%
CH_PRO B 21 3 541 0%
CH_PRO B 23 3 541 0%
CH_PRO B 22 3 541 0%
CH_PRO B 24 3 541 0%
CH_PRO B 25 3 541 0%
CH_PRO B 26 3 541 0%
CH_PRO B 27 3 541 0%
WD_Task B 6 6 183 0%
CH_PRO B 20 3 541 0%
CFG_Task0 S 8 4 69 0%
tcp_server B 9 4 913 0%
EthIf B 5 6 305 0%
Tmr Svc B 3 3 229 0%
看门狗任务
void WatchDog_Task(void const * argument)
{
UNUSED(argument);
static uint32_t to = 0;
osEvent ret;
HAL_IWDG_Refresh(&hiwdg);
for(;;)
{
ret = osSignalWait(0x0, 6000);
if(osEventTimeout==ret.status)
{
to++;
}
else
{
to = 0;
}
if(to < 300) //1800 seconds
{
log_printf(LOG_INFO,"Refresh watchdog,%u!\r\n",to);
HAL_IWDG_Refresh(&hiwdg);
}
else
{
log_printf(LOG_CRIT,"Long time disconnect from server,watchdog bite later!\r\n");
}
}
}
看门狗超时26秒。
正常情况下,系统心跳任务每3秒连接一次服务器,成功后发信号给看门狗任务,喂狗,如果心跳任务连接服务器失败,则看门狗任务超时6秒一次喂狗,超时1800秒,后系统复位。
系统有时会莫名奇妙的复位,WD_Task任务和EthIf任务的优先级最高,都为6,有没有可能是EthIf占用系统时间太长导致看门狗任务挂起超过了看门狗周期? |
|