UC/OS-II 无法屏蔽串口中断问题 1138开发板
[复制链接]
用的是已经移植好的UCOS工程模板,在调用 OS_ENTER_CRITICAL(); 进入临界段执行后,当串口发出中断时,依然转到串口中断服务函数。
难道不能屏蔽硬件中断?
OS_ENTER_CRITICAL(); //进入临界段
Disp_Imgg();
OS_EXIT_CRITICAL();
此法不行,我就临时关闭串中断UARTDisable(UART1_BASE);果然在进入Disp_Imgg()时不会跳转到中断服务函数中,但是当执行Disp_Imgg()后,启用串口中断,依然保留着在执行Disp_Imgg()时间内的中断,等于延时了中断的到来,这也是想不明白的。
IntDisable(UART1_BASE); //关闭串口中断
Disp_Imgg();
IntEnable(UART1_BASE);
//中断服务函数
void UART1_ISR(void)
{ //OSIntEnter();
static unsigned short n = 0;
char c;
char buf[UART1_RX_MAX+1];
UARTIntClear(UART1_BASE , UART_INT_RX | UART_INT_RT);
c = UARTCharGet(UART1_BASE);
if ( c == '\r' ) {
buf[n] = '\0';
n = 0;
UART_Puts("THEBUF++\r\n");
UART_Puts(buf);
WhereID(buf);
UART_Puts("--buzzer....\r\n");
} else {
if ( n < UART1_RX_MAX ) {
if ( isprint(c) ) {
buf[n++] = c;
UART_Puts("THEN++\r\n");
}
}
}
// OSIntExit();
}
请大家帮忙解决,谢谢!
|