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