周立功开发板中间件之串口驱动中,串口接收、发送部分中有一个过程: uint8 UART0Getch(void) { uint8 err;
OS_ENTER_CRITICAL(); /*关中断*/ if ((U0LSR & 0x00000001) == 0) { /* 没有收到数据 */ U0IER = U0IER | 0x01; /* 允许接收中断 */ OSSemPend(Uart0Sem, 0, &err); /* 等待接收数据 */ } err = U0RBR; /* 读取收到的数据 */ OS_EXIT_CRITICAL(); /*开中断 return err; }
过程中开始关IRQ中断OS_ENTER_CRITICAL();然后等待中断返加的信号量UartSem,我不解的是IRQ关中断后怎么还可以接收到串口中断信号?哪位大侠给指点一下,谢谢了。
|