STM32_RTOS_V2编程模板1-消息队列
#pragma region QUEUE1
// 1DEFINE
osMessageQueueId_t queueDemo1 = NULL;
// 2INIT
queueDemo1 = osMessageQueueNew(8, sizeof(uint16_t), NULL);
// 3PUT
static uint16_t q_tx_sn = 0;
static uint16_t Demo1Val = 0;
extern osMessageQueueId_t queueDemo1;
Demo1Val = 0xAA;
if (osOK == osMessageQueuePut(queueDemo1, &Demo1Val, 0U, 0U)) {
test_rtt_printf(0, 0, "queueDemo1 PUT sn= %05d!\r\n", ++q_tx_sn);
}
// 4GET
static uint16_t q_rx_sn = 0;
static uint16_t Demo1Val = 0;
extern osMessageQueueId_t queueDemo1;
if (osOK == osMessageQueueGet(queueDemo1, &Demo1Val, NULL, 0U)) {
test_rtt_printf(0, 0, "queueDemo1 GOT sn= %05d!\r\n", ++q_rx_sn);
if (Demo1Val == 0xAA) {
}
}
#pragma endregion
#pragma region QUEUE2
// 1TYPEDEF bsp.h or include.h
typedef struct {
uint16_t len;
uint8_t buf[64];
} MSG_S;
// 2DEFINE
osMessageQueueId_t queueDemo2 = NULL;
// 3INIT
queueDemo2 = osMessageQueueNew(8, sizeof(MSG_S*), NULL);
// 4PUT
static uint16_t q_tx_sn = 0;
static MSG_S v_g_tmsg;
static MSG_S* p_g_tmsg = &v_g_tmsg;
extern osMessageQueueId_t queueDemo2;
p_g_tmsg->len = 0x10;
memcpy(p_g_tmsg->buf, staBuf, p_g_tmsg->len);
if (osOK == osMessageQueuePut(queueDemo2, &p_g_tmsg, NULL, 0)) {
test_rtt_printf(0, 0, "queueDemo2 tx len= %04d sn= %05d!\r\n", p_g_tmsg->len, ++q_tx_sn);
}
// 5GET
static uint16_t q_rx_sn = 0;
static MSG_S v_g_rmsg;
static MSG_S* p_g_rmsg = &v_g_rmsg;
extern osMessageQueueId_t queueDemo2;
if (osOK == osMessageQueueGet(queueDemo2, &p_g_rmsg, NULL, 0U)) {
test_rtt_printf(0, 0, "queueDemo2 rx len= %04d sn= %05d!\r\n", p_g_rmsg->len, ++q_rx_sn);
}
#pragma endregion
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)