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
根据下图3对中断使能寄存器IE进行配置
IE = 0x90; //允许总中断中断,串口0中断
串口1中断使能寄存器未在IE中,而在EIE1扩展寄存器中,参照下图4对串口1中断进行配置
set_ES_1;//开启串口1中断使能
N76E003提供4级中断优先级,根据下图5,我将串口0配置为了第二优先级,将串口1配置为了第三优先级,第一优先级给外部中断1使用,此处不表
set_PSH;//设定串口0设为第二优先级 clr_PS;//开启此处,会造成串口1无法中断 clr_PSH_1;//设定串口1为第三优先级 set_PS_1;
最后发现造成串口1无法中断的原因,就是开启了串口0的第二优先级,屏蔽相关代码后解决。造成原因尚不明确,最后建议大家在使用串口1时,如果出现无法中断的问题,可以考虑从优先级和nu_link仿真器两方面下手。
|