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的相关问题进行讨论,希望能帮助大家。转载请注明出处,谢谢。

猜你喜欢

转载自blog.csdn.net/u014798590/article/details/82560796