新聞中心

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

        MSP430 定時器中斷使用總結!

        作者: 時間:2016-11-20 來源:網絡 收藏
        最近兩天琢磨了下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://www.104case.com/article/201611/318958.htm

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



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 蓬溪县| 福清市| 白河县| 南皮县| 西乌| 嫩江县| 中山市| 辽宁省| 两当县| 双鸭山市| 库车县| 高淳县| 兴化市| 五莲县| 淄博市| 庆元县| 绥化市| 武安市| 昔阳县| 南木林县| 两当县| 梓潼县| 长汀县| 通河县| 九龙城区| 连平县| 福建省| 科尔| 威海市| 津南区| 宣城市| 德保县| 曲沃县| 忻城县| 康马县| 湾仔区| 凤山市| 兰溪市| 当涂县| 临沭县| 老河口市|