UCOSII 使用空閑任務的計數值(OSIdleCtr)來實現CPU使用率的統計,首先統計一個固定時間內的計數值保存下來為 (MAX),然後再開啟一個固定的時間段,當時間到達時得到另外一個(OSIdleCtr)的計數值保存為(ctr)。在這一段時間中,當運行用戶任務時空閑任務因為優先順序低無法執行那麼 ...
UCOSII 使用空閑任務的計數值(OSIdleCtr)來實現CPU使用率的統計,首先統計一個固定時間內的計數值保存下來為 (MAX),然後再開啟一個固定的時間段,當時間到達時得到另外一個(OSIdleCtr)的計數值保存為(ctr)。在這一段時間中,當運行用戶任務時空閑任務因為優先順序低無法執行那麼OSIdleCtr無法計數,只有無用戶任務時空閑任務執行計數值計數。最後CPU使用率就為1-ctr/MAX.。
其中固定的時間最終是使用系統節拍中斷來實現。
源碼中發現問題:在第一次統計固定時間計數值OSIdleCtr大小後,OSIdleCtr並未歸零,這回導致第一次計算的CPU使用率為負值。