定時器驅動

2021-10-09 09:00:10 字數 671 閱讀 2081

想要每次進tick的時間相同如,每秒進100次tick:

tick想要100次/秒,那乙個tick就是1ms,而系統時鐘頻率是12 000 000 ;

12 000 000hz/100hz, 就是時鐘頻率除以tick頻率,翻譯過來就是每秒的時鐘滴答次數/每秒的tick次數等於乙個tick多少次時鐘滴答,

然後計算每秒有多少的納秒1s = 1 000 000 000ns,除以tick的頻率就是乙個tick多少ns,

乙個tick的 ns數除以乙個tick的時鐘滴答數就是乙個時鐘滴答多少ns

乙個tick的滴答數計算出來了是12 000 0把這個數寫進乙個計數器中,這個計數器在硬體中有乙個特定位置,叫counter,這個就叫定時器。

init中要做:在時鐘樹上查詢到hstimer是掛在ahb1bus的gateing上的,先把這個時鐘開啟這個gating有hstimer的gating clock,將此位置pass

設定分頻方式,,因為輸入晶振是24mhz而我們的時鐘頻率用的是乙個12mhz的時鐘,所以選擇2分頻,以及將可過載暫存器置為1,後面就是把counter的值寫到過載值,將定時器中斷使能以及定時器使能,就可以讓定時器工作了,

這個counter會根據系統時鐘的滴答做減一操作,每個滴答減一,當這個counter減到0時,進一次中斷服務程式並且這個counter將自行過載回初始值進行下一次的減一操作。

驅動中定時器例子

include include include include include include include include include include include include 包括timer.h標頭檔案 define second major 509 預設的second的主裝置號 s...

Linux驅動定時器相關

本文為我學習時所寫,非百分之百原創,望指出錯誤之處。參考資料 linux驅動之定時器 mod timer 核心定時器的使用 好幾個例子add timer linux核心高精度定時器hrtimer 使用例項 hrtimer的簡單使用 原理和實現 定時器被排程的函式肯定是非同步執行的,它類似於一種 軟體...

linux核心驅動之定時器

運用場景 1.初始化乙個驅動,經過一定的時間再執行乙個特殊動作 2.初始化乙個驅動,之後每隔一定的時間執行乙個特殊動作 定時器工作流程 a.建立timer,編寫定時器處理函式 b.為timer的expires data function賦值 c.呼叫add timer將timer加入列表 d.定時器...