28335外部中斷的簡單介紹和配置


28335外部中斷基本特點

  1. 7個可屏蔽中斷源和1個不可屏蔽外部中斷源
  2. GPIO0-31可選的中斷源為XINT1(可屏蔽中斷),XINT2和XNMI(不可屏蔽中斷)
  3. GPIO32-GPIO63可選的中斷源為XINT3-7
  4. 外部中斷的觸發方式可選上升沿或下降沿觸發
  5. 外部中斷外設和其他外設不一樣,在中斷函數中只用清除PIE中斷即可不用清除外設中斷。

外部中斷配置過程

其實28335的外部中斷配置相對其他外設的配置來說比較簡單。不過需要注意XNMI和CPU定時器1中斷一起使用時,需要將其中斷的映射位置配置好。

  1. 首先將需要配置的GPIO端口配置為通用輸入端口。上拉不上拉,采樣次數和與不與系統時鍾同步都無所謂,不會影響中斷的配置。不過如果噪聲過大的話,建議使能上拉和選擇合適的輸入采樣濾波。這里以GPIO34為例,將其配置為上升沿觸發XINT3的中斷輸入源。下面所有寄存器的配置受到EALLOW的保護,因此需要解除保護在進行設置。
    GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; //相應端口配置為通用IO
    GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0; //輸入
    GpioCtrlRegs.GPBCTRL.bit.QUALPRD0 = 1; //輸入濾波采樣周期為2*1 Tsysclk(系統時鍾)
    GpioCtrlRegs.GPBQSEL1.bit.GPIO34 = 1; //三次采樣
    GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0; //使能內部上拉
  2. 將GPIO配置到響應的中斷源上。
    //下面這句話按手冊應該賦值為2,但是寫34也沒錯,想一想為什么?
    GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 34; //選擇34端口為外部中斷3中斷源
  3. 選擇觸發中斷的方式。
    XIntruptRegs.XINT3CR.bit.POLARITY = 1; //上升沿觸發
  4. 使能外部中斷
    XIntruptRegs.XINT3CR.bit.ENABLE = 1; //使能外部中斷
  5. 最后使能PIE中斷和CPU中斷,如果需要還可以重新定義中斷入口函數。
    PieCtrlRegs.PIEIER12.bit.INTx1 = 1; //使能PIE外部中斷3
    IER |= M_INT12; //使能第十二組CPU中斷
    PieVectTable.XINT3 = &Xint3_ISR; //從新定義中斷入口函數
  6. 上面基本上已經完成了外部中斷的配置,但是對於XNMI來說需要加入下面這句話,以防止CPUTimer1中斷連接到不可屏蔽中斷上。
    XIntruptRegs.XNMICR.bit.SELECT = 0; //Timer1連到int13,XNMI連接到NMI


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM