stm32cube学习笔记(2)

任务:使用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;

你可能感兴趣的:(STM32)