關於低端微控制器的輪詢思想

2021-08-03 05:45:32 字數 1509 閱讀 1837

本次介紹的是一款hr7p201fhd,晶元20個腳,該晶元和普通的ic晶元類似,但是也有不同,國產,整合了觸控按鍵驅動程式,

可以看出該晶元的強大的價效比。

但是凡事有利有弊,既然將觸控按鍵的驅動程式嵌入微控制器,必然會加大微控制器的負荷。每次讀取按鍵都要包含一系列的濾波演算法等的處理,並還要對該值進行快速讀取。將讀取的值作為乙個外部介面,就是我們平時使用的按鍵處理了,怎麼處理都好說。但是他的讀取值掃瞄是真的很耗時間,導致做的時間時基很難做的精準,以1ms為時基,若直接放在main的大迴圈中,100ms的時基變成110ms都有可能,所以注定了將他們按鍵驅動函式,不能單純的放在while中,否則很難保證時基。

作業系統的輪詢思想,如果大家有了解的話,應該知道:它是對系統中的每個任務進行輪詢,每隔幾ms或幾十ms執行一次任務。任務在規定的時間內執行,看起來和直接放在普通的while迴圈沒有什麼區別,也能完成任務。其實跑作業系統和不跑作業系統的區別在什麼地方呢?都是執行任務,都是乙個晶振來確定時基,沒有什麼不同的。但是乙個指令到底是多長時間,一段**是多長時間,很多人都不會關心,而這恰恰是作業系統的產生的原因。

當你執行任務可能上百行甚至幾百行**卻只有幾百us的時間的時候,你有沒有想過真正執行的任務時間這麼短,那麼其他的時間微控制器在幹什麼?一般的普通低端微控制器時基都是以10ms等為單位的,有的時基是100ms甚至s為單位的。其實這都可以證明一件事:你的微控制器並未飽和,還有些資源可以開發,他還有時間可以幹其他的事,如果你想的話,可以對自己的程式進行整理,使自己的程式有條不紊,甚至達到精準。

那麼微控制器平時都在幹什麼呢?微控制器都在重複做沒有必要的掃瞄,比如乙個按鍵掃瞄可能10ms,掃瞄一次各個微控制器的埠就夠用了,因為你的按鍵消抖至少也是30ms以上,按鍵的埠掃瞄任務函式執行時間一般不超過100us的時間吧。而你將該任務直接放在while中輪掃,你就不是10ms掃一次,而是10ms掃瞄幾十次甚至上百次。如果將10ms掃一次算作必要任務,並在你的while中放個空閒任務來衡量你的系統的cpu使用率,你的cpu的使用率可能不超過10%。其他的任務執行作用和空閒任務一樣,空閒而已,對整個程式沒有任何意義。

所以當你定性地執行按鍵掃瞄,定性地執行任何其他任務函式,30ms執行一次按鍵掃瞄,60ms執行一次顯示掃瞄等等,將所有的任務時間量化,就接近作業系統的輪詢思想了,從程式執行上來看,你的程式具備了立體結構。重要性不同的任務執行次數應該是不一樣的,重要的任務會被一直呼叫了,而次要的會被較少的呼叫,這和實際也相符合。

系統的任務輪詢,可以從思想上來改變你的程式架構,但是它也有它的侷限性。比如對任務實時性任務不能做到及時的跳轉,雖然他可以根據任務的重要性來決定任務的執行次數,但是他卻不能中斷,不能在重要的任務來臨時,立即放棄當前的任務去執行重要的任務。即便是自己在給每個任務確定一定能的任務等級,但是不做中斷的話,不能將當前任務壓棧和儲存,也得等當前任務執行完之後,才能執行下乙個任務等級較高的任務。

感覺系統永遠要考慮的是時間和記憶體。時間越精準,要求越高。大部分的資料結果都是圍繞著記憶體來,步步發展的。(文中有些資料未被嚴格地驗證,但的確用示波器測過tm1629的傳送很多資料80位資料,也就是幾十us,看上去也是很長一段**呀,沒有等待的函式基本上都是us為單位的。)

關於51微控制器中斷

眾所周知,51微控制器共有5個中斷源,從高到低依次為p3.2引腳觸發的外部中斷0 定時器0觸發的中斷1 p3.3引腳出發的外部中斷1 定時器1觸發的中斷1 串列埠資料緩衝器tx rx中斷 下面附上中斷系統的組成原理圖 仔細觀察圖,我們發現,從最左邊的5個中斷源到完成一次中斷到最右邊需要經歷的有以下幾...

微控制器(微控制器)的中斷系統及應用

2.中斷暫存器 3.中斷處理流程 4.最重要的事 中斷是指 處理器cpu正在處理某件事情的時候,外部發生了某一事件 如定時器計時已到 請求cpu迅速去處理,cpu暫停當前的工作,轉去處理所發生的事件,處理完以後,再回到原來被中斷的地方,繼續原來的工作。實現這種功能的部件稱為中斷系統。它由4個與中斷有...

微控制器中段程式 微控制器程式的存放

1 對於燒錄在微控制器裡面的程式,程式的 段,data段,bss段,rodata段等都存放在微控制器的flash中。當微控制器上電後,初始化彙編 將data段,bss段,複製到微控制器的ram中,並建立好堆疊,開始呼叫程式的main函式。以後,便有了程式儲存器和資料儲存器之分,程式執行時從flash...