2025-09-03 6:26 AM
STM32H562, STM32Cube FW_H5 V1.5.0, X-CUBE-FREERTOS.1.2.0
If i want a FreeRTOS queue of size 32 and item size 12 bytes i will write 32 i Queue Size and 12 in Item Size in CubeMX. Previously it would generate init code:
osMessageQueueId_t setpoint_sendHandle;
uint8_t setpoint_send_buffer[ 32 * 12 ];
osStaticMessageQDef_t setpoint_sendControlBlock;
const osMessageQueueAttr_t setpoint_send_attributes = {
.name = "setpoint_send",
.cb_mem = &setpoint_sendControlBlock,
.cb_size = sizeof(setpoint_sendControlBlock),
.mq_mem = &setpoint_send_buffer,
.mq_size = sizeof(setpoint_send_buffer)
};
setpoint_sendHandle = osMessageQueueNew (32, 12, &setpoint_send_attributes);
With STM32Cube FW_H5 V1.5.0, X-CUBE-FREERTOS.1.2.0 i get:
osMessageQueueId_t setpoint_sendHandle;
uint8_t setpoint_send_buffer[ 32 * sizeof(12)];
osStaticMessageQDef_t setpoint_sendControlBlock;
const osMessageQueueAttr_t setpoint_send_attributes = {
.name = "setpoint_send",
.cb_mem = &setpoint_sendControlBlock,
.cb_size = sizeof(setpoint_sendControlBlock),
.mq_mem = &setpoint_send_buffer,
.mq_size = sizeof(setpoint_send_buffer)
};
setpoint_sendHandle = osMessageQueueNew (32, sizeof(12), &setpoint_send_attributes);
Which does not work as expected. Should i do something differently in CubeMX with the latest FreeRTOS?