STM32_RTOS_V2编程模板1-消息队列

发布时间 2024-01-08 00:24:25作者: realiot
/*QUEUE1*/
// 1DEFINE
osMessageQueueId_t queueDemo1 = NULL;

// 2INIT
queueDemo1 = osMessageQueueNew(8, sizeof(uint16_t), NULL);

// 3PUT
static uint16_t Demo1Val = 0;
extern osMessageQueueId_t queueDemo1;
Demo1Val = 0xAA;
osMessageQueuePut(queueDemo1, &Demo1Val, 0U, 0U);

// 4GET
static uint16_t Demo1Val = 0;
extern osMessageQueueId_t queueDemo1;
if (osOK == osMessageQueueGet(queueDemo1, &Demo1Val, NULL, 0U)) {
    if (Demo1Val == 0xAA) { }
}
/*QUEUE1*/

/*QUEU2E*/
// 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 queue_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);
osMessageQueuePut(queueDemo2, &p_g_tmsg, NULL, 0);
test_rtt_printf(0, 0, "queueDemo2 tx len= %04d  sn= %05d!\r\n", p_g_tmsg->len, ++queue_tx_sn);

// 5GET
static uint16_t queue_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, ++queue_rx_sn);
}
/*QUEUE2*/