1. 程式人生 > 其它 >【FreeRTOS學習筆記】時間片

【FreeRTOS學習筆記】時間片

本節用於整理freertos中時間片的實現方式,以及測試程式的思路:

1.freertos中,由於遍歷就緒連結串列時,使用的是索引節點,並且在結束後會將索引指向下一個;

這樣每次遍歷就緒連結串列選取節點的時候,會輪流選取節點。這樣同優先順序平分就實現了。

有一個細節,每次時鐘中斷到來,都會啟動任務切換,那麼平分時間的精度其實就是時間片的大小。

2.測試程式該如何展示高優先順序獨佔、低優先順序平分CPU呢?

(1)建立幾個任務?優先順序如何?

  想要展示高優先順序獨佔,那麼前提是有兩種優先順序的任務,簡單設為1和2吧。

  想要展示低優先順序平分,前提是至少有兩個低優先順序任務。

  那麼就建立Task1和Task2為1優先順序任務,Task3為2優先順序任務;

(2)任務實體怎麼做,才能直觀地通過邏輯分析儀看出獨佔和平分?

  由於Task3的優先順序最高,只要它不阻塞,CPU就一定分給它,其他任務一定得不到CPU;

  所以獨佔在插入就緒連結串列和遍歷就緒連結串列的方式定下來時,已經實現了;

  為了能看到任務1和任務2在平分時間片,我們在Task3中,使用非阻塞延時:

  

  為了能看到在Task3進入延時時,Task1和Task2平分時間片,最簡單的方法是使用阻塞延時;

  這樣任務自身不讓出CPU,只等待SysTick到來時進行任務讓步;如下圖:

  

  

 3.最後,執行結果如下圖: