pit定時器(periodic interrupt timer),也叫做週期性中斷定時器(反正我是這麼翻譯的),是乙個32位遞減計數器,每個時鐘週期減1。與普通的定時器相比,它只能遞減計數,而不能向上計數,普通的定時器,相對高階一點的能向上或者向下計數,甚至再高階一點的可以產生pwm等等。而它就只能週期計數。但是不要小看它,它最大的作用就是為其它外設提供週期訊號。這聽起來像廢話,普通定時器不行嗎?當然行,但是普通定時器需要重啟計數器才能改變計數週期,而pit定時器可以不需要重新啟動(其實就是重新初始化)就可以改變計數週期。典型的應用就是pit+adc,adc週期性採集255(或者更大)的訊號資料,通過fft(快速傅利葉變換)處理,得到一段新的訊號,這是很常見的,特別是做混合訊號處理的時候。
描述一下特性吧:
由圖可知,pit定時器的時鐘**於外部,至於外部選擇哪個時鐘源,這個得看自己配置需求了。而我選擇的是osc_clk提供的時鐘源。
步入正題,用sdk配置pit:
首先初始化pit,記得新增對應的.c和.**件,**如下:
void
pit_init
(uint8_t pit_chn,uint32_t reload)
為了方便,寫成通用型的了。
初始化之前,需要寫好中斷配置:
static
void
pit_nvic_config
(void
)
然後編寫對應的中斷服務函式:
void
pit_irqhandler
(void
)elseif(
pit_getstatusflags
(pit, kpit_chnl_1)
)}
我這裡只用了兩個通道的pit定時器,所以在中斷中只做了兩次判斷。
最後得到的效果是這樣的,沒做啥,就驗證是否進入了中斷。
mysql工具定時器 mysql的定時器
mysql定時器是系統給提供了event,而oracle裡面的定時器是系統給提供的job。廢話少說,下面建立表 create table mytable id int auto increment not null,name varchar 100 not null default introduc...
定時器的使用
為了模擬翻頁場景 為了測試記憶體是否洩露 需要用定時任務重新整理介面。寫了個小例子。一上來是空白頁,3秒鐘後顯示第1頁,以後間隔3秒,頁號增加,直到第5頁。首先,在controlller標頭檔案中增加 nstimer timer 定時器變數。在實現 中建立乙個頁號變數 import list dem...
定時器的比較
一 資料結構 核心資料結構為timer wheel 其核心資料結構為 define tvn bits config base small?4 6 define tvr bits config base small?6 8 define tvn size 1 define tvr size 1 def...