新聞中心

        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標記并不一定是定時器溢出時才會被置位!



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 禹城市| 德钦县| 汶川县| 和平区| 英吉沙县| 紫金县| 沧州市| 尤溪县| 青海省| 将乐县| 大足县| 扎囊县| 武定县| 西宁市| 宜宾县| 华宁县| 昌吉市| 神池县| 白河县| 衡东县| 武义县| 大同县| 湄潭县| 鄄城县| 翁牛特旗| 吉隆县| 黑龙江省| 呼玛县| 开封市| 伽师县| 乌兰察布市| 卓尼县| 阿拉善盟| 甘孜县| 武安市| 济宁市| 夹江县| 平昌县| 梅州市| 威海市| 波密县|