Skip to content

Commit 9b1778f

Browse files
committed
stm32/i2c: Move I2C IRQ handlers from stm32_it.c to i2c.c.
And add MP_STATIC_ASSERT to statically check that the IRQ names are correct on the MCU that it's compiled for. Signed-off-by: Damien George <[email protected]>
1 parent 1b578fe commit 9b1778f

File tree

2 files changed

+68
-61
lines changed

2 files changed

+68
-61
lines changed

ports/stm32/i2c.c

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -590,4 +590,72 @@ int i2c_find_peripheral(mp_obj_t id) {
590590
return i2c_id;
591591
}
592592

593+
#if MICROPY_PY_PYB_LEGACY
594+
595+
#if defined(MICROPY_HW_I2C1_SCL)
596+
void I2C1_EV_IRQHandler(void) {
597+
MP_STATIC_ASSERT(I2C1_EV_IRQn > 0);
598+
IRQ_ENTER(I2C1_EV_IRQn);
599+
i2c_ev_irq_handler(1);
600+
IRQ_EXIT(I2C1_EV_IRQn);
601+
}
602+
603+
void I2C1_ER_IRQHandler(void) {
604+
MP_STATIC_ASSERT(I2C1_ER_IRQn > 0);
605+
IRQ_ENTER(I2C1_ER_IRQn);
606+
i2c_er_irq_handler(1);
607+
IRQ_EXIT(I2C1_ER_IRQn);
608+
}
609+
#endif // defined(MICROPY_HW_I2C1_SCL)
610+
611+
#if defined(MICROPY_HW_I2C2_SCL)
612+
void I2C2_EV_IRQHandler(void) {
613+
MP_STATIC_ASSERT(I2C2_EV_IRQn > 0);
614+
IRQ_ENTER(I2C2_EV_IRQn);
615+
i2c_ev_irq_handler(2);
616+
IRQ_EXIT(I2C2_EV_IRQn);
617+
}
618+
619+
void I2C2_ER_IRQHandler(void) {
620+
MP_STATIC_ASSERT(I2C2_ER_IRQn > 0);
621+
IRQ_ENTER(I2C2_ER_IRQn);
622+
i2c_er_irq_handler(2);
623+
IRQ_EXIT(I2C2_ER_IRQn);
624+
}
625+
#endif // defined(MICROPY_HW_I2C2_SCL)
626+
627+
#if defined(MICROPY_HW_I2C3_SCL)
628+
void I2C3_EV_IRQHandler(void) {
629+
MP_STATIC_ASSERT(I2C3_EV_IRQn > 0);
630+
IRQ_ENTER(I2C3_EV_IRQn);
631+
i2c_ev_irq_handler(3);
632+
IRQ_EXIT(I2C3_EV_IRQn);
633+
}
634+
635+
void I2C3_ER_IRQHandler(void) {
636+
MP_STATIC_ASSERT(I2C3_ER_IRQn > 0);
637+
IRQ_ENTER(I2C3_ER_IRQn);
638+
i2c_er_irq_handler(3);
639+
IRQ_EXIT(I2C3_ER_IRQn);
640+
}
641+
#endif // defined(MICROPY_HW_I2C3_SCL)
642+
643+
#if defined(MICROPY_HW_I2C4_SCL)
644+
void I2C4_EV_IRQHandler(void) {
645+
MP_STATIC_ASSERT(I2C4_EV_IRQn > 0);
646+
IRQ_ENTER(I2C4_EV_IRQn);
647+
i2c_ev_irq_handler(4);
648+
IRQ_EXIT(I2C4_EV_IRQn);
649+
}
650+
651+
void I2C4_ER_IRQHandler(void) {
652+
MP_STATIC_ASSERT(I2C4_ER_IRQn > 0);
653+
IRQ_ENTER(I2C4_ER_IRQn);
654+
i2c_er_irq_handler(4);
655+
IRQ_EXIT(I2C4_ER_IRQn);
656+
}
657+
#endif // defined(MICROPY_HW_I2C4_SCL)
658+
659+
#endif // MICROPY_PY_PYB_LEGACY
660+
593661
#endif // MICROPY_HW_ENABLE_HW_I2C

ports/stm32/stm32_it.c

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@
8080
#include "uart.h"
8181
#include "storage.h"
8282
#include "dma.h"
83-
#include "i2c.h"
8483
#include "usb.h"
8584

8685
#if defined(MICROPY_HW_USB_FS)
@@ -987,63 +986,3 @@ void LPUART2_IRQHandler(void) {
987986
IRQ_EXIT(LPUART2_IRQn);
988987
}
989988
#endif
990-
991-
#if MICROPY_PY_PYB_LEGACY
992-
993-
#if defined(MICROPY_HW_I2C1_SCL)
994-
void I2C1_EV_IRQHandler(void) {
995-
IRQ_ENTER(I2C1_EV_IRQn);
996-
i2c_ev_irq_handler(1);
997-
IRQ_EXIT(I2C1_EV_IRQn);
998-
}
999-
1000-
void I2C1_ER_IRQHandler(void) {
1001-
IRQ_ENTER(I2C1_ER_IRQn);
1002-
i2c_er_irq_handler(1);
1003-
IRQ_EXIT(I2C1_ER_IRQn);
1004-
}
1005-
#endif // defined(MICROPY_HW_I2C1_SCL)
1006-
1007-
#if defined(MICROPY_HW_I2C2_SCL)
1008-
void I2C2_EV_IRQHandler(void) {
1009-
IRQ_ENTER(I2C2_EV_IRQn);
1010-
i2c_ev_irq_handler(2);
1011-
IRQ_EXIT(I2C2_EV_IRQn);
1012-
}
1013-
1014-
void I2C2_ER_IRQHandler(void) {
1015-
IRQ_ENTER(I2C2_ER_IRQn);
1016-
i2c_er_irq_handler(2);
1017-
IRQ_EXIT(I2C2_ER_IRQn);
1018-
}
1019-
#endif // defined(MICROPY_HW_I2C2_SCL)
1020-
1021-
#if defined(MICROPY_HW_I2C3_SCL)
1022-
void I2C3_EV_IRQHandler(void) {
1023-
IRQ_ENTER(I2C3_EV_IRQn);
1024-
i2c_ev_irq_handler(3);
1025-
IRQ_EXIT(I2C3_EV_IRQn);
1026-
}
1027-
1028-
void I2C3_ER_IRQHandler(void) {
1029-
IRQ_ENTER(I2C3_ER_IRQn);
1030-
i2c_er_irq_handler(3);
1031-
IRQ_EXIT(I2C3_ER_IRQn);
1032-
}
1033-
#endif // defined(MICROPY_HW_I2C3_SCL)
1034-
1035-
#if defined(MICROPY_HW_I2C4_SCL)
1036-
void I2C4_EV_IRQHandler(void) {
1037-
IRQ_ENTER(I2C4_EV_IRQn);
1038-
i2c_ev_irq_handler(4);
1039-
IRQ_EXIT(I2C4_EV_IRQn);
1040-
}
1041-
1042-
void I2C4_ER_IRQHandler(void) {
1043-
IRQ_ENTER(I2C4_ER_IRQn);
1044-
i2c_er_irq_handler(4);
1045-
IRQ_EXIT(I2C4_ER_IRQn);
1046-
}
1047-
#endif // defined(MICROPY_HW_I2C4_SCL)
1048-
1049-
#endif // MICROPY_PY_PYB_LEGACY

0 commit comments

Comments
 (0)