143 STM32F407 簡單的週期性任務排程

2021-09-27 10:16:21 字數 698 閱讀 1387

前面做了乙個rtc的例程,在main函式的while迴圈中通過計數器累加做了乙個簡單的延時間隔。但是從列印的效果看,不是很精準。接下來實現乙個稍微精準一點的任務排程。

其實,像這麼少的任務量,直接跑個中斷isr也就可以了,畢竟是學習例程。如果是應用,自然還是os或者排程器做乙個更好的管理。

之前也實現了systick,其實基於這個,簡單的任務排程一下子就做的出來。systick本身的handler可以簡單考慮為乙個1ms的task,做乙個計數器就可以實現1000ms的排程。之後,我可以利用這個1000ms的排程列印一下rtc的時間。

void hal_systick_callback(void)

systick_counter_1ms++;

}void task_1000ms(void)

void hal_inctick(void)

其中,用於測試的rtc列印**:

從輸出結果看,現在的準確度比之前好多了,至少沒有出現重複輸出的現象。後續,改進的方案我不再考慮簡單的排程器了,直接考慮使用os。這樣,也能夠順利的開啟新的學習篇章。

完整的參考**:

基於stm32f407建立stm32F427工程

分為三個部分 1.啟動檔案 2.fwilib 包含兩個資料夾inc和src。src裡面是stm32資源的c檔案,inc則是32資源的h檔案 3.user這也是我不太理解的部分 ddbugconfig只包含了用於debug的初始化,則是f4的系統檔案。我是在f407的基礎上改的 總的來說 1.改了晶元...

stm32F407的Systick的問題

最近買了一款stm32f407zgt6的核心板,毫不猶豫地寫了乙個用定時器點亮led燈的程式 由於程式比較簡單就不貼上來了 在進行1秒閃爍功能實現時,明顯發現了led的閃爍時間不對,剛開始是拿手機進行簡單的計時,結果顯示的是大約3秒的延時 測了10秒亮了兩次 在仔細檢查 後,確定不是 問題 因為 是...

STM32F407上除錯freeRTOS問題

是在正點原子的阿波羅stm32f429開發板上的例子改來的,他們的編譯沒有問題,我編譯時出現如下問題 定位到出錯的地方,是 再追 configmax syscall interrupt priority 的定義是 define configmax syscall interrupt priority...