mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 09:39:10 -04:00
esp32/task_wdt: Add esp_task_wdt_isr_user_handler function
Added esp_task_wdt_isr_user_handler function to receive twdt events in the user code. Closes https://github.com/espressif/esp-idf/issues/2270
This commit is contained in:
parent
5f1844a0c8
commit
4fc84306a2
@ -116,6 +116,17 @@ static void reset_hw_timer()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is called by task_wdt_isr function (ISR for when TWDT times out).
|
||||||
|
* It can be redefined in user code to handle twdt events.
|
||||||
|
* Note: It has the same limitations as the interrupt function.
|
||||||
|
* Do not use ESP_LOGI functions inside.
|
||||||
|
*/
|
||||||
|
void __attribute__((weak)) esp_task_wdt_isr_user_handler(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ISR for when TWDT times out. Checks for which tasks have not reset. Also
|
* ISR for when TWDT times out. Checks for which tasks have not reset. Also
|
||||||
* triggers panic if configured to do so
|
* triggers panic if configured to do so
|
||||||
@ -153,6 +164,7 @@ static void task_wdt_isr(void *arg)
|
|||||||
ets_printf("CPU %d: %s\n", x, pcTaskGetTaskName(xTaskGetCurrentTaskHandleForCPU(x)));
|
ets_printf("CPU %d: %s\n", x, pcTaskGetTaskName(xTaskGetCurrentTaskHandleForCPU(x)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
esp_task_wdt_isr_user_handler();
|
||||||
if (twdt_config->panic){ //Trigger Panic if configured to do so
|
if (twdt_config->panic){ //Trigger Panic if configured to do so
|
||||||
ets_printf("Aborting.\n");
|
ets_printf("Aborting.\n");
|
||||||
portEXIT_CRITICAL(&twdt_spinlock);
|
portEXIT_CRITICAL(&twdt_spinlock);
|
||||||
|
@ -44,7 +44,9 @@ elect to be watched by the TWDT. Each watched task must 'reset' the TWDT
|
|||||||
periodically to indicate that they have been allocated CPU time. If a task does
|
periodically to indicate that they have been allocated CPU time. If a task does
|
||||||
not reset within the TWDT timeout period, a warning will be printed with
|
not reset within the TWDT timeout period, a warning will be printed with
|
||||||
information about which tasks failed to reset the TWDT in time and which
|
information about which tasks failed to reset the TWDT in time and which
|
||||||
tasks are currently running on the ESP32 CPUs and.
|
tasks are currently running on the ESP32 CPUs.
|
||||||
|
And also there is a possibility to redefine the function `esp_task_wdt_isr_user_handler`
|
||||||
|
in the user code to receive this event.
|
||||||
|
|
||||||
The TWDT is built around the Hardware Watchdog Timer in Timer Group 0. The TWDT
|
The TWDT is built around the Hardware Watchdog Timer in Timer Group 0. The TWDT
|
||||||
can be initialized by calling :cpp:func:`esp_task_wdt_init` which will configure
|
can be initialized by calling :cpp:func:`esp_task_wdt_init` which will configure
|
||||||
|
Loading…
x
Reference in New Issue
Block a user