UCOSIII_中断和时间管理

2020-03-09  本文已影响0人  飞向深空

UCOSIII支持中断嵌套,高优先级中断可以打断低优先级中断,在UCOSIII中使用OSIntNestingCtr来记录中断嵌套次数,最大支持250级嵌套,没进一个中盾嵌套OSIntNestingCtr就加1,反之则减1

进入中断函数:OSIntEnter(),仅进行OSIntNestingCtr加1操作
退出中断函数:OSIntExit()

void XXX_Handler(void)
{
  OSIntEnter(); //标记进入中断服务程序,记录中断嵌套次数
      //中间中断服务程序自己写
  OSIntExit(); //触发中断任务切换
}

临界段代码也叫临界区,这部分代码不能被系统打断。
进入临界区:OS_CRITICAL_ENTER()
退出临界区:OS_CRITICAL_EXIT()是退出还进行任务调度,OS_CRITICAL_EXIT_NO_SCHED()退出不进行任务调度


UCOSIII对中断发布消息或者信号的处理有两种模式:直接发布和延迟发布。宏OS_CFG_ISR_POST_DEFERRED_EN来选择,置0使用直接发布,置1使用延迟发布。
直接发布模式下,UCOSIII通过关中断保护临界区代码,延迟模式下通过锁定任务调度
延迟模式的速度高于直接模式,两者仅是模式不同,代码无需更改。





OSTimeGet(),获取当前时钟节拍技术器的值
OSTimeSet(),设置当前时钟节拍计数器的值,最好别使用

上一篇 下一篇

猜你喜欢

热点阅读