Resume task from interrupt and end vTaskDelay

mayank15 wrote on Monday, September 08, 2014:

I am running FreeRTOS on STM32-Eval board. I create a task and call vTaskDelay(x) at the end to have the task block for x number of ticks and have the board enter sleep state.

Is there a way to resume the task when an interrupt triggers or it just has to wait until the block time has expired?

I cannot call vTaskSuspend because i do want the task to run on its own after x number of ticks as well. I want the interrupt as a way to wake the device earlier and resume normal operation.

Thanks

davedoors wrote on Monday, September 08, 2014:

Create a semaphore then replace the call to vTaskDelay() with a call to xSemaphoreTake() with the same block time. The interrupt can unblock the task by giving the semaphore, and the task will know if it was unblocked by an interrupt or by the delay expiring by testing the return value of xSemaphoreTake(). Here is an example (at the bottom) http://www.freertos.org/a00124.html

mayank15 wrote on Monday, September 08, 2014:

Great i will take a look
Thanks