@@ -18,6 +18,20 @@ static can_bus_state_t bus_state = OFF_BUS;
1818static uint8_t can_autoretransmit = ENABLE ;
1919static can_txbuf_t txqueue = {0 };
2020
21+ static void can_set_filter () {
22+ // Initialize default CAN filter configuration
23+ filter .FilterIdHigh = 0 ;
24+ filter .FilterIdLow = 0 ;
25+ filter .FilterMaskIdHigh = 0 ;
26+ filter .FilterMaskIdLow = 0 ;
27+ filter .FilterFIFOAssignment = CAN_RX_FIFO0 ;
28+ filter .FilterBank = 0 ;
29+ filter .FilterMode = CAN_FILTERMODE_IDMASK ;
30+ filter .FilterScale = CAN_FILTERSCALE_32BIT ;
31+ filter .FilterActivation = ENABLE ;
32+
33+ HAL_CAN_ConfigFilter (& can_handle , & filter );
34+ }
2135
2236// Initialize CAN peripheral settings, but don't actually start the peripheral
2337void can_init (void )
@@ -36,19 +50,6 @@ void can_init(void)
3650 GPIO_InitStruct .Alternate = GPIO_AF4_CAN ;
3751 HAL_GPIO_Init (GPIOB , & GPIO_InitStruct );
3852
39-
40- // Initialize default CAN filter configuration
41- filter .FilterIdHigh = 0 ;
42- filter .FilterIdLow = 0 ;
43- filter .FilterMaskIdHigh = 0 ;
44- filter .FilterMaskIdLow = 0 ;
45- filter .FilterFIFOAssignment = CAN_RX_FIFO0 ;
46- filter .FilterBank = 0 ;
47- filter .FilterMode = CAN_FILTERMODE_IDMASK ;
48- filter .FilterScale = CAN_FILTERSCALE_32BIT ;
49- filter .FilterActivation = ENABLE ;
50-
51-
5253 // default to 125 kbit/s
5354 prescaler = 48 ;
5455 can_handle .Instance = CAN ;
@@ -79,7 +80,7 @@ void can_enable(void)
7980 can_handle .Init .TransmitFifoPriority = ENABLE ;
8081 HAL_CAN_Init (& can_handle );
8182
82- HAL_CAN_ConfigFilter ( & can_handle , & filter );
83+ can_set_filter ( );
8384
8485 HAL_CAN_Start (& can_handle );
8586 bus_state = ON_BUS ;
0 commit comments