在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC16位單片機CAN(5)中斷

            PIC16位單片機CAN(5)中斷

            作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
            CAN數(shù)據(jù)的接收使用中斷來處理。ECAN 模塊會產(chǎn)生三種不同中斷,每種中斷都具有自己的中斷向量、中斷允許控制位、中斷狀態(tài)標志和中斷優(yōu)先級控制位。這些中斷是:
            ? CiTX——ECAN 發(fā)送數(shù)據(jù)請求
            ? CiRX——ECAN 接收數(shù)據(jù)就緒
            ? Ci——ECAN 事件中斷
            具體這三種中斷的意義就不說了,看手冊就行了。我使用的是事件中斷也就是當成功接收報文并裝入一個接收緩沖區(qū) (報文緩沖區(qū) 0 至 31)時產(chǎn)生中斷。
            中斷算是比較簡單的,看一下初始化代碼:
            /* Enable ECAN1 Interrupt */
            void Interrupt_Init(void)
            {
            INTCON2bits.GIE = 1;//使能全局中斷
            INTCON1bits.NSTDIS = 0;//使能中斷嵌套
            IPC8bits.C1IP=6;//ECAN1 事件中斷優(yōu)先級 6
            IFS2bits.C1IF=0;//ECAN1 事件中斷標志狀態(tài)位
            IEC2bits.C1IE = 1;//ECAN1 事件中斷允許位
            // C1INTEbits.TBIE = 1;
            C1INTEbits.RBIE = 1;//接收緩沖區(qū)中斷允許位
            }
            再看中斷處理函數(shù)代碼:
            void __attribute__((__interrupt__,no_auto_psv))_C1Interrupt (void)
            {
            IFS2bits.C1IF = 0; // clear interrupt flag ECAN1 事件中斷標志狀態(tài)位
            if(C1INTFbits.TBIF)
            {
            C1INTFbits.TBIF = 0;
            }
            if(C1INTFbits.RBIF)//接收緩沖區(qū)中斷標志位
            {
            // read the message
            if(C1RXFUL1bits.RXFUL1==1)//接收緩沖區(qū) n 滿位
            {
            // rx_ecan1message.buffer=1;
            C1RXFUL1bits.RXFUL1=0;
            }
            // rxECAN1(&rx_ecan1message);
            C1INTFbits.RBIF = 0;//接收緩沖區(qū)中斷標志位清0
            Nop();
            Nop();
            }
            }
            中斷處理函數(shù)的寫法可以參考文檔的第六章,中斷的示例代碼。_C1Interrupt代表是CAN1事件中斷,這個名稱必須看編譯器的說明文檔,在頭文件里可能是找不到的。MPLAB?XC16 C COMPILER USER’S GUIDE 里面的第十一章就是說的中斷向量的名稱寫法。


            關(guān)鍵詞: PIC16位單片機中

            評論


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

            關(guān)閉