一、钩子函数
功能: 扩展任务功能,被其他任务调用 算是消息机制
- 1、OSIdleTaskHook(),空闲任务调用这个函数,可以用来让CPU进入低功耗模式
- 2、OSInitHook(), 系统初始化函数OSInit()调用此函数。
- 3、OSStatTaskHook(),统计任务每秒中都会调用这个函数,此函数允许你向统计任务中添加自己的应用函数。
- 4、OSTaskCreateHook(),任务创建的钩子函数。
- 5、OSTaskDelHook(), 任务删除的钩子函数。
- 6、OSTaskReturnHook(),任务意外返回时调用的钩子函数,比如删除某个任务
- 7、OSTaskSwHook(), 任务切换时候调用的钩子函数。
- 8、OSTimeTickHook(),滴答定时器调用的钩子函数。
流程: 使能宏,OS_CFG_APP_HOOKS_EN置1
二、中断服务函数
功能:应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。
- 1、进入中断: OSIntEnter();
- 2、退出中断: OSIntExit(); 中断级任务调度器
三、临界区
功能: 保护代码运行,不能打断,例如初始化.
- 1、保护方式: 关中断/调度器上锁
- 2、宏:OS_CFG_ISR_POST_DEFERRED_EN
- 3、定义为1: 调度器上锁, (延迟发布)
- 4、定义为0: 关中断, (直接发布)
- 5、对比:
- 直接发布下, 通过关中断保护临界段代码,
- 延迟发布下, 通过锁定任务调度保护临界段代码
- 延迟发布下, UCOS iii访问中断队列时,仍需关闭中断,但时间短.
四、延时函数
功能:任务延迟操作
- 1、OSTimeDly(dly,opt,err); //dly:时间长度,单位时间节拍.opt:延时选项,
- 2、OSTimeDlyHMSM(h,m,s,m,opt,err); //小时,分钟,秒,毫秒,选项.
- 3、恢复因为延迟函数进入等待态的任务
- 4、OSTimeDlyResume(p_tcb,*p_err); //p_tcb:需要恢复的任务控制块,p_err:错误码