分配FDCAN引脚配置主时钟160MHz配置为仲裁波特率500KFDCAN数据波特率2M打开接收中断生成代码。添加代码接收Header用于存放接收ID、DLC、数据发送Buffer、接收Buffer配置CANID过滤器配置发送函数FDCAN_RxHeaderTypeDef RxHeader;uint8_tTxData[64];uint8_tRxData[64];voidFDCAN1_Config(void){FDCAN_FilterTypeDef sFilterConfig;sFilterConfig.IdTypeFDCAN_STANDARD_ID;sFilterConfig.FilterIndex0;sFilterConfig.FilterTypeFDCAN_FILTER_RANGE;sFilterConfig.FilterConfigFDCAN_FILTER_TO_RXFIFO0;sFilterConfig.FilterID10x000;sFilterConfig.FilterID20x7FF;if(HAL_FDCAN_ConfigFilter(hfdcan1,sFilterConfig)!HAL_OK){Error_Handler();}if(HAL_FDCAN_ActivateNotification(hfdcan1,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0)!HAL_OK){Error_Handler();}HAL_FDCAN_Start(hfdcan1);}HAL_StatusTypeDefFDCAN_Send_Frame(uint32_tid,uint8_t*data,uint8_tlen){HAL_StatusTypeDef ret;FDCAN_TxHeaderTypeDef TxHeader{0};uint32_tdlc;if(len8)dlc(uint32_t)len;elseif(len12)dlcFDCAN_DLC_BYTES_12;elseif(len16)dlcFDCAN_DLC_BYTES_16;elseif(len20)dlcFDCAN_DLC_BYTES_20;elseif(len24)dlcFDCAN_DLC_BYTES_24;elseif(len32)dlcFDCAN_DLC_BYTES_32;elseif(len48)dlcFDCAN_DLC_BYTES_48;elsedlcFDCAN_DLC_BYTES_64;TxHeader.Identifierid;TxHeader.IdTypeFDCAN_STANDARD_ID;TxHeader.TxFrameTypeFDCAN_DATA_FRAME;TxHeader.DataLengthdlc;TxHeader.ErrorStateIndicatorFDCAN_ESI_ACTIVE;TxHeader.BitRateSwitchFDCAN_BRS_OFF;TxHeader.FDFormatFDCAN_CLASSIC_CAN;TxHeader.TxEventFifoControlFDCAN_NO_TX_EVENTS;TxHeader.MessageMarker33;retHAL_FDCAN_AddMessageToTxFifoQ(hfdcan1,TxHeader,data);returnret;}FDCAN初始化结束后调用FDCAN1_Config();外部声明一下变量和函数externFDCAN_RxHeaderTypeDef RxHeader;externuint8_tTxData[64];externuint8_tRxData[64];HAL_StatusTypeDefFDCAN_Send_Frame(uint32_tid,uint8_t*data,uint8_tlen);添加测试发送函数添加外部声明变量中断中提取FDCAN接收到的数据编译下载测试发送功能测试接收功能使用PCAN发送0x222报文debug查看内容查看CAN波形