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

N76E003双串口中断配置、问题及解决方法_第1张图片

串口配置

根据下图2,我们可得知串口0中断号为4,串口1中断号为15
N76E003双串口中断配置、问题及解决方法_第2张图片

根据下图3对中断使能寄存器IE进行配置
IE = 0x90; //允许总中断中断,串口0中断
N76E003双串口中断配置、问题及解决方法_第3张图片

串口1中断使能寄存器未在IE中,而在EIE1扩展寄存器中,参照下图4对串口1中断进行配置
set_ES_1;//开启串口1中断使能
N76E003双串口中断配置、问题及解决方法_第4张图片

N76E003提供4级中断优先级,根据下图5,我将串口0配置为了第二优先级,将串口1配置为了第三优先级,第一优先级给外部中断1使用,此处不表
set_PSH;//设定串口0设为第二优先级 clr_PS;//开启此处,会造成串口1无法中断 clr_PSH_1;//设定串口1为第三优先级 set_PS_1;
N76E003双串口中断配置、问题及解决方法_第5张图片

最后发现造成串口1无法中断的原因,就是开启了串口0的第二优先级,屏蔽相关代码后解决。造成原因尚不明确,最后建议大家在使用串口1时,如果出现无法中断的问题,可以考虑从优先级和nu_link仿真器两方面下手。

以上内容,均是本人在调试过程中遇到的问题,如有错误之处,还请大家指出,也欢迎大家就N76E003的相关问题进行讨论,希望能帮助大家。转载请注明出处,谢谢。

你可能感兴趣的:(N76E003,N76E003,单片机,学习)