求助UCOS的Uart0中断问题
程序结构式:产生接收中断,根据接收的数据,再发送数据,没有发送完,在产生发送中断,将数据发送完。
1.现在我的问题是只能进入1次接收中断,不能产生发送中断,所有的任务都不执行了。
2.但是如果将OSIntExit();注销,就可以进入发送中断,所有的任务都不能执行了。
到底是什么问题呢?
void IntUart0(void) //Uart0接收中断
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
OS_ENTER_CRITICAL();
OSIntNesting++;
OS_EXIT_CRITICAL();
ulStatus = UARTIntStatus(UART0_BASE, true); // 读取当前中断状态
UARTIntClear(UART0_BASE, ulStatus); // 清除中断状态
if((ulStatus&UART_INT_RT)||(ulStatus&UART_INT_RX))//接收超时中断, 接收中断
{
我的程序
}
else if (ulStatus&UART_INT_TX) // 发送中断
{
我的程序
}
else
{
}
OSIntExit();
}
|