STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)
文章目錄
- 一、前言
- 二、CubeMX
- 2.1、Clock Configuration
- 2.2、FDCAN1
- FDCAN2
- 三、代碼
- 3.1、添加BSP
- fdcan.c
- 3.3、main.c
- 四、調試FDCAN
- 4.1、測試發送CAN報文
- 4.2、測試接收CAN報文
- 4.2.1、FDCAN1接收
- 4.2.2、FDCAN2接收
- 五、細節補充
- 5.1、FDCAN中斷回調函數
一、前言
終極方案的配置如下:
STM32工程:
鏈接:https://pan.baidu.com/s/1eo-ob49Vt-MGZFVzN0gRcg
提取碼:9u9a
二、CubeMX
2.1、Clock Configuration
系統時鐘設置480M。
通過分頻,將FDCAN的時鐘源設置成20M。
2.2、FDCAN1
FDCAN2
三、代碼
3.1、添加BSP
之前寫好的代碼,封裝成BSP(在STM32工程里復制即可)。往工程添加如下文件:
fdcan.c
首先,在CubeMX生成的函數MX_FDCAN1_Init( )設置水印。計算FDCAN2的messageRAMOffset是可選的,不一定要加這個代碼。
3.3、main.c
在main.c里運行了如下代碼:
因為這個工程運行了RTOS,開啟FDCAN中斷必須在消息隊列后面。所以如果沒有RTOS的話,直接在fdcan1.rx_Filter_Init( )后直接調用fdcan1.rx_Interrupt_Init()即可。
四、調試FDCAN
4.1、測試發送CAN報文
thread_LED_App函數每500ms執行一次。
從CAN分析儀觀察是否收到報文。
從以上的測試看來,FDCAN1與FDCAN2都正常發送CAN報文了。
4.2、測試接收CAN報文
4.2.1、FDCAN1接收
使用CAN分析儀的CAN0(連接FDCAN1)發送報文。在Keil軟件上將fdcan1添加到Wathc1窗口上,可以從變量fdcan1看到CAN報文的內容,跟CAN分析儀上的一樣。所以,FDCAN1成功接收CAN報文。
4.2.2、FDCAN2接收
使用CAN分析儀的CAN1(連接FDCAN2)發送報文,在Keil軟件上將fdcan2添加到Watch1窗口上,可以從變量fdcan2里看到CAN報文的內容,跟CAN分析儀上的一樣。所以,FDCAN2成功接收CAN報文。
五、細節補充
5.1、FDCAN中斷回調函數
在接收中斷函數里,如果是裸機的話(沒有RTOS系統),直接將這些代碼刪除即可。以FDCAN1的接收中斷函數為例:
總結
以上是生活随笔為你收集整理的STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python所有变量更新_在python
- 下一篇: cookie session token