FDCAN1_Handler.Instance = FDCAN1;
FDCAN1_Handler.Init.FrameFormat = FDCAN_FRAME_CLASSIC; //传统模式
FDCAN1_Handler.Init.Mode = FDCAN_MODE_NORMAL; //正常模式
FDCAN1_Handler.Init.AutoRetransmission = DISABLE; //关闭自动重传!
FDCAN1_Handler.Init.TransmitPause = DISABLE; //关闭传输暂停
FDCAN1_Handler.Init.ProtocolExcep
tion = DISABLE; //关闭协议异常处理
FDCAN1_Handler.Init.NominalPrescaler = 0x01; //分频系数FDCAN1_Handler.Init.MessageRAMOffset = 0; //信息 RAM 偏移
FDCAN1_Handler.Init.StdFiltersNbr = 1; //标准信息 ID 滤波器编号
FDCAN1_Handler.Init.ExtFiltersNbr = 2; //扩展信息 ID 滤波器编号
FDCAN1_Handler.Init.RxFifo0ElmtsNbr = 1; //接收 FIFO0 元素编号
FDCAN1_Handler.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8; //接收 FIFO0 8 字节
FDCAN1_Handler.Init.RxBuffersNbr = 0; //接收缓冲编号
FDCAN1_Handler.Init.TxEventsNbr = 0; //发送事件编号
FDCAN1_Handler.Init.TxBuffersNbr = 1; //发送缓冲编号
FDCAN1_Handler.Init.TxFifoQueueElmtsNbr = 0; //发送 FIFO 序列元素编号
FDCAN1_Handler.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
FDCAN1_Handler.Init.TxElmtSize = FDCAN_DATA_BYTES_8; //发送大小:8 字节
if(HAL_FDCAN_Init( FDCAN1_Handler) != HAL_OK) //初始化 FDCAN
{
while(1);
}
//设置滤波器
FDCAN1_RXFilter.IdType = FDCAN_EXTENDED_ID; //扩展 ID
FDCAN1_RXFilter.FilterIndex = 0; //滤波器索引
FDCAN1_RXFilter.FilterType = FDCAN_FILTER_MASK; //滤波器类型
FDCAN1_RXFilter.FilterConfig= FDCAN_FILTER_TO_RXFIFO0; //过滤器 0 关联到 FIFO0
FDCAN1_RXFilter.FilterID1 = 0x0000; //32 位 ID
FDCAN1_RXFilter.FilterID2 = 0x0000; //传统模式的话,这里是 32 位掩码
HAL_FDCAN_ConfigFilter( FDCAN1_Handler, FDCAN1_RXFilter); //滤波器初始化
//HAL_FDCAN_ActivateNotification( FDCAN1_Handler,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);
HAL_FDCAN_Start( FDCAN1_Handler); //开启 FDCAN