數字通信
資料不大時,用全局變量作為公共資源,配合中斷通路,以信号量同步之。
資料大時,運用消息隊列機制,把記憶體資料塊作為内容緩沖區。
消息郵箱具有行為同步的功能,當雙方的執行頻度一樣時,消息郵箱很适合,此時的消息是通信雙方的局部變量。(注意,ISR應用static保護局部變量,否則它的局部變量會随其結束而消失)
發送一個字以内的短小消息時,可以利用消息郵箱機制,把資料僞裝成指針傳遞給其他任務。
消息隊列适合以下場合(需要緩沖功能):
1)、通信雙方至少有一方沒有穩定的執行周期;
2)、通信雙方的執行周期都不同。
a)、試用消息隊列需要定義一個消息指針數組,一個消息内容數組;
b)、如果消息内容簡短,可以不需消息内容數組(冒充指針法)。
串行通信
1)、相鄰兩次串行接收中斷的時間間隔必須大于系統死區時間;
2)、接收緩沖的空閑時間必須足夠存放在死區時間内接收的新資料。
(在滿足中斷間隔時間大于死區時間的前提下,将中斷條件設定為接收緩沖區的一半,即使死區時間接近中斷間隔時間,接受過程也是可靠的。)
——《基于嵌入式實時作業系統的程式設計技術》[周航慈] 書摘