我正在开发一个使用 STM32 HAL 驱动程序的项目,特别是中断模式下的 CAN 驱动程序。
据我了解,STM32F407xx 微控制器有三个 CAN 传输邮箱,允许用户一次“排队”三个消息进行传输。
然而,在第二次调用 HAL_CAN_Transmit_IT() 时,HAL CAN 驱动程序似乎返回 HAL_BUSY;查看源代码,该函数在将句柄状态设置为 BUSY_TX 之前似乎没有检查任何其他邮箱是否为空(即使另一个邮箱可以用于以下消息),从而防止添加后续调用到另一个邮箱的消息。
我是否错过了有关此驱动程序工作方式的某些信息?过去有人遇到过这种情况吗?