这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 我的uC/OS-II,我的读书笔记之中断服务

共10条 1/1 1 跳转至

我的uC/OS-II,我的读书笔记之中断服务

院士
2013-03-19 14:35:59     打赏




我的uC/OS-II,我的读书笔记之中断服务


中断服务程序(ISR)是嵌入式应用系统获取各种事件的基本手段,而事件是实时性问题的讨论基础和时间计算的起点。理论上Cortex-M3内核支持1-240个,但是貌似目前厂商没有支持这么多的。

中断优先级,不同的中断服务程序安排了不同的优先级,在允许中断嵌套的情况下,最高优先级的中断总是能够得到及时响应。中断优先级安排原则如下:

紧迫性:触发中断的事件允许耽误的时间越短,设定的中断优先级越高。紧迫性为最高原则。

关键性:触发中断的事件越关键,设定的中断优先级越高。

频繁性:触发中断的事件发生越频繁,设定的中断优先级越高。频繁事件的间隔时间比较短,如果不及时处理则有可能遗漏。

快捷性:在前三项条件相近时,ISR处理越快捷,设定的中断优先级越高。当发生中断嵌套时,耗时短的ISR嵌套在耗时长的ISR中时,对耗时长的ISR的完成时间影响不明显;而反之则影响很大。

uC/OS-II中,操作系统对ISR进行了管理,其ISR代码的编写必须遵循一定的规则。下面我们以按键中断为例来看一下uC/OS-II系统下中断服务程序的结构:

Void ExInt3ISR(void)

{  OSIntEnter();  //调用进入中断服务函数

   OSSemPost(Sem);  //发送信号量

   Int3Clear();  //清除按键中断,以便下次再次响应按键中断

   OSIntExit();  //调用退出中断服务函数

}

上述代码包含了四 个必不可少部分:

1调用实时操作系统提供的进入中断服务函数,用来通知实时操作系统,以便系统掌握当前中断的嵌套深度。这里一定要注意:所有用户编写的ISR函数均必须在函数体的最前面加入调用OSIntEnter()函数的语句。

2ISR功能代码:此部分完成中断处理,但是这里系统不允许调用延时函数和可能被挂起的系统服务函数。

3、清除中断的标志位。

4、调用系统的退出中断服务函数,以实现抢占式实时操作系统的任务调度功能。

与中断相关联的任务的通信还需要详细分析,这里由于篇幅的问题暂时省略。带中断服务程序的uC/OS-II示例也会另帖奉上,敬请期待。





关键词: ucosii     笔记     中断服务    

菜鸟
2013-03-19 14:55:08     打赏
2楼
楼主又开始更新了 perfect

院士
2013-03-19 15:01:23     打赏
3楼
新版块,新景象~~

高工
2013-03-19 19:04:21     打赏
4楼
新年新气象,版主大人加油。。。。

高工
2013-03-19 19:40:03     打赏
5楼

Void ExInt3ISR(void)

{  OSIntEnter();  //调用进入中断服务函数

   OSSemPost(Sem);  //发送信号量

   Int3Clear();  //清除按键中断,以便下次再次响应按键中断

   OSIntExit();  //调用退出中断服务函数

}


这样,好像看明白了点什么。。。。

原来可以这么处理中断的,将跑出OS的东西从新拉回来


高工
2013-03-19 20:10:43     打赏
6楼
学习啊 谢谢啦!

院士
2013-03-19 22:22:43     打赏
7楼
对,在进入中断一开始就保存现在cpu的寄存器现场,然后 退出时再根据任务调度的情况而达到任务调度的作用

高工
2013-03-26 23:45:48     打赏
8楼
跟着楼主学OS。。。

高工
2022-12-25 16:27:45     打赏
9楼

跟着楼主学OS。


高工
2022-12-25 16:28:57     打赏
10楼

感谢分享


共10条 1/1 1 跳转至

回复

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