簡體   English   中英

FreeRTOS任務未恢復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM