FreeRTOS操作系統例程(4):調度鎖

1.調度鎖函數只是禁止了任務調度,并沒有關閉任何中斷

2.調度鎖開啟函數 vTaskSuspendAll 和調度鎖關閉函數 xTaskResumeAll 一定要成對使用

3.切不可在調度鎖開啟函數 vTaskSuspendAll 和調度鎖關閉函數 xTaskResumeAll 之間調用任何會引起任務切換的 API,比如 vTaskDelayUntil、vTaskDelay、xQueueSend 等


/*

*********************************************************************************************************

*? 函 數 名: vTaskLED

*? 功能說明: LED 閃爍

*? 形 參: pvParameters 是在創建該任務時傳遞的形參

*? 返 回 值: 無

* 優 先 級: 2

*********************************************************************************************************

*/

static void vTaskLED(void *pvParameters)

{

while(1)

{

vTaskSuspendAll(); /* 開啟調度鎖 */

printf("任務 vTaskLED 正在運行\r\n");

//xTaskResumeAll ();

if(!xTaskResumeAll()) /* 關閉調度鎖,如果需要任務切換,此函數返回 pdTRUE,否則返回 pdFALSE */

{

taskYIELD ();

}

bsp_LedToggle(2);

vTaskDelay(200);

}

}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Swift1> Swift和OC的區別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,136評論 1 32
  • lab4 是實現多處理器支持以及搶占式任務調度,exercize代碼見 這里。 1 多處理器啟動流程 1.1 多處...
    __七把刀__閱讀 4,694評論 0 4
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,882評論 0 38
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發此異常。 O...
    我想起個好名字閱讀 5,429評論 0 9
  • 我有一副 血紅色眼鏡 漆黑泛光的鏡片 常沾滿塵埃血絲 若不靜心擦拭 怎能看清世界?
    青竹青涵閱讀 241評論 2 5