RTX5 | 消息队列06 - (实战技巧)FDCAN接收中断ISR同步线程
文章目录
- 一、前言
- 二、实验目的
- 三、代码
- 3.1、main.h
- 3.2、main.c
- 3.3、bsp_fdcan.c
- 四、调试
- 4.1、CAN盒子
- 4.2、Event Recorder
一、前言
FDCAN接收中断+消息队列实现线程同步非常实用,在实际工作中必须掌握。近半年都在使用STM32做CANopen相关的开发工作,之前使用FreeRTOS设计了一个CANopen主站,这个CANopen主站控制16个伺服电机(CANopen从站)。FreeRTOS的消息队列+FDCAN接收中断+线程编写程序控制一堆电机真的非常实用。经过使用RTX5后发现,RTX5的消息队列比FreeRTOS的消息队列简洁且高效。
通过CubeMX配置FDCAN的博文如下:
STM32H743+CubeMX-两路FDCAN同时工作的终极方案
STM32工程:
链接:https://pan.baidu.com/s/1aLhHId3Gxke9Ud9a5dgPLQ
提取码:hy5r
二、实验目的
CAN盒子发送CAN报文给STM32H743,接着STM32H743将接收到的CAN报文返回给CAN助手。
三、代码
3.1、main.h
3.2、main.c
3.3、bsp_fdcan.c
四、调试
4.1、CAN盒子
从CAN盒子的上位机看到,当发送一条CAN报文给STM32H743时,STM32H743马上返回一个CAN报文给CAN盒子。
4.2、Event Recorder
线程A在初始化完成后,一直处于阻塞态,不占用CPU的运行资源。当FDCAN接收中断回调函数接收到CAN报文,将CAN报文放入消息队列后。同步线程A,线程A马上从阻塞态变成运行态,接着处理CAN报文。处理CAN报文后,又回到阻塞态,等待下一个CAN报文。
将第一个同步的地方放大,可以看到线程A的运行总时间约4us。
RTX5 | 消息队列06 - (实战技巧)FDCAN接收中断ISR同步线程相关推荐
- RTX5 | 消息队列04 - (实战技巧)串口中断回调函数ISR同步线程
文章目录 一.前言 二.实验目的 三.API 3.2.osMessageQueueGet 四.代码 4.1.main.h 4.2.stm32f1xx.it.c 4.3.main.c 五.Event R ...
- RTX5 | 消息队列03 - 获取消息队列里消息的数量,并一次性提取出来
文章目录 一.前言 二.实验目的 三.API 3.1.osMessageQueueGetCount 四.代码 4.1.main.h 4.2.main.c 五.Event Recorder调试 5.1. ...
- Redis和消息队列使用实战
消息队列是在乐视这边非常普遍使用的技术.在我们部门内部,不同的项目使用的消息队列实现也不一样.下面是支付系统的流转图(部门兄弟画的,借用一下): 从图中可以看到,里面用到了kafka消息队列.作用是做 ...
- RTX5 | 消息队列01 - 创建消息队列
文章目录 一.前言 二.实验的目的 三.API 3.1.osMessageQueueId_t 3.2.osMessageQueueAttr_t 3.3.osMessageQueueNew 四.代码 4 ...
- RTX5 | 消息队列05 - 获取剩余空间,清空消息队列,删除消息队列
文章目录 一.前言 二.实验目的 三.API 3.1.osMessageQueueGetSpace 3.2.osMessageQueueReset 3.3.osMessageQueueDelete 四 ...
- RTX5 | 消息队列02 - 放入与取出消息
文章目录 一.前言 二.实验目的 三.API 3.1.osMessageQueuePut 3.2.osMessageQueueGet 四.代码 4.1.main.h 4.2.main.c 五.DEBU ...
- 消息队列的使用场景和使用技巧
2019独角兽企业重金招聘Python工程师标准>>> 一.消息队列的使用场景 1.应用解耦 假设商品和结算和支付是不同的系统,两个系统之间的通讯可以通过消息队列完成,不需要强制性的 ...
- activimq java集成_Java消息队列-Spring整合ActiveMq
1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Jav ...
- Java消息队列-Spring整合ActiveMq
1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个或多个程序之间的耦合,底层由Jav ...
最新文章
- 用于语义分割的特征共享协作网络
- php ftp 大文件,php – 将文件复制到服务器与FTP之间的文件大小差异
- 驱动层和r3程序通讯的列子参考爱写驱动的女装大佬
- Linux基础之bash脚本进阶篇-循环语句(for,while,until)
- 路由到另外一个页面_一个简单的Vue按钮级权限方案
- leetcode74. 搜索二维矩阵(二分查找)
- ssh免密登陆机制示意图
- Logback配置文件这么写,TPS提高10倍!
- C#中使用MongoDb
- 实对称矩阵特征值按大小排序
- python box2d模拟平抛运动_[HTML5]使用Box2dWeb模拟飞行箭矢
- Standford Moss。图形用户页面接口,代码查重
- 人工智能——文本分类(大作业必备)
- CSS 按钮悬停效果
- 使用ProcMon 输出调试信息
- 怎么卸载虚幻4_用虚幻引擎重现新海诚风格“秒速五厘米”场景(附流程和思路)...
- 关于C++的数据模型:LP32、ILP32、LLP64、LP64
- 一款经典动漫改编的二次元日系角色扮演类手游——航海王热血航线
- 植发搞笑图片_植发失败实例:头发没长出来还更秃了?詹姆斯也没能幸免,可怕...
- a 标签发送put请求_HTTP PUT请求该如何传输请求参数呢?