UC/OS-II的中断和时钟
2016-09-14 23:15
417 查看
3.1.1 UC/OS-II 的中断过程
为了记录中断嵌套的层数,UC/OS-II定义了一个全局变量OSIntNesting
两个重要函数OSIntEnter()和OSIntExit()
函数OSIntEnter()的作用就是把全局变量OSIntNesting加1,被用于记录中断嵌套层数。
void OSIntEnter(void)
{
If(OSRunning== TRUE)
{
If(OSIntNesting < 255)
{
OSIntNesting ++;
}
}
}
函数OSIntEnter()的调用通常发生在中断服务程序保护了被中断任务的断点数据之后,运行用户中断服务代码之前,称为进入中断服务函数。
OSIntExit()的流程图如下:
OSIntExit(void)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
If(OSRunning == TRUE)
{
OS_ENTER_CRITICAL();
If(OSIntNesting > 0)
{
OSIntNesting --;
}
If((OSIntNesting ==0)&&(OSLockNesting == 0))
{
OSIntExitY =OSUnMapTbl[OSRdyGrp];
OSPrioHighRdy=(INT8U)((OSIntExitY<<3)+OSUnMapTbl[OSRdyTbl[OSIntExitY]]);
If(OSPrioHighRdy != OSPrioCur)
{
OSTCBHighRdy = OSTCBPrioTbl[OSPrioHigh ];
OSCtxSwCtr++;
OSIntCtxSw();
}
}
OS_EXIT_CRITICAL();
}
}
一个中断服务子程序的流程图如下所示:
为了记录中断嵌套的层数,UC/OS-II定义了一个全局变量OSIntNesting
两个重要函数OSIntEnter()和OSIntExit()
函数OSIntEnter()的作用就是把全局变量OSIntNesting加1,被用于记录中断嵌套层数。
void OSIntEnter(void)
{
If(OSRunning== TRUE)
{
If(OSIntNesting < 255)
{
OSIntNesting ++;
}
}
}
函数OSIntEnter()的调用通常发生在中断服务程序保护了被中断任务的断点数据之后,运行用户中断服务代码之前,称为进入中断服务函数。
OSIntExit()的流程图如下:
OSIntExit(void)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
If(OSRunning == TRUE)
{
OS_ENTER_CRITICAL();
If(OSIntNesting > 0)
{
OSIntNesting --;
}
If((OSIntNesting ==0)&&(OSLockNesting == 0))
{
OSIntExitY =OSUnMapTbl[OSRdyGrp];
OSPrioHighRdy=(INT8U)((OSIntExitY<<3)+OSUnMapTbl[OSRdyTbl[OSIntExitY]]);
If(OSPrioHighRdy != OSPrioCur)
{
OSTCBHighRdy = OSTCBPrioTbl[OSPrioHigh ];
OSCtxSwCtr++;
OSIntCtxSw();
}
}
OS_EXIT_CRITICAL();
}
}
一个中断服务子程序的流程图如下所示:
相关文章推荐
- Java中的几种设计模式
- 北京联想招聘-java 云服务开发工程师 加入qq 群:220486180 或者直接在此 留言咨询
- an important method -- quicksort
- POJ 2155 Matrix
- vue.js视频教程,vue.js视频教程下载
- UVA 247 - Calling Circles(floyd判断包闭 ,dfs输出)
- Inverted Multi-Index
- virtualenv的简单用法
- Mongodb启动问题
- 第一次通读《构建之法》阅读笔记
- [Angular 2] More on *ngFor, @ContentChildren & QueryList<>
- Zabbix安装文档一
- java集合框架系列---Iterator和Enumeration比较
- Java-Java匿名内部函数
- 使用URL工具类调用webservice接口(soap)与http接口的实现方式
- [Jquery]Cannot read property 'msie' of undefined
- tcl之其他命令-eval/source
- POJ 1195
- 线性表的选择排序
- HDU1166-敌兵布阵