UCOS iii 钩子函数 中断服务函数 临界区 延时函数
Posted rcblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UCOS iii 钩子函数 中断服务函数 临界区 延时函数相关的知识,希望对你有一定的参考价值。
钩子函数
功能: 扩展任务功能,被其他任务调用 算是消息机制
1、OSIdleTaskHook(),空闲任务调用这个函数,可以用来让CPU进入低功耗模式
2、OSInitHook(), 系统初始化函数OSInit()调用此函数。
3、OSStatTaskHook(),统计任务每秒中都会调用这个函数,此函数允许你向统计任务中添加自己的应用函数。
4、OSTaskCreateHook(),任务创建的钩子函数。
5、OSTaskDelHook(), 任务删除的钩子函数。
6、OSTaskReturnHook(),任务意外返回时调用的钩子函数,比如删除某个任务
7、OSTaskSwHook(), 任务切换时候调用的钩子函数。
8、OSTimeTickHook(),滴答定时器调用的钩子函数。
流程: 使能宏,OS_CFG_APP_HOOKS_EN置1
初始化钩子函数
编写钩子函数,
示例: 待补充
中断: 应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。
进入中断: OSIntEnter();
退出中断: OSIntExit(); 中断级任务调度器
中断服务函数
1 xxx_Hander() 2 { 3 4 OSIntEnter();//进入中断,将OSIntNestingCtr+1,记录中断嵌套次数 5 6 中断服务函数 7 8 OSIntExit();//触发任务切换软中断 9 10 }
临界区: 保护代码运行,不能打断,例如初始化.
保护方式: 关中断/调度器上锁
宏 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 钩子函数 中断服务函数 临界区 延时函数的主要内容,如果未能解决你的问题,请参考以下文章