uint8 UART0Getch(void) { uint8 err;
OS_ENTER_CRITICAL(); while ((U0LSR & 0x00000001) == 0) { /* 没有收到数据 */ U0IER = U0IER | 0x01; /* 允许接收中断 */ OSSemPend(Uart0Sem, 0, &err); /* 等待接收数据 */ } err = U0RBR; /* 读取收到的数据 */ OS_EXIT_CRITICAL(); return err; }
在OSSemPend的之前不是用OS_ENTER_CRITICAL();关中断了吗,那UART接收中断怎么进呢,难道在等待接收信号量切换到别的任务里打开了中断吗,那是那些语句呢,本人刚学UCOS操作系统,还不能理解,谢谢告之
|