From a21947ff221bd133017204aa599de8aaf3ea65b1 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Fri, 29 Mar 2024 08:11:25 +0800 Subject: fix timer start in isr --- osal/usb_osal_freertos.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/osal/usb_osal_freertos.c b/osal/usb_osal_freertos.c index e536ff14..14118570 100644 --- a/osal/usb_osal_freertos.c +++ b/osal/usb_osal_freertos.c @@ -153,7 +153,17 @@ void usb_osal_timer_delete(struct usb_osal_timer *timer) void usb_osal_timer_start(struct usb_osal_timer *timer) { - xTimerStart(timer->timer, 0); + BaseType_t xHigherPriorityTaskWoken = pdFALSE; + int ret; + + if (xPortIsInsideInterrupt()) { + ret = xTimerStartFromISR(timer->timer, &xHigherPriorityTaskWoken); + if (ret == pdPASS) { + portYIELD_FROM_ISR(xHigherPriorityTaskWoken); + } + } else { + xTimerStart(timer->timer, 0); + } } void usb_osal_timer_stop(struct usb_osal_timer *timer) -- cgit v1.3.1