消息队列
概述
消息队列提供了一种同步的传递/收取消息的机制,与队列(tos_queue)不同的是,tos_queue基于消息队列封装了一层异步的机制,实际上tos_queue的底层消息管理采用的就是消息队列。
API讲解
编程实例
1、在tos_config.h中,配置消息队列组件开关TOS_CFG_MSG_EN:
#define TOS_CFG_MSG_EN 1u
2、在tos_config.h中,配置消息队列池大小TOS_CFG_MSG_POOL_SIZE:
#define TOS_CFG_MSG_POOL_SIZE 3u
这是消息队列池中可以承载的最大消息数量
3、编写main.c示例代码:
#include "tos.h" #include "mcu_init.h" #define STK_SIZE_TASK_DEMO 512 #define PRIO_TASK_DEMO 4 k_stack_t stack_task_demo[STK_SIZE_TASK_DEMO]; k_task_t task_demo; k_msg_queue_t msg_queue; struct msg_st { char *msg; size_t size; } msgs[TOS_CFG_MSG_POOL_SIZE] = { { "msg 0", 6 }, { "msg 1", 6 }, { "msg 2", 6 }, }; struct msg_st dummy_msg = { "dummy msg", 10 }; extern void entry_task_demo(void *arg); vo