任务:使用stm32cube 工程的message quene management 部分api
1、使用stm32cubemx生成相应的工程
2、使能消息队列相关的函数
#define osFeature_MessageQ 1
3、定义消息队列的名字
osMessageQDef(MsgBox, 1, int); //创建一个长度为1,单位为int的消息队列
osMessageQId MsgBox; //消息队列的ID
4、创建队列
MsgBox = osMessageCreate(osMessageQ(MsgBox), NULL);
//穿件消息队列
5、向队列发送消息
osMessagePut(MsgBox, 1, osWaitForever);
注:1、这个函数实现向消息队列传送一个int数据1、并且进程一直阻塞知道
7、从队列接收消息
osEvent evt;
evt = osMessageGet(MsgBox, osWaitForever);
osEvent 数据传输过程中传输的数据 ,结构体定义如下
typedef struct {
osStatus status; //消息类型
union {
uint32_t v; //消息中为值
void *p; //消息中为指针
int32_t signals;
} value; ///< event value
union {
osMailQId mail_id; ///< mail id obtained by \ref osMailCreate
osMessageQId message_id; ///< message id obtained by \ref osMessageCreate
} def; ///< event definition
} osEvent;