这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ucos ucos串口问题

共2条 1/1 1 跳转至

ucos ucos串口问题

院士
2006-09-17 18:14:16     打赏
ucos ucos串口问题



关键词: 串口     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 usos2串口例程中有
        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();关中断
然后OSSemPend(Uart0Sem, 0, &err); 按理说应该死锁的,我看ucos文档说关了中断以后不能用pend操作
但是程序运行没错,请zlg解释下,谢谢 1: 对啊,怎么回事?高手来解释啊 2: 不知为什么频繁的开关中断?期待ZLG的回答。。。。 3: 这个问题,就在前几天还有,就在ARM版块找找……他们的解释是,任务接换后,在其它的任务中退出了临界段保护。 4: 这个是bug啊ospend没有死是因为正好信号量有效

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]