美文网首页
UCOSIII_中断和时间管理

UCOSIII_中断和时间管理

作者: 飞向深空 | 来源:发表于2020-03-09 15:43 被阅读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通过关中断保护临界区代码,延迟模式下通过锁定任务调度
延迟模式的速度高于直接模式,两者仅是模式不同,代码无需更改。


  • 延时函数:OSTimeDly(OS_TICK dly, OS_OPT opt, OS_ERR *p_err)
    dly:延迟时间节拍数
    opt:OS_OPT_TIME_DLY 相对模式
    OS_OPT_TIME_TIMEOUT 和opt:OS_OPT_TIME_DLY 一样
    OS_OPT_TIME_MATCH 绝对模式
    OS_OPT_TIME_PERIODIC 周期模式
    相对模式在系统负担重时可能会延迟多个节拍,周期模式下任务可能会被推迟执行。推荐使用周期模式
    绝对模式可以指定上电后指定的时间执行具体动作,比如,上电N秒关闭某个外设

  • 延时函数:OSTimeDlyHMSM(CPU_INT16U hours, //延时小时数
    CPU_INT16U minutes, //延时分钟数
    CPU_INT16U seconds, //延时的秒数
    CPU_INT32U milli, //需要延时的毫秒数
    OS_OPT opt, //选项
    OS_ERR *p_err)
    hours,minutes,seconds,milli:当OS_CFG_TICK_RATE_HZ为200,最小延时为5ms
    opt:比OSTimeDly()多了两个,OS_OPT_TIME_HMSM_STRICT和OS_OPT_TIME_HMSM_NON_STRICT.
    OS_OPT_TIME_HMSM_STRICT模式下,hours(0-99),minutes(0-59),seconds(0-59),milli(0-999)
    OS_OPT_TIME_HMSM_NON_STRICT模式下,hours(0-999),minutes(0-9999),seconds(0-65535),milli(0-4294967259)

  • 退出延时函数:OSTimeDlyResume(OS_TCB *p_tcb, OS_ERR *p_err)
    用来使错误延时的任务恢复运行

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

相关文章

  • UCOSIII_中断和时间管理

    UCOSIII支持中断嵌套,高优先级中断可以打断低优先级中断,在UCOSIII中使用OSIntNestingCtr...

  • 2018年11月27号输出

    时间管理实践,有想过不可能天天连续不断也可能出现中断两三天,但中断时间超过五天,会出现放纵,难以重新继续时间管理学...

  • 内部中断和外部中断

    你一定有过这样的体验,好不容易集中好时间,努力学习、工作,但效果不佳。为什么呢?什么东西影响了效果? 大概率上,答...

  • 软中断和硬中断

    从本质上讲,中断(硬)是一种电信号,当设备有某种事情发生的时候,他就会产生中断,通过总线把电信号发送给中断控制器。...

  • kernel 中断

    中断# 中断分 向量中断 和 非向量中断## 向量中断由硬件提供中断服务程序入口地址 非向量中断由软件提供中断服务...

  • 阻塞中断和非阻塞中断

    程阻塞和中断(sleep、wait、io、锁)四种恢复方式

  • 中断和异常

    中断(英语:Interrupt)是指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称...

  • 休眠和中断

    sleep使线程休眠,另一个线程可以调用sleep线程的interrupt中断它的休眠。 结束休眠状态有两种途径:...

  • 中断和异常

    中断和异常 早期计算机,各个程序只能串行的执行,一个程序放入计算机移入内存之后,要等待IO设备输出结束,这个程序才...

  • 中断和信号

    信号是中断在进程中的模拟,中断分为异步中断和同步中断,异步中断是由外围硬件产生的,同步中断是由CPU产生的,如异常...

网友评论

      本文标题:UCOSIII_中断和时间管理

      本文链接:https://www.haomeiwen.com/subject/anijdhtx.html