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

 

posted @   realiot  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示