Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
rt_mq_消息队列_msg_queue
rt_msgqueue rt_mq_recv()接收卡死
发布于 2025-07-25 15:29:33 浏览:146
订阅该版
[tocm] # 在使用消息队列rt_mq_recv时候卡死 ```c static struct rt_messagequeue TX_CanMsg_mq; __attribute__((aligned (4))) __attribute__((section("EXRAM"))) rt_uint8_t RX_CanMsg_pool[sizeof(can_app_msg_t) * 50]; __attribute__((aligned (4))) __attribute__((section("EXRAM"))) rt_uint8_t TX_CanMsg_pool[sizeof(can_app_msg_t) * 50]; //initial code int can_app_init() { rt_err_t res; res = rt_mq_init(&TX_CanMsg_mq, "tx_can_mq", &TX_CanMsg_pool[0], sizeof(can_app_msg_t), sizeof(TX_CanMsg_pool), */ RT_IPC_FLAG_FIFO); return res; } //产生canframe 放入消息队列 static int can_tx_frame(uint32_t ID, uint8_t* data, uint8_t len) { can_app_msg_t canapp_msg; canapp_msg.canid = ID; rt_memcpy(canapp_msg.data, data, len); return rt_mq_send(&TX_CanMsg_mq, &canapp_msg, sizeof(can_app_msg_t)); //return can_write(&canapp_msg); } //从消息队列取出数据并发送 static void can_tx_thread(void* parameter) { int i; int ret = 0; can_app_msg_t can_app_msg; while(1) { if(rt_mq_recv(&TX_CanMsg_mq, &can_app_msg, sizeof(can_app_msg_t), 0) > 0)//一旦can线中途断开,发送被阻塞,这里就卡死在这里整个线程阻塞 { i = 0; do { ret = can_write(&can_app_msg); i++; } while(i < 10 && ret); } else { rt_thread_mdelay(100); } } } ``` 暂时没看出来为啥卡死,调试时候发现消息队列一旦满了,就会卡死
查看更多
1
个回答
默认排序
按发布时间排序
用户名由3_15位
2025-07-26
代码总在「分分钟搞定」的狂喜与「必有暗坑」的隐忧间往复
- rt_mq_recv没有及时处理消息,导致消息队列满了.进而rt_mq_send无法写入.这不是很正常吗? - 那当can线恢复后,can_write能够正常运行,不在阻塞,rt_mq_recv开始处理下一个消息队列,那么rt_mq_send又可以写入成功了不是? - 可以打印一下rt_mq_send的错误码反馈的是什么
撰写答案
登录
注册新账号
关注者
2
被浏览
146
关于作者
Spring_Wang
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
rt_object_init中报assertion failed错误?
2
在 MDK中的NANO 里创建消息队列失败,内存堆已开启
3
如何用消息队列传递结构体数据
4
消息队列满了以后接收乱码
5
消息队列传输不定长数据
6
使用消息队列在线程中发送总失败
7
初始化第二个消息队列时发生硬件错误
8
rtthread消息队列一对多的情况
9
消息队列为什么会出现获取到的内容有旧的数据?
10
通过消息队列名称,获取消息队列句柄
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RSOC25】Day5 课程笔记:软件包相关知识
2
RT-Thread 夏令营 第五天笔记
3
【RSOC25】Day5 课程笔记:软件包和网络组件
4
【RSOC25】Day4 课程笔记:I/O设备和驱动框架
5
【RSOC25】Day3 课程笔记:线程间同步和通信
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
cubemx
I2C_IIC
UART
WIZnet_W5500
BSP
ESP8266
PWM
ota在线升级
packages_软件包
flash
freemodbus
GD32
潘多拉开发板_Pandora
编译报错
ADC
keil_MDK
flashDB
rt_mq_消息队列_msg_queue
ulog
socket
MicroPython
msh
中断
Debug
SFUD
at_device
SDIO总线
本月问答贡献
Ryan_CW
2
个答案
3
次被采纳
D1sguIse_
6
个答案
2
次被采纳
用户名由3_15位
6
个答案
1
次被采纳
三世执戟
4
个答案
1
次被采纳
xiaorui
2
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部