[技术问答] N76E003双串口中断配置、问题及解决方法

[复制链接]
1330|9
 楼主| 注销 发表于 2020-9-8 10:52 | 显示全部楼层 |阅读模式
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

70.jpg

串口配置

根据下图2,我们可得知串口0中断号为4,串口1中断号为15
70.jpg

根据下图3对中断使能寄存器IE进行配置
IE = 0x90; //允许总中断中断,串口0中断
70.jpg

串口1中断使能寄存器未在IE中,而在EIE1扩展寄存器中,参照下图4对串口1中断进行配置
set_ES_1;//开启串口1中断使能
70.jpg

N76E003提供4级中断优先级,根据下图5,我将串口0配置为了第二优先级,将串口1配置为了第三优先级,第一优先级给外部中断1使用,此处不表
set_PSH;//设定串口0设为第二优先级 clr_PS;//开启此处,会造成串口1无法中断 clr_PSH_1;//设定串口1为第三优先级 set_PS_1;
70.jpg

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


chenqianqian 发表于 2020-9-10 17:52 来自手机 | 显示全部楼层
感谢楼主分享。
liangshuang95 发表于 2020-9-10 18:03 来自手机 | 显示全部楼层
感谢分享学习
明天真的好 发表于 2020-9-11 09:09 | 显示全部楼层
N76E003这颗芯片,RXD_1、TXD_1为串口1,并且两个引脚也分别是仿真器的TICECLK、TICEDAT。所以无法在编译器中进行硬件仿真。
在官方例程uart1中,也有相关提醒
自己的灌饼 发表于 2020-9-11 09:14 | 显示全部楼层

N76E003双串口中断配置、问题及解决方法
最近在调试N76E003串口0,串口1中断时,发现当串口0开启中断后,串口1中断无法正常工作,下面详细说说自己的办法。(我的问题原因是中断优先级造成的,取消串口1中断优先级即可解决)
heimaojingzhang 发表于 2020-10-9 16:37 | 显示全部楼层
支持楼主一下
keaibukelian 发表于 2020-10-9 16:37 | 显示全部楼层
非常感谢楼主分享
labasi 发表于 2020-10-9 16:50 | 显示全部楼层
介绍的非常详细啊
paotangsan 发表于 2020-10-9 16:51 | 显示全部楼层
先收藏了 呵呵呵
renzheshengui 发表于 2020-10-9 16:53 | 显示全部楼层
楼主辛苦啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

1530

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部