N76E003雙串口中斷配置、問題及解決方法

N76E003雙串口中斷配置、問題及解決方法

最近在調試N76E003串口0,串口1中斷時,發現當串口0開啓中斷後,串口1中斷無法正常工作,下面詳細說說自己的辦法。(我的問題原因是中斷優先級造成的,取消串口1中斷優先級即可解決

完整工程模板在此下載
具體配置代碼可看我另一篇文章

由下圖1可以看到,N76E003這顆芯片,RXD_1、TXD_1爲串口1,並且兩個引腳也分別是仿真器的TICECLK、TICEDAT。所以無法在編譯器中進行硬件仿真。
在官方例程uart1中,也有相關提醒

!!! N76E003 UART1 pin also occupied by debug pin, please remove
Nu-link or not in debug mode to test UART1 function. External UART1
connect also disturb debug download

在這裏插入圖片描述

串口配置

根據下圖2,我們可得知串口0中斷號爲4,串口1中斷號爲15
圖2:中斷號

根據下圖3對中斷使能寄存器IE進行配置
IE = 0x90; //允許總中斷中斷,串口0中斷
圖3:IE寄存器

串口1中斷使能寄存器未在IE中,而在EIE1擴展寄存器中,參照下圖4對串口1中斷進行配置
set_ES_1;//開啓串口1中斷使能
圖4:EIE1寄存器

N76E003提供4級中斷優先級,根據下圖5,我將串口0配置爲了第二優先級,將串口1配置爲了第三優先級,第一優先級給外部中斷1使用,此處不表
set_PSH;//設定串口0設爲第二優先級 clr_PS;//開啓此處,會造成串口1無法中斷 clr_PSH_1;//設定串口1爲第三優先級 set_PS_1;
圖5:中斷優先線

最後發現造成串口1無法中斷的原因,就是開啓了串口0的第二優先級,屏蔽相關代碼後解決。造成原因尚不明確,最後建議大家在使用串口1時,如果出現無法中斷的問題,可以考慮從優先級和nu_link仿真器兩方面下手。

以上內容,均是本人在調試過程中遇到的問題,如有錯誤之處,還請大家指出,也歡迎大家就N76E003的相關問題進行討論,希望能幫助大家。轉載請註明出處,謝謝。