1.当USE_HAL_CAN_REGISTER_CALLBACKS宏定义为1,并且CAN外设的状态为HAL_CAN_STATE_RESET时,会先将回调函数恢复为默认的legacy函数,然后判断用户是否定义了MspInitCallback回调函数,如果没有定义,则将默认的HAL_CAN_MspInit函数赋值给hcan->MspInitCallback,最后调用hcan->MspInitCallback(hcan)来初始化CAN外设的底层...
每次调用HAL_CAN_AddTxMessage发送函数,都会向0x00000002U的地址中写入一个值,导致FLASH报错,具体错误如下图所示 发生FLASH故障后,会导致FLASH操作失败。 解决方法:操作FLASH时,禁用CAN功能;操作FLASH结束,开启CAN功能。 回帖(1) 马占云 2024-9-9 18:21:48 在STM32F4 HAL库下,CAN发送导致FLASH报错的问题可能是...
HAL_RetVal=HAL_CAN_AddTxMessage(&HCAN1,&TxHeader,TxData,(uint32_t*)CAN_TX_MAILBOX0);时...
} else if ((hcan->Instance->TSR & CAN_TSR_TME1) != RESET) { TxMailboxX = CAN_TX_MAILBOX1; } else if ((hcan->Instance->TSR & CAN_TSR_TME2) != RESET) { TxMailboxX = CAN_TX_MAILBOX2; } // 将数据通过CAN总线发送 #if DEBUGMODE if (HAL_CAN_AddTxMessage(hcan, &TxHea...
{if(canHandle->Instance==CAN1) {/*USER CODE BEGIN CAN1_MspDeInit 0*//*USER CODE END CAN1_MspDeInit 0*//*Peripheral clock disable*/__HAL_RCC_CAN1_CLK_DISABLE();/**CAN1 GPIO Configuration PA11 ---> CAN1_RX PA12 ---> CAN1_TX*/HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_...
在系统的CAN初始化好了之后 添加硬件过滤器和激活CAN接收中断回调函数即可使用。 //CAN filter and RX_IT init void CAN_User_Init(CAN_HandleTypeDef *h_can) { CAN_FilterTypeDef sFilterConfig; HAL_StatusTypeDef HAL_Status; TxMeg.IDE = CAN_ID_STD; ...
HAL_StatusTypeDefHAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan,constCAN_TxHeaderTypeDef *pHeader,constuint8_taData[],uint32_t*pTxMailbox) 通过函数HAL_CAN_AddTxMessage来发送,此函数的四个参数分别代表着:CAN外设,CAN消息的传输...
uint32_t tx_mailbox; tx_header.StdId = 0x123; // 设置标准帧ID tx_header.RTR = CAN_RTR_DATA; tx_header.IDE = CAN_ID_STD; tx_header.DLC = 8; if (HAL_CAN_AddTxMessage(&hcan1, &tx_header, tx_data, &tx_mailbox) != HAL_OK) { ...
* Function Name : vApp_CAN_TxHeader_Init * Description : 初始化发送帧头句柄 * Input : pHeader 发送帧头指针 StdId 标识符 ExtId 扩展标识符 IDE 0:标准帧 1:拓展帧 RTR 0:数据帧 1:远程帧 DLC 数据长度 * Output : None * Return : None ...
if(HAL_Status!=HAL_OK){ printf("开启挂起中段允许失败\r\n"); } } void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) //接收回调函数 { uint8_t Data[8]; HAL_StatusTypeDef HAL_RetVal; if(hcan ==&hcan1){ HAL_RetVal=HAL_CAN_GetRxMessage(&hcan1, CAN1FIFO, &RxMeg, ...