STM32H743板子CANFD中断接收调试过程中的一点问题及解决方法

在STM32H743控制器上配置双路CANFD,使用CUBE生成的中断方式代码无法正常发送和接收。通过手动添加中断配置,包括设置中断优先级和使能FDCAN1中断,解决了接收中断问题。发送32次后中断失效的问题,可能由CUBE配置不一致或版本过低引起。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制器:STM32H743

功能:双路CANFD

速率:1M_5M

CANFD时钟为20M

采样点数:仲裁场85%,数据场75%。配置如下

hfdcan1.Init.NominalPrescaler = 1;
hfdcan1.Init.NominalSyncJumpWidth = 3; 
hfdcan1.Init.NominalTimeSeg1 = 16;
hfdcan1.Init.NominalTimeSeg2 = 3;
hfdcan1.Init.DataPrescaler = 1;
hfdcan1.Init.DataSyncJumpWidth = 1;
hfdcan1.Init.DataTimeSeg1 = 2;
hfdcan1.Init.DataTimeSeg2 = 1;

问题:调试STM32H743过程中,参考正点原子的代码,轮询方式两路CANFD接收发送都是OK的,后来使用CUBE改为中断方式然后生成代码,发现不能发送,可以进接收中断,发送32次之后,就出现进不了接收中断,后来手动添加CANFD中断代码,CANFD中断接收/发送成功。(原因可能是CUBE的某些配置和我写的不一样,或者CUBE版本太低导致,具体原因后面排查)

自己添加的CANFD中断代码有

  1.  HAL_FDCAN_MspInit函数里面增加配置:中断优先级、使能FDCAN1中断代码
  2. HAL_FDCAN_MspDeInit函数里面增加:关闭FDCAN1中断代码
  3. 增加CANFD中断调用函数
  4. 增加FIFO调用函数
void HAL_FDCAN_MspInit(FDCAN_Handle
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值