mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-24 03:27:45 +08:00
关节电机measure
This commit is contained in:
@@ -105,6 +105,7 @@ CANInstance *CANRegister(CAN_Init_Config_s *config)
|
||||
instance->can_handle = config->can_handle;
|
||||
instance->tx_id = config->tx_id; // 好像没用,可以删掉
|
||||
instance->rx_id = config->rx_id;
|
||||
instance->rx_id_match_any = config->rx_id_match_any;
|
||||
instance->can_module_callback = config->can_module_callback;
|
||||
instance->id = config->id;
|
||||
|
||||
@@ -141,6 +142,17 @@ uint8_t CANTransmit(CANInstance *_instance, float timeout)
|
||||
return 1; // 发送成功
|
||||
}
|
||||
|
||||
uint8_t CANTryTransmit(CANInstance *_instance)
|
||||
{
|
||||
if (HAL_CAN_GetTxMailboxesFreeLevel(_instance->can_handle) == 0u)
|
||||
return 0u;
|
||||
|
||||
return HAL_CAN_AddTxMessage(_instance->can_handle,
|
||||
&_instance->txconf,
|
||||
_instance->tx_buff,
|
||||
&_instance->tx_mailbox) == HAL_OK;
|
||||
}
|
||||
|
||||
void CANSetDLC(CANInstance *_instance, uint8_t length)
|
||||
{
|
||||
// 发送长度错误!检查调用参数是否出错,或出现野指针/越界访问
|
||||
@@ -168,15 +180,16 @@ static void CANFIFOxCallback(CAN_HandleTypeDef *_hcan, uint32_t fifox)
|
||||
HAL_CAN_GetRxMessage(_hcan, fifox, &rxconf, can_rx_buff); // 从FIFO中获取数据
|
||||
for (size_t i = 0; i < idx; ++i)
|
||||
{ // 两者相等说明这是要找的实例
|
||||
if (_hcan == can_instance[i]->can_handle && rxconf.StdId == can_instance[i]->rx_id)
|
||||
if (_hcan == can_instance[i]->can_handle &&
|
||||
(can_instance[i]->rx_id_match_any || rxconf.StdId == can_instance[i]->rx_id))
|
||||
{
|
||||
if (can_instance[i]->can_module_callback != NULL) // 回调函数不为空就调用
|
||||
{
|
||||
can_instance[i]->rx_std_id = rxconf.StdId;
|
||||
can_instance[i]->rx_len = rxconf.DLC; // 保存接收到的数据长度
|
||||
memcpy(can_instance[i]->rx_buff, can_rx_buff, rxconf.DLC); // 消息拷贝到对应实例
|
||||
can_instance[i]->can_module_callback(can_instance[i]); // 触发回调进行数据解析和处理
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user