RT1052的PIT定時器

2021-09-29 17:23:57 字數 1110 閱讀 3672

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...