RT Thread 核心小細節

2021-09-29 20:41:56 字數 829 閱讀 7040

訊號量

郵箱訊號

排程中斷鎖

事件訊號量是根據初始值分層的,例如訊號量建立時初始值為2,那麼可以在不釋放訊號量的情況下被獲取兩次此訊號量。釋放一次訊號量訊號量的值(semaphore->value)就會加一,獲取一次訊號量的值就會減掉一,為零則不能獲取,被掛起。

使用if(rt_mb_recv(&mb,(rt_uint32_t*)&str,rt_waiting_forever == rt_eok))函式讀取郵件,讀完不會取走郵件。

目的是使執行緒接收到訊號軟中斷,中斷處理;

同樣乙個訊號只能軟中斷一次

排程關閉分層次

比如說:如果前面進去了4關閉排程,應該已經是第4層了;你就是退出一次,仍然在第3層,仍會在臨界區,不會排程,如果要實現退出至少要保證,進去和出去的次數一樣

防止當前執行緒被打斷關閉完中斷鎖一定要記得恢復,而且時間要短,並且不可以在沒有恢復中斷的時候再次關閉中斷鎖。

事件的使用比較靈活:可以實現邏輯與和邏輯或,同樣不要忘了,事件可以設定接收完後是否清除事件標誌

RT thread核心之事件

一 事件控制塊 在include rtdef.h中 ifdef rt using event flag defintions in event define rt event flag and 0x01 logic and define rt event flag or 0x02 logic or ...

RT Thread核心學習

一 概述 二 執行緒的組成 2.1 執行緒 入口函式 2.2 執行緒控制塊 2.3 執行緒棧 三 執行緒相關的api 3.1 執行緒的建立 3.2 狀態的切換 四 注意事項與補充 4.1 動態建立與靜態建立的優缺點比較?4.2 系統滴答時鐘頻率的選取 4.3 執行緒棧大小分配的小策略 4.4 執行緒...

核心入門(一) 初識RT Thread

三 rt thread原始碼檔案 四 工程檔案 rt thread是乙個嵌入式實時多執行緒作業系統,具有非常強的可伸縮能力 從乙個可以執行在arm cortex m0晶元上的極小核心,到中等的arm cortex m3 4 7系統,甚至是執行於mips32 arm cortex a系列處理器上功能豐...