开门见山,直接上干货,我们这里讲的是CMSIS-RTOS2 即CMSIS V2,也是stm32cubemx可以直接生成的操作系统封装;由于stm32cubemx使用cmsis封装的freertos所以我接下来,就结合被封装的freertos来讲解cmsis-rtos 2的用法。
cmsis_os.h文件里有一个枚举定义
typedef enum {
osKernelInactive = 0, ///< Inactive.不活跃的
osKernelReady = 1, ///< Ready.准备好的
osKernelRunning = 2, ///< Running.正在运行
osKernelLocked = 3, ///< Locked.调度器上锁
osKernelSuspended = 4, ///< Suspended.挂起
osKernelError = -1, ///< Error.错误
osKernelReserved = 0x7FFFFFFFU ///< Prevents enum down-size compiler optimization.预留
} osKernelState_t;
这是cmsis用来表示系统状态的,和以下几个封装函数有关。
首先cmsis有个操作系统初始化函数osKernelInitialize,操作系统状态上电默认是Inactive.不活跃的,在这里没有啥复杂操作,就是把状态改为Ready.准备好的。所以这个函数一般放在最开始,表示初始化操作系统了,其实和