不太理解uart0.c中的UART0Getch(void)函数。 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; }
OS_ENTER_CRITICAL() 这条语句是关闭中断意思,如果这时还没接收到数据,又怎么能进入中断接收到中断发送信号量呢?
|