专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

Cortex-M3中断服务程序设计

作者:佚名   来源:本站原创   点击数:  更新时间:2014年08月19日   【字体:

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中使用具有数据缓冲功能的消息队列与关联任务通信。

 

  • 例子



关闭窗口