久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430 定時器中斷使用總結

MSP430 定時器中斷使用總結

作者: 時間:2016-11-13 來源:網絡 收藏
最近兩天琢磨了下MSP430定時器,發現還是挺麻煩的,在這里把學習心得記錄下來:在MSP430G2211上只有TIMER A中斷,所以在這里我們討論TIMER A ,TIMER B應該和TIMER A差不多。 對于每一個定時器來說,它有兩個中斷,TIMERA0_VECTOR 和TIMERA1_VECTOR 。這兩個中斷何時被觸發呢?在MSP430中,TIMERA0_VECTOR在TACCR0寄存器溢出時被觸發;而TIMERA1_VECTOR 在三個時候都可以被觸發(TACCR1 CCIFG、TACCR2 CCIFG,TAIFG只要這三個寄存器中的任何一個被置位了,TIMERA1_VECTOR 中斷就會被觸發)。 顯然,這樣就會有一個問題:既然三個寄存器中的任何一個被置位了 都會產生中斷,那么用戶如何區分這三種中斷呢?在MSP430中提供了一個TAIV寄存器,在響應TIMERA1_VECTOR 時我們去查看TAIV寄存器中的值就能得到當前是誰產生了中斷。代碼如下:

#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{

本文引用地址:http://cqxgywz.com/article/201611/316284.htm

switch(TAIV)
{
case 2:
。。。。
break;
case 4:
。。。。
break;
case 10:
。。。。
break;
} 關于TAIFG這個標記,很多人認為是定時器溢出的中斷,所以很多人把TAIFG標記和TACCR0的中斷認為是一個東西,但是仔細看430的用戶手冊你會發現,TAIFG標記并不一定是定時器溢出時才會被置位!



評論


技術專區

關閉