定時(shí)器中斷是由單片機(jī)中的定時(shí)器溢出而申請(qǐng)的中斷。51單片機(jī)中有兩個(gè)定時(shí)器T0和T1。STM32中共有11個(gè)定時(shí)器。
一、定時(shí)器中斷是什么意思
定時(shí)器中斷是由單片機(jī)中的定時(shí)器溢出而申請(qǐng)的中斷。
51單片機(jī)中有兩個(gè)定時(shí)器T0和T1:
(1)TF0:定時(shí)器T0溢出中斷請(qǐng)求。當(dāng)定時(shí)器TO產(chǎn)生溢出時(shí),TO中斷請(qǐng)求標(biāo)志TF0置1,請(qǐng)求中斷處理。
(2)TF1:定時(shí)器T1溢出中斷請(qǐng)求。當(dāng)定時(shí)器Tl產(chǎn)生溢出時(shí),T1中斷請(qǐng)求標(biāo)志TF1置1,請(qǐng)求中斷處理。
Stm32共有11個(gè)定時(shí)器:
1、兩個(gè)高級(jí)定時(shí)器:TIM1、TIM8-------------------------APB2
2、四個(gè)通用定時(shí)器:TIM2~TIM5-------------------------APB1
3、兩個(gè)基本定時(shí)器:TIM6、TIM7-------------------------APB1
4、兩個(gè)看門(mén)狗
5、一個(gè)系統(tǒng)嘀嗒定時(shí)器(SysTick)
二、定時(shí)器中斷原理
所謂中斷就是程序執(zhí)行的正常的時(shí)候,出現(xiàn)了突發(fā)事件,CPU停止當(dāng)前的程序的執(zhí)行,轉(zhuǎn)去處理突發(fā)事件,處理完畢后又返回原程序被中斷的位置繼續(xù)執(zhí)行。
中斷可以被分為內(nèi)部中斷和外部中斷,內(nèi)部中斷的來(lái)源來(lái)自CPU內(nèi)部(軟件中斷指令,溢出,除法錯(cuò)誤等,例如操作系統(tǒng)從用戶(hù)態(tài)切換到內(nèi)核態(tài)需借助CPU內(nèi)部的軟件中斷),外部中斷的中斷源來(lái)自CPU外部,由外設(shè)提出請(qǐng)求。
中斷過(guò)程:一個(gè)完整的中斷傳送方式的處理過(guò)程應(yīng)包括中斷請(qǐng)求、中斷優(yōu)先權(quán)判別、中斷響應(yīng)、中斷處理和中斷返回等幾個(gè)步驟。
中斷源:
(1)INTO:外部中斷0請(qǐng)求,由P3.2引腳輸入。它有兩種觸發(fā)方式,通過(guò)IT0(TCON.O)來(lái)決定是電平觸發(fā)方式還是邊沿觸發(fā)方式。一旦輸入信號(hào)有效,則向CPU申請(qǐng)中斷,并且將中斷標(biāo)志IEO置1。
(2)INT1:外部中斷1請(qǐng)求,由P3.3引腳輸入。通過(guò)IT1(TCON.2)來(lái)決定是電平觸發(fā)方式還是邊沿觸發(fā)方式。一旦輸入信號(hào)有效,則向CPU申請(qǐng)中斷,并將中斷標(biāo)志IE1置1。
(3)TF0:定時(shí)器T0溢出中斷請(qǐng)求。當(dāng)定時(shí)器TO產(chǎn)生溢出時(shí),TO中斷請(qǐng)求標(biāo)志TF0置1,請(qǐng)求中斷處理。
(4)TF1:定時(shí)器T1溢出中斷請(qǐng)求。當(dāng)定時(shí)器Tl產(chǎn)生溢出時(shí),T1中斷請(qǐng)求標(biāo)志TF1置1,請(qǐng)求中斷處理。
(5)TI/RI:串行口發(fā)送/接收中斷請(qǐng)求。當(dāng)通過(guò)串行口發(fā)送或接收完一幀串行數(shù)據(jù)時(shí),串行口中斷請(qǐng)求標(biāo)志TI或RI置1,請(qǐng)求中斷處理。
三、定時(shí)器中斷程序流程
定時(shí)器工作的流程可以按照這個(gè)順序(以51為例用定時(shí)器0方式一產(chǎn)生50毫秒的定時(shí)):
1、確定使用哪個(gè)定時(shí)器,使用哪種方式,這一步通過(guò)TMOD設(shè)置,TMOD的低四位是設(shè)置定時(shí)器0的,高四位是用來(lái)設(shè)置定時(shí)器1的,其中的M0,M1是用來(lái)設(shè)置定時(shí)器工作在哪種方式,GATE一般用不要設(shè)置,C/T是選擇計(jì)數(shù)模式還是定時(shí)模式的,如:TMOD=0X01,就說(shuō)明定時(shí)器0工作在方式1。
2、接下來(lái)就要設(shè)置定時(shí)的時(shí)間,用定時(shí)器定時(shí)50毫秒,可以用這種方式TH0=(65535-50000)/256,TL0=(65535-50000)%256;可以這樣理解:因?yàn)檫@是定時(shí)器的初值,也就是說(shuō)計(jì)數(shù)脈沖就是在這個(gè)數(shù)的基礎(chǔ)上向上遞增,到達(dá)65535后就溢出產(chǎn)生中斷。
3、第三步打開(kāi)中斷,使用IE寄存器,首先打開(kāi)總中斷EA=1,這一步是所有中斷所必須的,然后打開(kāi)定時(shí)器0中斷,ET0=1。
4、這時(shí)準(zhǔn)備工作結(jié)束,啟動(dòng)定時(shí)器,使用TCON寄存器,TR0=1,實(shí)現(xiàn)了一個(gè)50毫秒的定時(shí)。
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635293 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3248瀏覽量
114800 -
定時(shí)器中斷
+關(guān)注
關(guān)注
0文章
49瀏覽量
11182
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論