3228|4

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

UC/OS-II 中断嵌套 [复制链接]

小弟新手,刚开始尝试编写中断嵌套,但是书上说得不太清楚,只说了OSIntEnter,OSIntExit等函数,具体的范例没有。我想知道,中断嵌套有哪些要注意的地方?系统如何判断中断的优先级,是否要设置中断优先级?

望予指教,谢谢。

最新回复

OSIntExit()做完了它的事情会把OSIntNesting减1的....中断优先级由你的应用决定,UC/OS-II里面不需要配置中断的优先级  详情 回复 发表于 2009-8-1 18:03
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
先看一个中断函数:
void SysTickHandler(void)
{
    OS_CPU_SR  cpu_sr;

    OS_ENTER_CRITICAL();        /* Tell uC/OS-II that we are starting an ISR  */
    OSIntNesting++;
    OS_EXIT_CRITICAL();

    OSTimeTick();               /* Call uC/OS-II's OSTimeTick()               */

    OSIntExit();
}

你可以搜索下OSIntNesting,好先只是在中断中有很多东西不能做吧!
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
中断优先级是按你应用需要确定的.
OSIntNesting 这个变量记录着当前的ISR的中断优先级,你进入ISR的时候,调用一次OSIntEnter(),这个函数会使OSIntNesting增加一(你可以不调用OSIntEnter(),直接对OSIntNesting进行增量),当你离开ISR的时候,调用OSIntExit(),这个调用很重要,如果OSIntNesting的值等于1,UC/OS-II内核要由此实现任务的调度.
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
我现在只会用一个中断函数的移植。如果牵涉到两个,怎么编写程序呢?譬如说KEY1按下触发中断,在中断中LED1闪亮;而当KEY2按下后又触发更高级的中断,它会触发UART发送。那请问程序的的大体框架应该怎么写呢?

下面是小弟自己的想法,望给予指点,谢谢。
void KEY1ISR()
{
    OS_ENTER_CRITICAL();      
    OSIntNesting++;
    OS_EXIT_CRITICAL();
   
    这里是执行代码 LED1亮

    OSIntExit();
}

void KEY2ISR()
{
    OS_ENTER_CRITICAL();      
    OSIntNesting++;
    OS_EXIT_CRITICAL();
   
    这里是执行代码 UART发送

    OSIntExit();
}
有个问题,OSIntNesting加了两次以后,退出ISR的时候,它自己会自动再减去2吗?
并且还应该设置中断优先级的吧,在哪个文件里可以设置中断优先级?怎么设置?
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
OSIntExit()做完了它的事情会把OSIntNesting减1的....中断优先级由你的应用决定,UC/OS-II里面不需要配置中断的优先级
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表