项目中使用了STM32F746芯片,这货刚推出不久,网上资料几乎都是官网的雷同版本!官网资料的CAN中断接收部分,在发送方发来的数据频率不是很高的情况下,可以正常进入中断。
频率高时,会进入接收中断服务函数中的 HAL_CAN_Receive_IT(CanHandle, CAN_FIFO0) 处理会出错,然后就无法进入中断了。经不断查找发现CAN的 IER寄存器FMPIE变为0时就无法进入中断了,只好在中断中如果接收出错,强制把此位修改为1,就可以进入中断了。
经测试屡试不爽。问题算是基本解决了,可不知修改此位的原理或说是否会有其他隐患,请大神解答! |