消息队列实例:
1.4.1 创建
创建一个可以容纳10个消息的全局消息队列.
OS_Q
OSQCreate(&Main_Task_Q,"Main_Task_Q",10,&err);
1.4.2 挂起
将任务挂起等待消息,以阻塞方式等待消息来为止.
OS_MSG_SIZE nMsgSize = 0;
u8 *pMsg = NULL;//u8为unsigned char
CPU_TS nMsgTS;
OS_ERR err;
pMsg=(u8 *)OSQPend(&Main_Task_Q,0,OS_OPT_PEND_BLOCKING,&nMsgSize,&nMsgTS,&err);
1.4.3 发送
在一个任务中向另外一个任务发送消息,以FIFO方式放入消息队列,消息内容为”Hello_Uc/OS-III”
OSQPost(&Main_Task_Q," Hello_Uc/OS-III ",sizeof("Hello_Uc/OS-III "),OS_OPT_POST_FIFO,&err);