用 STM32F413- Nucleo F413Zh 开发板,Mask/ID list 模式可以使用不同数量的滤波器组,如何配置启用单个滤波器组或启用所有组?32 /16位模式 也改变mask模式或 Id 模式的滤波器组数量。filterbank # 定义被修改的 filterbank 。以下代码就是我多个滤波器组的方法:
// for (filterNo = 0; filterNo < CAN1_FILTER_CNT; filterNo++){ // sFilterConfig.FilterBank = filterNo; // sFilterConfig.FilterMode = CAN1_FilterMode[filterNo]; // sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; // sFilterConfig.FilterIdHigh = CAN1_ID_HiWord[filterNo]; // sFilterConfig.FilterIdLow = CAN1_ID_LoWord[filterNo]; // sFilterConfig.FilterMaskIdHigh = CAN1_FilterMaskHiWord[filterNo]; // sFilterConfig.FilterMaskIdLow = CAN1_FilterMaskLoWord[filterNo]; // sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; // sFilterConfig.FilterActivation = ENABLE; // sFilterConfig.SlaveStartFilterBank = 14; // // if(HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig) != HAL_OK) // { // // Filter configuration Error // Error_Handler(); // } // } 遇到的问题是 CAN 控制器仅启用 “for loop” 中调用的最后一个 filter-bank 配置,其他的 filter-bank没有启用
|