usosiii中OS

    xiaoxiao2026-06-05  6

    #if OS_CFG_ISR_POST_DEFERRED_EN > 0u                             /* Deferred ISR Posts ------------------------------ */                                                                  /* Lock the scheduler                                */ #define  OS_CRITICAL_ENTER()                                       \          do {                                                      \              CPU_CRITICAL_ENTER();                                 \              OSSchedLockNestingCtr++;                              \              if (OSSchedLockNestingCtr == 1u) {                    \                  OS_SCHED_LOCK_TIME_MEAS_START();                  \              }                                                     \              CPU_CRITICAL_EXIT();                                  \          } while (0)                                                                  /* Lock the scheduler but re-enable interrupts       */ #define  OS_CRITICAL_ENTER_CPU_EXIT()                              \          do {                                                      \              OSSchedLockNestingCtr++;                              \                                                                    \              if (OSSchedLockNestingCtr == 1u) {                    \                  OS_SCHED_LOCK_TIME_MEAS_START();                  \              }                                                     \              CPU_CRITICAL_EXIT();                                  \          } while (0)                                                                  /* Scheduling occurs only if an interrupt occurs     */ #define  OS_CRITICAL_EXIT()                                        \          do {                                                      \              CPU_CRITICAL_ENTER();                                 \              OSSchedLockNestingCtr--;                              \              if (OSSchedLockNestingCtr == (OS_NESTING_CTR)0) {     \                  OS_SCHED_LOCK_TIME_MEAS_STOP();                   \                  if (OSIntQNbrEntries > (OS_OBJ_QTY)0) {           \                      CPU_CRITICAL_EXIT();                          \                      OS_Sched0();                                  \                  } else {                                          \                      CPU_CRITICAL_EXIT();                          \                  }                                                 \              } else {                                              \                  CPU_CRITICAL_EXIT();                              \              }                                                     \          } while (0) #define  OS_CRITICAL_EXIT_NO_SCHED()                               \          do {                                                      \              CPU_CRITICAL_ENTER();                                 \              OSSchedLockNestingCtr--;                              \              if (OSSchedLockNestingCtr == (OS_NESTING_CTR)0) {     \                  OS_SCHED_LOCK_TIME_MEAS_STOP();                   \              }                                                     \              CPU_CRITICAL_EXIT();                                  \          } while (0) #else                                                            /* Direct ISR Posts -------------------------------- */ #define  OS_CRITICAL_ENTER()                    CPU_CRITICAL_ENTER() #define  OS_CRITICAL_ENTER_CPU_EXIT() #define  OS_CRITICAL_EXIT()                     CPU_CRITICAL_EXIT() #define  OS_CRITICAL_EXIT_NO_SCHED()            CPU_CRITICAL_EXIT() #endif
    转载请注明原文地址: https://ju.6miu.com/read-1310210.html
    最新回复(0)