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