如何使用 osMessagePut 函数发送一个结构体变量?

使用 CubeMX 创建 FreeRTOS 的消息队列,想通过 osMessagePut 函数发送一个结构体变量,但是 osMessagePut 函数传入数据的形参是 uint32_t 类型的,请问我应该如何使用这个函数发送一个结构体变量?

osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec);

这样不行的,只能按照函数的数据类型来,要么就是把你的结构体变量的内容提取整合成uint_32类型的变量,再调用函数。

创建消息队列的时候要创建成你要发送结构体的指针类型。
然后你osMessagePut 的时候传入的是发送的结构体指针。
1、创建结构体指针
2、malloc出结构体的空间大小,给刚才的指针赋值,填充这个结构体
3、osMessagePut 发送这个指针到队列
4、get函数里面获取到这个指针
5、使用这个指针里面的内容
6、free这个指针

需要用到RTOS里面的malloc和free接口 具体名字好像是前面有个p?

发送一个指针类型,详情你可参考这个链接上的方式方法
参考链接:https://blog.csdn.net/u013165704/article/details/78724287

只能按照函数的数据类型来