系統初始化的時候在預設的系統初始化函式 systeminit 函式裡面已經初始化 apb1 的時鐘為 2 分頻,
所以 apb1 的時鐘為 36m。當 apb1 的時鐘分頻數為 1 的時候,tim2~7 的時鐘為 apb1 的時鐘,而如果 apb1 的時鐘分頻數不為 1,那麼 tim2~7 的時鐘頻率將為 apb1 時鐘的兩倍。因此, tim3 的時鐘為 72m。
tout= ((arr+1)*(psc+1))/tclk;
其中:tclk:tim3 的輸入時鐘頻率(單位為 mhz)。
tout:tim3 溢位時間(單位為 us)。
tim1 & tim8為高階定時器,掛載在apb2上。
下面以tim3為例講訴庫函式下定時器中斷的配置。
void tim3_init(u16 arr,u16 psc) //arr過載計數週期 psc分頻係數
void tim3_irqhandler(void) //中斷服務函式
}
tim_getitstatus 函式中會先判斷這種中斷是否使能,使能了才去判斷中斷標誌位,而tim_getflagstatus 直接用來判斷狀態標誌位。
在main函式中呼叫tim3_init(4999,7199);
tout= ((4999+1)*( 7199+1))/72=500000us=500ms。
所以tim3溢位時間週期為500ms。
定時器中斷
tmod 0x01 th0 65536 50000 256 tl0 65536 50000 6 ea 1 et0 1 tr0 1 void timer0 interrupt 1 ea 1 開總中斷允許 et0 1 開定時器0允許 tmod 0x01 定時器選擇軟體啟動,工作方式為1 th0 6553...
定時器 中斷
1 實現電視劇集中的10s定時炸彈功能 炸彈炸了用蜂鳴器模擬 include unsigned char code smgduan 17 unsigned int ms,sec 10,s sbit p1 0 p1 0 void delay unsigned int n void isr timer0...
定時器中斷
stc89c52rc的微控制器自帶了三個定時器,t0,t1,t2。在sfr特殊功能暫存器中,給每個定時器都分配了兩個8bit的空間用於計數。也就是最多計數2的10次方。當這兩個八位的計數空間計數滿 也就是變為11111111 11111111 後就會觸發定時器中斷,執行相應中斷觸發後設定執行的 在s...