UCOS iii 钩子函数 中断服务函数 临界区 延时函数

Posted rcblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UCOS iii 钩子函数 中断服务函数 临界区 延时函数相关的知识,希望对你有一定的参考价值。

钩子函数

功能: 扩展任务功能,被其他任务调用  算是消息机制

 1OSIdleTaskHook(),空闲任务调用这个函数,可以用来让CPU进入低功耗模式

    2OSInitHook() 系统初始化函数OSInit()调用此函数。

    3OSStatTaskHook(),统计任务每秒中都会调用这个函数,此函数允许你向统计任务中添加自己的应用函数。

    4OSTaskCreateHook(),任务创建的钩子函数。

    5OSTaskDelHook(), 任务删除的钩子函数。

    6OSTaskReturnHook(),任务意外返回时调用的钩子函数,比如删除某个任务

    7OSTaskSwHook(), 任务切换时候调用的钩子函数。

    8OSTimeTickHook(),滴答定时器调用的钩子函数。

  流程:  使能宏,OS_CFG_APP_HOOKS_EN1

       初始化钩子函数

       编写钩子函数,

  示例:  待补充

中断: 应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。

  进入中断: OSIntEnter();

  退出中断: OSIntExit(); 中断级任务调度器

  中断服务函数

技术图片
 1 xxx_Hander()
 2 {
 3 
 4   OSIntEnter();//进入中断,将OSIntNestingCtr+1,记录中断嵌套次数
 5 
 6   中断服务函数
 7 
 8   OSIntExit();//触发任务切换软中断
 9 
10 }
View Code

 

  临界区: 保护代码运行,不能打断,例如初始化.

    保护方式: 关中断/调度器上锁

       宏  OS_CFG_ISR_POST_DEFERRED_EN

定义为1: 调度器上锁, (延迟发布)

定义为0: 关中断, (直接发布)

对比: 直接发布下, 通过关中断保护临界段代码,

 延迟发布下, 通过锁定任务调度保护临界段代码.

 延迟发布下, UCOS iii访问中断队列时,仍需关闭中断,但时间短.

 

  经验建议:在什么情况下应该使用哪种方式

延时函数

任务延迟操作:

OSTimeDly(dly,opt,err);   //dly:时间长度,单位时间节拍.opt:延时选项,

OSTimeDlyHMSM(h,m,s,m,opt,err);   //小时,分钟,,毫秒,选项.

恢复因为延迟函数进入等待态的任务

OSTimeDlyResume(p_tcb,*p_err);   //p_tcb:需要恢复的任务控制块,p_err:错误码

以上是关于UCOS iii 钩子函数 中断服务函数 临界区 延时函数的主要内容,如果未能解决你的问题,请参考以下文章

ucos源码分析--基础概念

STM32FreeRTOS 系统内核控制函数

uCOS-III 学习记录——任务时间片运行

uc/os进中断与进临界区有啥区别?

uCOS-III 学习记录(10)——时间片轮转调度

μC/OS-III---I笔记13---中断管理