47 lines
1.4 KiB
C
47 lines
1.4 KiB
C
// #include "can.h"
|
||
// #include "device/can.h"
|
||
// #include "stm32f3xx_hal.h"
|
||
// // CAN 调试结构体实例
|
||
|
||
// // 初始化 CAN
|
||
// void CAN_Init(CAN_HandleTypeDef *hcan_Cur)
|
||
// { //重置CAN
|
||
// HAL_CAN_Init(hcan_Cur); // 初始化CAN
|
||
// // 仅初始化CAN,不配置接收过滤器
|
||
// HAL_CAN_Start(hcan_Cur); // 开启CAN
|
||
// }
|
||
|
||
// // CAN 发送函数,添加超时机制
|
||
// uint8_t CAN_SendData(CAN_HandleTypeDef *hcan_Cur, uint8_t *pData, uint16_t ID)
|
||
// {
|
||
// HAL_StatusTypeDef HAL_RetVal = HAL_ERROR;
|
||
// uint8_t FreeTxNum = 0;
|
||
// CAN_TxHeaderTypeDef TxMessage;
|
||
|
||
// TxMessage.StdId = ID;
|
||
// TxMessage.DLC = 8; /* 默认一帧传输长度为8 */
|
||
// TxMessage.IDE = CAN_ID_STD;
|
||
// TxMessage.RTR = CAN_RTR_DATA;
|
||
|
||
// uint32_t timeout = 5000; // 增加超时时间
|
||
// while (FreeTxNum == 0 && timeout > 0)
|
||
// {
|
||
// FreeTxNum = HAL_CAN_GetTxMailboxesFreeLevel(hcan_Cur);
|
||
// if (FreeTxNum > 0) break; // 如果有空闲邮箱,退出循环
|
||
// osDelay(1); // 避免忙等待
|
||
// timeout--;
|
||
// }
|
||
// if (timeout == 0)
|
||
// {
|
||
// return 1; // 超时,发送失败
|
||
// }
|
||
|
||
// HAL_RetVal = HAL_CAN_AddTxMessage(hcan_Cur, &TxMessage, pData, (uint32_t *)CAN_TX_MAILBOX1);
|
||
|
||
// if (HAL_RetVal != HAL_OK)
|
||
// {
|
||
// return 1; // 发送失败
|
||
// }
|
||
|
||
// return 0; // 发送成功
|
||
// }
|