can

关于新版hal库的can通信的使用

新版HAL库can通信使用了函数HAL_CAN_AddTxMessage,用此来驱动电机没有反应,debug的时候发现前三次有邮箱空缺,但是从第四次开始就没有邮箱空缺,因此直接进入error而动不了,求教!

已邀请:

像风像雨又像云

赞同来自:

我也是这种情况,有人知道怎么回事吗?

超子。

赞同来自:

 while( HAL_CAN_GetTxMailboxesFreeLevel( &hcan1 ) == 0 );
 HAL_CAN_AddTxMessage(&hcan1,&can1txmsg,can1txbuffdata,(uint32_t*)CAN_TX_MAILBOX0);
 if(HAL_CAN_AddTxMessage(&hcan1,&can1txmsg,can1txbuffdata,(uint32_t*)CAN_TX_MAILBOX0)!=HAL_OK)
 printf("发送失败");

进行判断,如果有空余邮箱,才继续发送

Quanf

赞同来自:

我也遇到这个问题了。用标准库,CAN盒能收到数据,但是hal库发送收不到数据,没有波形,三次后发送fifio满。楼主解决了么

唐风

赞同来自:

新库的邮箱是不能自己清空的,需要加一个邮箱清空的程序

bfz

赞同来自:

我也是类似情况, while( HAL_CAN_GetTxMailboxesFreeLevel( &hcan1 ) == 0 );也添加了,进行判断也添加了。本来好好的,突然就出现楼主这个问题

fumoumou

赞同来自:

为啥我的会死循环在初始化上

zhangchao - 80后IT男

赞同来自:

邮箱发送完成后会由硬件自己清除啊,不需要软件去手动清除

image.png

动于情❤️

赞同来自:

我也是这个问题,楼主解决了吗,发送三次之后就发送不了了,我就怀疑他硬件没有给我邮箱状态置空

Solo&~冷~

赞同来自:

结贴了吗?怎么解决的呢?

要回复问题请先登录注册