@@ -262,14 +262,14 @@ int can_read(can_t *obj, CAN_Message *msg, int handle)
262
262
}
263
263
264
264
/* Get the Id */
265
- msg -> format = (CANFormat )((uint8_t )0x04 & can -> sFIFOMailBox [handle ].RIR );
265
+ msg -> format = (CANFormat )((( uint8_t )0x04 & can -> sFIFOMailBox [handle ].RIR ) >> 2 );
266
266
if (!msg -> format ) {
267
267
msg -> id = (uint32_t )0x000007FF & (can -> sFIFOMailBox [handle ].RIR >> 21 );
268
268
} else {
269
269
msg -> id = (uint32_t )0x1FFFFFFF & (can -> sFIFOMailBox [handle ].RIR >> 3 );
270
270
}
271
271
272
- msg -> type = (CANType )((uint8_t )0x02 & can -> sFIFOMailBox [handle ].RIR );
272
+ msg -> type = (CANType )((( uint8_t )0x02 & can -> sFIFOMailBox [handle ].RIR ) >> 1 );
273
273
/* Get the DLC */
274
274
msg -> len = (uint8_t )0x0F & can -> sFIFOMailBox [handle ].RDTR ;
275
275
/* Get the FMI */
@@ -375,10 +375,10 @@ int can_mode(can_t *obj, CanMode mode)
375
375
return success ;
376
376
}
377
377
378
- int can_filter (can_t * obj , uint32_t id , uint32_t mask , CANFormat format , int32_t handle )
378
+ int can_filter (can_t * obj , uint32_t id , uint32_t mask , CANFormat format , int32_t handle )
379
379
{
380
380
int retval = 0 ;
381
-
381
+
382
382
// filter for CANAny format cannot be configured for STM32
383
383
if ((format == CANStandard ) || (format == CANExtended )) {
384
384
CanHandle .Instance = (CAN_TypeDef * )(obj -> can );
@@ -398,11 +398,11 @@ int can_filter(can_t *obj, uint32_t id, uint32_t mask, CANFormat format, int32_t
398
398
sFilterConfig .FilterMaskIdHigh = mask >> 13 ;
399
399
sFilterConfig .FilterMaskIdLow = (0x00FF & (mask << 3 )) | (1 << 2 );
400
400
}
401
-
401
+
402
402
sFilterConfig .FilterFIFOAssignment = 0 ;
403
403
sFilterConfig .FilterActivation = ENABLE ;
404
404
sFilterConfig .BankNumber = 14 + handle ;
405
-
405
+
406
406
HAL_CAN_ConfigFilter (& CanHandle , & sFilterConfig );
407
407
retval = handle ;
408
408
}
@@ -461,37 +461,47 @@ static void can_irq(CANName name, int id)
461
461
}
462
462
463
463
#if defined(TARGET_STM32F0 )
464
- void CAN_IRQHandler (void ) {
464
+ void CAN_IRQHandler (void )
465
+ {
465
466
can_irq (CAN_1 , 0 );
466
467
}
467
468
#elif defined(TARGET_STM32F3 )
468
- void CAN_RX0_IRQHandler (void ) {
469
+ void CAN_RX0_IRQHandler (void )
470
+ {
469
471
can_irq (CAN_1 , 0 );
470
472
}
471
- void CAN_TX_IRQHandler (void ) {
473
+ void CAN_TX_IRQHandler (void )
474
+ {
472
475
can_irq (CAN_1 , 0 );
473
476
}
474
- void CAN_SCE_IRQHandler (void ) {
477
+ void CAN_SCE_IRQHandler (void )
478
+ {
475
479
can_irq (CAN_1 , 0 );
476
480
}
477
481
#else
478
- void CAN1_RX0_IRQHandler (void ) {
482
+ void CAN1_RX0_IRQHandler (void )
483
+ {
479
484
can_irq (CAN_1 , 0 );
480
485
}
481
- void CAN1_TX_IRQHandler (void ) {
486
+ void CAN1_TX_IRQHandler (void )
487
+ {
482
488
can_irq (CAN_1 , 0 );
483
489
}
484
- void CAN1_SCE_IRQHandler (void ) {
490
+ void CAN1_SCE_IRQHandler (void )
491
+ {
485
492
can_irq (CAN_1 , 0 );
486
493
}
487
494
#if defined(CAN2_BASE ) && (CAN_NUM == 2 )
488
- void CAN2_RX0_IRQHandler (void ) {
495
+ void CAN2_RX0_IRQHandler (void )
496
+ {
489
497
can_irq (CAN_2 , 1 );
490
498
}
491
- void CAN2_TX_IRQHandler (void ) {
499
+ void CAN2_TX_IRQHandler (void )
500
+ {
492
501
can_irq (CAN_2 , 1 );
493
502
}
494
- void CAN2_SCE_IRQHandler (void ) {
503
+ void CAN2_SCE_IRQHandler (void )
504
+ {
495
505
can_irq (CAN_2 , 1 );
496
506
}
497
507
#endif // defined(CAN2_BASE) && (CAN_NUM == 2)
0 commit comments