码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-02-28 21:22:56      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:经验   ali   msm   div   back   enter   时间   应该   访问   

钩子函数

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

 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 钩子函数 中断服务函数 临界区 延时函数

标签:经验   ali   msm   div   back   enter   时间   应该   访问   

原文地址:https://www.cnblogs.com/RcBlog/p/10453007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!