[ZLG-ARM] UC/OS-II 无法屏蔽串口中断问题 1138开发板

[复制链接]
 楼主| YOUJIM 发表于 2009-3-3 10:22 | 显示全部楼层 |阅读模式
用的是已经移植好的UCOS工程模板,在调用&nbsp;OS_ENTER_CRITICAL();&nbsp;&nbsp;进入临界段执行后,当串口发出中断时,依然转到串口中断服务函数。<br /><br />难道不能屏蔽硬件中断?&nbsp;&nbsp;<br /><br />OS_ENTER_CRITICAL();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//进入临界段<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disp_Imgg();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />OS_EXIT_CRITICAL();<br /><br />此法不行,我就临时关闭串中断UARTDisable(UART1_BASE);果然在进入Disp_Imgg()时不会跳转到中断服务函数中,但是当执行Disp_Imgg()后,启用串口中断,依然保留着在执行Disp_Imgg()时间内的中断,等于延时了中断的到来,这也是想不明白的。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntDisable(UART1_BASE);&nbsp;&nbsp;&nbsp;&nbsp;//关闭串口中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disp_Imgg();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntEnable(UART1_BASE);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />//中断服务函数<br /><br />void&nbsp;&nbsp;UART1_ISR(void)<br />{&nbsp;&nbsp;//OSIntEnter();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;n&nbsp;&nbsp;=&nbsp;&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;buf[UART1_RX_MAX+1];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;UARTIntClear(UART1_BASE&nbsp;,&nbsp;UART_INT_RX&nbsp;|&nbsp;UART_INT_RT);<br />&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;&nbsp;=&nbsp;&nbsp;UARTCharGet(UART1_BASE);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;c&nbsp;&nbsp;==&nbsp;&nbsp;'\r'&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf[n]&nbsp;&nbsp;=&nbsp;&nbsp;'\0';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;=&nbsp;&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART_Puts(&quot;THEBUF++\r\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART_Puts(buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WhereID(buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART_Puts(&quot;--buzzer....\r\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;n&nbsp;&nbsp;&lt&nbsp;&nbsp;UART1_RX_MAX&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;isprint(c)&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf[n++]&nbsp;&nbsp;=&nbsp;&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART_Puts(&quot;THEN++\r\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;//&nbsp;OSIntExit();<br />}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

12

帖子

0

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

8

主题

12

帖子

0

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