[PSOC™ Creator] XMC4000 搭载 FreeRTOS,CAN 队列为何造成 CPU 占用率飙升

[复制链接]
155|29
sanfuzi 发表于 2026-8-18 22:41 | 显示全部楼层
CAN 接收中断内把每一帧报文都xQueueSendFromISR压入队列,接收任务采用无超时无限轮询
xixi2017 发表于 2026-8-19 13:25 | 显示全部楼层
CAN 报文通过中断送入 FreeRTOS 队列后,CPU 占用率异常升高,空闲任务得不到运行,系统负载居高不下。
1988020566 发表于 2026-8-20 13:14 | 显示全部楼层
合理设置队列深度,避免因队列满导致的发送失败重试循环。
everyrobin 发表于 2026-8-20 22:37 | 显示全部楼层
监控xQueueSpacesAvailable(),若返回值经常为0,说明队列是瓶颈,需增大队列长度或提高处理任务优先级。
bartonalfred 发表于 2026-8-21 15:17 | 显示全部楼层
如何优化CAN队列以降低CPU占用?
jonas222 发表于 2026-8-22 09:34 | 显示全部楼层
批量读取 + 降低中断频率              
xiaoyaodz 发表于 2026-8-22 11:34 | 显示全部楼层
若占用率下降说明是“频繁唤醒”而非“单帧处理慢”
loutin 发表于 2026-8-22 16:00 | 显示全部楼层
临时把 xQueueSendFromISR 注释掉只清中断标志
janewood 发表于 2026-8-22 18:17 | 显示全部楼层
示波器/逻辑仪抓 CAN_RX_IRQ 引脚,数每秒跳变数 = 中断率
jackcat 发表于 2026-8-22 20:01 | 显示全部楼层
在ISR中释放信号量,在专门的任务中等待并处理CAN数据。这种方式响应快,实现简单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部