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 | 软件定时器01 - 创建一
- 下一篇: 如何获取sharepoint列表_练习