diff --git a/include/libopencm3/stm32/can.h b/include/libopencm3/stm32/can.h index d6636d5f..cdb5df19 100644 --- a/include/libopencm3/stm32/can.h +++ b/include/libopencm3/stm32/can.h @@ -458,7 +458,7 @@ /* --- CAN_TIxR values ------------------------------------------------------ */ /* STID[10:0]: Standard identifier */ -#define CAN_TIxR_STID_MASK (0x3FF << 21) +#define CAN_TIxR_STID_MASK (0x7FF << 21) #define CAN_TIxR_STID_SHIFT 21 /* EXID[15:0]: Extended identifier */ diff --git a/lib/stm32/f1/can.c b/lib/stm32/can.c similarity index 96% rename from lib/stm32/f1/can.c rename to lib/stm32/can.c index fc7e0e75..73036f4c 100644 --- a/lib/stm32/f1/can.c +++ b/lib/stm32/can.c @@ -18,7 +18,16 @@ */ #include -#include + +#if defined(STM32F1) +# include +#elif defined(STM32F2) +# include +#elif defined(STM32F4) +# include +#else +# error "stm32 family not defined." +#endif void can_reset(u32 canport) { @@ -299,5 +308,5 @@ void can_receive(u32 canport, u8 fifo, bool release, u32 *id, bool *ext, /* Release the FIFO. */ if (release) - can_fifo_release(CAN1, 0); + can_fifo_release(canport, fifo); }