3245|2

44

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

UC/OS-II 无法屏蔽串口中断问题 1138开发板 [复制链接]

用的是已经移植好的UCOS工程模板,在调用 OS_ENTER_CRITICAL();  进入临界段执行后,当串口发出中断时,依然转到串口中断服务函数。

难道不能屏蔽硬件中断?  

OS_ENTER_CRITICAL();        //进入临界段
      
        Disp_Imgg();  
         
OS_EXIT_CRITICAL();

此法不行,我就临时关闭串中断UARTDisable(UART1_BASE);果然在进入Disp_Imgg()时不会跳转到中断服务函数中,但是当执行Disp_Imgg()后,启用串口中断,依然保留着在执行Disp_Imgg()时间内的中断,等于延时了中断的到来,这也是想不明白的。

      
        IntDisable(UART1_BASE);    //关闭串口中断
        Disp_Imgg();
       IntEnable(UART1_BASE);   
      

//中断服务函数

void  UART1_ISR(void)
{  //OSIntEnter();
    static  unsigned short  n  =  0;
    char  c;
    char  buf[UART1_RX_MAX+1];

    UARTIntClear(UART1_BASE , UART_INT_RX | UART_INT_RT);
    c  =  UARTCharGet(UART1_BASE);

    if ( c  ==  '\r' ) {
        buf[n]  =  '\0';
        n  =  0;
         UART_Puts("THEBUF++\r\n");
        UART_Puts(buf);
        WhereID(buf);
        UART_Puts("--buzzer....\r\n");
    } else {
        if ( n  <  UART1_RX_MAX ) {
            if ( isprint(c) ) {
                buf[n++]  =  c;
                 UART_Puts("THEN++\r\n");
                 
            }
        }
    }
   
   // OSIntExit();
}



请大家帮忙解决,谢谢!

最新回复

OS_ENTER_CRITICAL()是与体系结构相关联的代码,你需要看看它的实体,是否真正将中断关闭.. 或者调试时,单步执行看看,cpsr的I位是否正确.  详情 回复 发表于 2009-4-2 10:25
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你能确定OS_ENTER_CRITICAL()这个函数执行了,听你说来是觉得有点怪怪的。
OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()可以用来保护应用程序中的临界代码;然而要特别小心,如果在调用一些如OSTimeDel()之类的功能函数之前关中断,应用程序将会死机;原因是任务被挂起一段时间,直到挂起时间到,但由于中断关掉了,时钟节拍中断一直得不到服务,显然所有的挂起类调用都有这样的问题,所以要特别小心。作为一条普遍适用的规则,调用UCOS-ii功能函数时,中断总是开着的。
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
OS_ENTER_CRITICAL()是与体系结构相关联的代码,你需要看看它的实体,是否真正将中断关闭..
或者调试时,单步执行看看,cpsr的I位是否正确.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表