[英]FreeRTOS task not resuming
我正在使用ARM Cortex-M4微控制器通過FreeRTOS開發應用程序。
對於精確的計時,我想使用基於中斷的計時器。 中斷具有適當的優先級,因此它應該能夠調用FreeRTOS API。 ISR被定期調用,並且應像給定代碼中那樣喚醒任務:
/* This function is executed by the task I'd like to resume */
void hello_task() {
while (1) {
vTaskSuspend(task);
printf("Tick\n");
}
}
/* The ISR is called by an interrupt about 200 times per second */
void Timer_IRQHandler() {
CLEAR_INTERRUPT_FLAG();
xTaskResumeFromISR(task);
}
ISR已正確執行,但此后任務無法恢復。 有人對此行為有解釋嗎?
謝謝!
閱讀xTaskResumeFromISR()的文檔 。 它告訴您不要做什么。
直接執行任務通知提供了執行您描述的最佳方法(最輕便,最有效)。 在下一頁上有一個有效的示例: http : //www.freertos.org/RTOS_Task_Notification_As_Counting_Semaphore.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.