新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430 定時(shí)器中斷使用總結(jié)

        MSP430 定時(shí)器中斷使用總結(jié)

        作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
        最近兩天琢磨了下MSP430定時(shí)器,發(fā)現(xiàn)還是挺麻煩的,在這里把學(xué)習(xí)心得記錄下來(lái):在MSP430G2211上只有TIMER A中斷,所以在這里我們討論TIMER A ,TIMER B應(yīng)該和TIMER A差不多。 對(duì)于每一個(gè)定時(shí)器來(lái)說(shuō),它有兩個(gè)中斷,TIMERA0_VECTOR 和TIMERA1_VECTOR 。這兩個(gè)中斷何時(shí)被觸發(fā)呢?在MSP430中,TIMERA0_VECTOR在TACCR0寄存器溢出時(shí)被觸發(fā);而TIMERA1_VECTOR 在三個(gè)時(shí)候都可以被觸發(fā)(TACCR1 CCIFG、TACCR2 CCIFG,TAIFG只要這三個(gè)寄存器中的任何一個(gè)被置位了,TIMERA1_VECTOR 中斷就會(huì)被觸發(fā))。 顯然,這樣就會(huì)有一個(gè)問(wèn)題:既然三個(gè)寄存器中的任何一個(gè)被置位了 都會(huì)產(chǎn)生中斷,那么用戶如何區(qū)分這三種中斷呢?在MSP430中提供了一個(gè)TAIV寄存器,在響應(yīng)TIMERA1_VECTOR 時(shí)我們?nèi)ゲ榭碩AIV寄存器中的值就能得到當(dāng)前是誰(shuí)產(chǎn)生了中斷。代碼如下:

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

        本文引用地址:http://www.104case.com/article/201611/316284.htm

        switch(TAIV)
        {
        case 2:
        。。。。
        break;
        case 4:
        。。。。
        break;
        case 10:
        。。。。
        break;
        } 關(guān)于TAIFG這個(gè)標(biāo)記,很多人認(rèn)為是定時(shí)器溢出的中斷,所以很多人把TAIFG標(biāo)記和TACCR0的中斷認(rèn)為是一個(gè)東西,但是仔細(xì)看430的用戶手冊(cè)你會(huì)發(fā)現(xiàn),TAIFG標(biāo)記并不一定是定時(shí)器溢出時(shí)才會(huì)被置位!



        關(guān)鍵詞: MSP430定時(shí)器中斷使

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 台州市| 闻喜县| 乐亭县| 平舆县| 隆安县| 宁城县| 石棉县| 城市| 高尔夫| 来安县| 南平市| 栾川县| 阳江市| 广宁县| 南昌市| 宁都县| 高碑店市| 东港市| 赤峰市| 天峻县| 仁化县| 海宁市| 奉新县| 山东| 遂平县| 石楼县| 揭东县| 邮箱| 霍邱县| 印江| 常山县| 团风县| 洛扎县| 丹阳市| 镇远县| 富平县| 晋江市| 池州市| 吴江市| 获嘉县| 成武县|