文章目录

  • 一、前言
  • 二、实验目的
  • 三、代码
    • 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同步线程相关推荐

  1. RTX5 | 消息队列04 - (实战技巧)串口中断回调函数ISR同步线程

    文章目录 一.前言 二.实验目的 三.API 3.2.osMessageQueueGet 四.代码 4.1.main.h 4.2.stm32f1xx.it.c 4.3.main.c 五.Event R ...

  2. RTX5 | 消息队列03 - 获取消息队列里消息的数量,并一次性提取出来

    文章目录 一.前言 二.实验目的 三.API 3.1.osMessageQueueGetCount 四.代码 4.1.main.h 4.2.main.c 五.Event Recorder调试 5.1. ...

  3. Redis和消息队列使用实战

    消息队列是在乐视这边非常普遍使用的技术.在我们部门内部,不同的项目使用的消息队列实现也不一样.下面是支付系统的流转图(部门兄弟画的,借用一下): 从图中可以看到,里面用到了kafka消息队列.作用是做 ...

  4. RTX5 | 消息队列01 - 创建消息队列

    文章目录 一.前言 二.实验的目的 三.API 3.1.osMessageQueueId_t 3.2.osMessageQueueAttr_t 3.3.osMessageQueueNew 四.代码 4 ...

  5. RTX5 | 消息队列05 - 获取剩余空间,清空消息队列,删除消息队列

    文章目录 一.前言 二.实验目的 三.API 3.1.osMessageQueueGetSpace 3.2.osMessageQueueReset 3.3.osMessageQueueDelete 四 ...

  6. RTX5 | 消息队列02 - 放入与取出消息

    文章目录 一.前言 二.实验目的 三.API 3.1.osMessageQueuePut 3.2.osMessageQueueGet 四.代码 4.1.main.h 4.2.main.c 五.DEBU ...

  7. 消息队列的使用场景和使用技巧

    2019独角兽企业重金招聘Python工程师标准>>> 一.消息队列的使用场景 1.应用解耦 假设商品和结算和支付是不同的系统,两个系统之间的通讯可以通过消息队列完成,不需要强制性的 ...

  8. activimq java集成_Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Jav ...

  9. Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个或多个程序之间的耦合,底层由Jav ...

最新文章

  1. 用于语义分割的特征共享协作网络
  2. php ftp 大文件,php – 将文件复制到服务器与FTP之间的文件大小差异
  3. 驱动层和r3程序通讯的列子参考爱写驱动的女装大佬
  4. Linux基础之bash脚本进阶篇-循环语句(for,while,until)
  5. 路由到另外一个页面_一个简单的Vue按钮级权限方案
  6. leetcode74. 搜索二维矩阵(二分查找)
  7. ssh免密登陆机制示意图
  8. Logback配置文件这么写,TPS提高10倍!
  9. C#中使用MongoDb
  10. 实对称矩阵特征值按大小排序
  11. python box2d模拟平抛运动_[HTML5]使用Box2dWeb模拟飞行箭矢
  12. Standford Moss。图形用户页面接口,代码查重
  13. 人工智能——文本分类(大作业必备)
  14. CSS 按钮悬停效果
  15. 使用ProcMon 输出调试信息
  16. 怎么卸载虚幻4_用虚幻引擎重现新海诚风格“秒速五厘米”场景(附流程和思路)...
  17. 关于C++的数据模型:LP32、ILP32、LLP64、LP64
  18. 一款经典动漫改编的二次元日系角色扮演类手游——航海王热血航线
  19. 植发搞笑图片_植发失败实例:头发没长出来还更秃了?詹姆斯也没能幸免,可怕...
  20. a 标签发送put请求_HTTP PUT请求该如何传输请求参数呢?

热门文章

  1. sql优化学习(一)
  2. ​win7下安装sourcetree
  3. 小记 | 从 0 到 1,看我如何玩弄千万日志于股掌
  4. 好的可视化报告一目了然,丑的可视化报表一文不值
  5. 【转载】生怕我等着急了的扬州程序员
  6. 【转载】为什么飞鸽传书一直流行?
  7. 今天的我叫史努比的飞鸽传书
  8. 【飞秋】基于Html5的Canvas实现的Clocks (钟表)
  9. PXE 网络化安装linux系统
  10. 用VC写Assembly代码(5) --一些宏的使用(二)