打印
[应用方案]

Cortex-M3中断服务程序设计

[复制链接]
1127|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
643757107|  楼主 | 2016-2-8 18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ISR是嵌入式应用系统获取各种事件的基本手段。而事件是实时性问题的讨论基础和事件计算的起点。
  • 中断优先级
不同中断服务程序应有不同优先级,在允许中断嵌套时,最高优先级的中断总是能够得到响应。
只要没关中断,ISR可以中断任何任务的运行,比最高优先级的任务还要高。
  • Cortex-M3中断资源
抢占优先级:实现中断嵌套
子优先级:当抢占优先级相同的两个中断同时发生时,子优先级高的中断可以首先获得运行权。
  • 中断优先级安排原则
紧迫性:触发中断的事件允许耽误的时间越短,优先级越高。
关键性:触发中断的事件越关键,越高
频繁性:触发中断的事件发生越频繁,越高
快捷性:前三项相近,ISR处理越快,越高。
ISR功能应尽量简单,只要将获取的异步事件用通信手段发给关联任务就行,后续处理由关联任务完成。
1. 中断服务程序设计
  • ISR结构


4部分
A:使os掌握当前中断的嵌套深度。
B:ISR功能代码。必须调用系统通信服务函数,与其他任务进行通信。正是这种通信功能是关联任务得到同步信号或数据,从而进入就绪状态。不允许调用延时函数和可能被挂起的系统服务函数。
C:清除该中断的相应标志。以便下次再次相应。不用ISR函数,中断源的中断相应标志不同,清除中断标志的代码也不同。
D:调用退出中断函数。实现任务调度功能。判断是返回中断(中断嵌套)还是返回任务(原任务还是更高级任务)
  • 选择与关联任务的通信手段
两种类型:
A:信号型。ISR只完成发送信号量的工作。表示事件发生,通过信号量的同步功能出发关联任务,所有具体工作由任务完成。
B:数据型。ISR需要完成信息采集工作,然后使用消息邮箱(消息队列)将数据发送给关联任务,由关联任务完成后续数据处理工作。
细分如下:
A:触发ISR事件不包含数据。用信号量与关联任务通信。
B:触发ISR事件包含数据低频事件。用信号量与关联任务通信。采集任务放在关联任务中。
C:触发ISR事件包含数据中高频事件。ISR采集数据。ISR中使用消息邮箱与关联任务通信。关联任务完成后续工作。
D:触发ISR事件包含数据非周期高频事件。ISR采集数据,ISR中使用具有数据缓冲功能的消息队列与关联任务通信。
  • 例子


沙发
734774645| | 2016-2-8 20:28 | 只看该作者
ISR只完成发送信号量的工作。表示事件发生,通过信号量的同步功能出发关联任务,所有具体工作由任务完成。

使用特权

评论回复
板凳
lovecat2015| | 2016-2-10 13:55 | 只看该作者
734774645 发表于 2016-2-8 20:28
ISR只完成发送信号量的工作。表示事件发生,通过信号量的同步功能出发关联任务,所有具体工作由任务完成。 ...

中断里面最好少写代码,把大量的时间交还给CPU

使用特权

评论回复
地板
玛尼玛尼哄| | 2016-2-10 14:29 | 只看该作者
A:触发ISR事件不包含数据。用信号量与关联任务通信。
B:触发ISR事件包含数据低频事件。用信号量与关联任务通信。采集任务放在关联任务中。
C:触发ISR事件包含数据中高频事件。ISR采集数据。ISR中使用消息邮箱与关联任务通信。关联任务完成后续工作。
D:触发ISR事件包含数据非周期高频事件。ISR采集数据,ISR中使用具有数据缓冲功能的消息队列与关联任务通信

使用特权

评论回复
5
734774645| | 2016-2-12 17:06 | 只看该作者
调用退出中断函数。实现任务调度功能。判断是返回中断(中断嵌套)还是返回任务(原任务还是更高级任务)

使用特权

评论回复
6
598330983| | 2016-2-13 11:25 | 只看该作者
 随着物联网的蓬勃发展,推动多样智能化终端应用的需求。在智能物联网平台设计的开发阶段,首要面临之挑战,即是如何解决不同设备间的通讯协议,新唐崭新推出物联网积木平台-NuBrick,解决模块间通讯协议共通之问题,使用户能更加专注于设备装置的设计开发。NuBrick内建新唐NuMicro M451单片机为主控芯片,透过M451提供的各项丰富外设,方便用户弹性扩充系统,满足物联网领域各种应用要求。

使用特权

评论回复
7
734774645| | 2016-2-13 13:13 | 只看该作者
ISR是嵌入式应用系统获取各种事件的基本手段。而事件是实时性问题的讨论基础和事件计算的起点。

使用特权

评论回复
8
奥德赛| | 2016-2-16 21:04 | 只看该作者
这个是ucos ii的例子吧

使用特权

评论回复
9
huangcunxiake| | 2016-2-17 08:38 | 只看该作者
好多程序的结构看起来都特别麻烦,主要是硬件设计时候没有把那些复杂的功能封装好,特别那些需要统一代码配置的地方。

使用特权

评论回复
10
芙蓉洞| | 2016-2-17 20:26 | 只看该作者
不同中断服务程序应有不同优先级,在允许中断嵌套时,最高优先级的中断总是能够得到响应。
这个就是中断程序的难点之处

使用特权

评论回复
11
643757107|  楼主 | 2016-2-24 19:27 | 只看该作者
ISR功能应尽量简单,只要将获取的异步事件用通信手段发给关联任务就行,后续处理由关联任务完成。

使用特权

评论回复
12
Bermanrep| | 2016-2-25 22:26 | 只看该作者
有没有不用中断的方式读取ad中的数据啊,用中断的优点是什么呢

使用特权

评论回复
13
643757107|  楼主 | 2016-3-20 14:49 | 只看该作者
中断的优点可以是通过定时器中断实现,这样就可以不必总是读取了,特别对那些被测对象变化不是很快的对象时候最为优越。

使用特权

评论回复
14
Roderman_z| | 2016-3-20 20:51 | 只看该作者
ucos ii中的中断设计

使用特权

评论回复
15
643757107|  楼主 | 2016-3-20 23:58 | 只看该作者
常规用法是很简单,不知道现在搞的各种库,怎么看着有点费劲。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

202

主题

3743

帖子

11

粉丝