ucos-iii学习之锁住调度器

当OS_CFG_ISR_POST_DEFERRED_EN为1时,进入临界段给调度器上锁。
OS_CRITICAL_ENTER()递增,OSSchedLockNestingCtr值不为0时,表示已上锁。
OS_CRITICAL_EXIT()递减,OSSchedLockNestingCtr 值为0时,表示已上锁。
OS_CRITICAL_EXIT()递减,OSSchedLockNestingCtr值为0时,不调用调度函数。
测量调度器锁定时间:
通过设置 OS_CFG.H中的 OS_CFG_SCHED_LOCK_TIME_MEAS_EN 为 1 开启。
调度锁定时间单位与系统时间戳CPU_TS的单位一致。

小结:uC/OS-III 中会用到临界段,用 关 中 断 (OS_CFG.H 中 设 置 OS_CFG_ISR_POST_DEFERRED_EN 为 0) 或 者 锁 调 度 器 ( 设 置 OS_CFG_ISR_POST_DEFERRED_EN 为 1)实现保护临界段的功能。 用户程序不能使用这些代码:OS_CRITICAL_ENTER() OS_CRITICAL_EXIT() OS_CRITICAL_EXIT_NO_SCHED()

如果设置了CPU_CFG.H中的CPU_CFG_TIME_MEAS_INT_DIS_EN 为 1 时。uC/CPU 将会任务总 的关中断时间和每个任务的关中断时间。

如果设置了OS_CFG.H中的OS_CFG_SCHED_LOCK_TIME_MEAS_EN 为 1 时。uC/OS-III 会测量任务总的锁调度器时间和每个任务锁调度器时间。

你可能感兴趣的:(ucos-iii学习之锁住调度器)