[ZLG-MCU] 请问为什么101接收一个字符要进入2次中断啊?

[复制链接]
 楼主| yeool 发表于 2007-1-21 16:14 | 显示全部楼层 |阅读模式
void&nbsp;UART0_ISR(void)<br />{<br />&nbsp;&nbsp;unsigned&nbsp;long&nbsp;ulStatus;<br />&nbsp;&nbsp;uint8&nbsp;temp=0;<br />&nbsp;&nbsp;&nbsp;ulStatus&nbsp;=&nbsp;UARTIntStatus(UART0_BASE,&nbsp;true);&nbsp;&nbsp;&nbsp;//读取已使能的串口0中断状态<br />&nbsp;&nbsp;UARTIntClear(UART0_BASE,&nbsp;ulStatus);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清除当前的串口0中断<br /><br />&nbsp;&nbsp;if((ulStatus&nbsp;&&nbsp;UART_INT_RX)&nbsp;||&nbsp;(ulStatus&nbsp;&&nbsp;UART_INT_RT))&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;UARTCharsAvail(UART0_BASE)&nbsp;==true)&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=&nbsp;&nbsp;&nbsp;(uint8)UARTCharNonBlockingGet(UART0_BASE)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QueueWrite(Uart0_Rec_Queue,temp&nbsp;);//FIFO中的数据入队列<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;ulStatus&nbsp;=&nbsp;UARTIntStatus(UART0_BASE,&nbsp;true);&nbsp;&nbsp;&nbsp;//读取已使能的串口0中断状态<br />}<br /><br /><br />我用keil调试,在串口中断里设定了一个断点,当接收到一个字符时产生了中断,然后我单步一直到最后读取的ulStatus为0,再单步,可是这时并没有跳出中断,而是又从串口中断程序开始的地方执行,这时读取的ulStatus一样为0,&nbsp;这样两次才能完成一次中断。<br />这是配套光盘的例程啊<br />
 楼主| yeool 发表于 2007-1-21 22:29 | 显示全部楼层

不知是keil软件还是Ulink有问题

好像断点放在靠近UARTIntClear(UART0_BASE,&nbsp;ulStatus);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />时就会进2次中断。<br />把断点放在中断的后面一点的语句上,就只进一次中断了。<br /><br />keil是盗版的。<br />ulink是网上买的<br /><br />我的keil&nbsp;&nbsp;
 楼主| yeool 发表于 2007-1-21 22:39 | 显示全部楼层

aaa

如果断点放在前面,不单步执行,全速执行也没有进2次中断的问题
zlgmcu 发表于 2007-1-22 09:06 | 显示全部楼层

我们使用keil仿真101的时候,用得是demo版.

  
 楼主| yeool 发表于 2007-1-22 10:11 | 显示全部楼层

aaa

哪中断中设置断点后单步执行有没有问题啊?
 楼主| yeool 发表于 2007-1-22 18:42 | 显示全部楼层

111

我用cross&nbsp;studio&nbsp;for&nbsp;arm&nbsp;+easyjtag调试5.3结的uart&nbsp;driver&nbsp;工程同样有问题啊,只要在串口接收中断中单步运行便会退不出中断。
zlgarm 发表于 2007-1-23 15:40 | 显示全部楼层

re:6楼

我用cross&nbsp;studio&nbsp;for&nbsp;arm&nbsp;+easyjtag调试5.3结的uart&nbsp;driver&nbsp;工程同样有问题啊,只要在串口接收中断中单步运行便会退不出中断。&nbsp;<br /><br />那是正常的,需要在单步是出不了中断程序,需要在非中断处理代码中设置断点即可以退出.<br /><br /><br />
 楼主| yeool 发表于 2007-1-23 15:56 | 显示全部楼层

???

请问zlgarm,为什么单步会出不了中断呢。但是在中断的末尾设置断点,再单步会出中断啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

171

帖子

0

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