關於DSP28377D 中斷配置流程
2016/12/9
DSP系統v118 調試過程中出現了添加天線配置函數後,系統定時器無法使用的現象,猜測是因爲天線配置模塊影響了定時器的開啓
DSP的中斷過程流程 :
外設產生中斷的流程:
1、中斷鎖存至PIE的中斷標誌及存器的第x組第y通道 : PIEIFRx.y
2、如果PIEIERx.y設置爲有效,那麼終端將被傳遞至後一級
3、如果PIEACK.x標誌位被清除,那麼中斷傳遞至下一級,並將PIEACK.x置位1
4、中斷鎖存至IFR.X中
5、如果IER.x有效,中斷傳輸至下一級
6、如果INTM清零,那麼CPU收到中斷。
7、後端的中斷則開始繼續傳遞
8、cpu保存當前狀態至stack
9、IFR.X 和 IER.X 被清除,INTM置位,EALLOW被清除
10、cpu從PIE獲取中斷地址,並且PIE.PIEIFRX.Y清除
11、cpu執行中斷
配置和是能中斷過程 :
1、靜止全局中斷(禁止cpu中斷接受)
2、是能PIE通過設置ENPIE位在PIECTRL寄存器中
3、配置和定位中斷向量表;並使能PIE如下表所示
4、設置合適的PIEIERX,給PIE組和通道賦值
5、使能CPU IER是能cpu接受中斷
6、在外設中是能中斷
7、是能全局中斷EINT OR CLRC INTM
實例 :
1、使用TI dsp 28377d 的定時器列程
第一步 : 關閉全局中斷使能 DINT:
第二步 : 禁止PIE使能,並且清除PIE中所有的中斷標誌以及中斷表設置
第三步 :關閉CPU 的中斷使能
第四步 : 初始化PIE VECTOR並且使能PIE
第五步 :外設的中斷配置
第六步 : 使能CPU的第x組中斷接受使能
第七步 : 打開PIE對應的x組y通道接受使能
第八步 : 打開全局中斷使能
2、使用v118版程序中斷配置過程(修改之後的)
第一步 初始化piectr;其中已經包括語句DINT(關閉全局中斷過程)
第二步 關閉PIE中斷功能;通過設置PIRCTR.BIT.ENPIE = 0來實現,
第三步 清空中斷設置(即PIEIER.X PIEIFR.X中原來的配置值);
第四步 清空中斷列表,並且使能PIE功能(通過設置PIRCTR.BIT.ENPIE = 1來實現 )
第五步 清空CPU中斷接受組
第六步 配置定時器的中斷選項
第26 - 30行爲配置中斷入口地址
第42 - 44行爲配置CPU響應中斷組(其中TIMER0是通過第PIEIER1 . 7來鏈接到PIE上的,所以CPU按照分組響應中斷,顧此處的IER |= M_INT1就是這個意思);
第52行表示了 我需要使能PIEIER1.7通道;是因爲TIMER0的中斷響應鏈路是通過PIE的第一組,第7個通過來連通的。
第七步 配置DMA中斷和SPI_TX / SPI_RX 中斷
第299 - 第302行配置DMA中斷響應地址
第312 - 第313行:其中DMA_CH5和DMA_CH6是通過PIEIER7.5和PIEIER7.6 鏈接到PIE上的;所以首先需要使能
IER |= M_INT7 需要使能第7組通道,讓CPU能夠響應; IER |= M_INT6是因爲SPI_TX/SPI_RX的中斷是連接到PIEIER6.1和PIEIER6.2上的;所以也需要使能;
第315 - 第316則是分別配置使能DMA_CH5 / DMA_CH6通道的使能
第八步 打開全局中斷使能
總結 :
設置中斷的過程一般如下 :
第一步 : 關閉全局中斷(DINT)
第二步 :關閉PIE功能,通過設置PIECTR.BIT.ENPIE = 0;來實現
第三步 :清空PIEIER 和PIEIFR寄存器;用以清除所有的cpu中斷響應組
第四步 : 清空中斷向量表,即清空所有的中斷地址表
第五步 :關閉CPU中斷響應;cpu寄存器中也有兩個寄存器用於設置中斷;即IER個IFR;全部置位爲0即可;
第六步 : 設置外設的中斷觸發 :
1)配置中斷函數地址
2)打開PIE中斷通道組即使能PIEIERX.Y = 1;
3)配置CPU的中斷寄存器以打開cpu對中斷的響應即IER |= M_INTX
第七步 : 打開全局中斷使能 EINT / ERTM
中斷配置的位置發生變化是有可能影響中斷的觸發的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.