FreeRTOS滴答
FreeRTOS需要有一個時鐘參照,并且這個時鐘不會被輕易打斷,所以最好選擇systick
為什么需要時間參照
就是在高優先級任務進入阻塞態后,也可以理解為進入delay()函數后,需要有一個時間參照,就是需要計時,看是否delay函數結束,這就是為什么需要systick。
上下文切換
上下文就是代碼的執行狀態(就是這段代碼有沒有執行過)
還有一些變量數據,比如a=1;這種變量。
任務的切換
當任務A需要切換時,就需要此刻保存任務A的上下文,就是數據,執行到哪一行等
那么,怎樣進行保存任務的這些數據呢?
我們都知道,任務都是在CPU中運行,而CPU中有許多寄存器,而在任務A執行的情況中,CPU中所有的值都為任務A的,
而每個任務都有一個屬于自己的任務棧。
所以,任務A在切換的途中,就會將自己所有在CPU中的數據都拷貝到任務棧中。
任務切換時,CPU中只保存任務的指針,而數據都拷貝在任務對應的棧中。
當任務被恢復時,CPU直接利用指針來查找相應的數據棧
后將數據恢復到CPU中。