diff --git a/drivers/exti.c b/drivers/exti.c index 4f518e1..1139105 100644 --- a/drivers/exti.c +++ b/drivers/exti.c @@ -193,35 +193,35 @@ void exti_reset_peripheral(void) void hdr_exti0(void) { nvic_clear_pending(NVIC_IRQ_EXTI0); - regs->PR.PR0 = 1; + reg_set(regs->PR, EXTI_PR_PR0); callbacks[0](); } void hdr_exti1(void) { nvic_clear_pending(NVIC_IRQ_EXTI1); - regs->PR.PR1 = 1; + reg_set(regs->PR, EXTI_PR_PR1); callbacks[1](); } void hdr_exti2(void) { nvic_clear_pending(NVIC_IRQ_EXTI2); - regs->PR.PR2 = 1; + reg_set(regs->PR, EXTI_PR_PR2); callbacks[2](); } void hdr_exti3(void) { nvic_clear_pending(NVIC_IRQ_EXTI3); - regs->PR.PR3 = 1; + reg_set(regs->PR, EXTI_PR_PR3); callbacks[3](); } void hdr_exti4(void) { nvic_clear_pending(NVIC_IRQ_EXTI4); - regs->PR.PR4 = 1; + reg_set(regs->PR, EXTI_PR_PR4); callbacks[4](); } @@ -250,21 +250,21 @@ void hdr_exti15_10(void) void hdr_pvd(void) { nvic_clear_pending(NVIC_IRQ_PVD); - regs->PR.PR16 = 1; + reg_set(regs->PR, EXTI_PR_PR16); callbacks[16](); } void hdr_rtc_alarm(void) { nvic_clear_pending(NVIC_IRQ_RTC_ALARM); - regs->PR.PR17 = 1; + reg_set(regs->PR, EXTI_PR_PR17); callbacks[17](); } void hdr_usb_wakeup(void) { nvic_clear_pending(NVIC_IRQ_USB_WAKEUP); - regs->PR.PR18 = 1; + reg_set(regs->PR, EXTI_PR_PR18); callbacks[18](); } diff --git a/drivers/exti_regs.h b/drivers/exti_regs.h index c5d884f..74c0ddd 100644 --- a/drivers/exti_regs.h +++ b/drivers/exti_regs.h @@ -11,6 +11,8 @@ //--includes-------------------------------------------------------------------- +#include "reg.h" + #include "stdint.h" @@ -44,6 +46,27 @@ union EXTI_IMR { uint32_t word; }; +#define EXTI_IMR_MR0 reg_def( 0, 1) +#define EXTI_IMR_MR1 reg_def( 1, 1) +#define EXTI_IMR_MR2 reg_def( 2, 1) +#define EXTI_IMR_MR3 reg_def( 3, 1) +#define EXTI_IMR_MR4 reg_def( 4, 1) +#define EXTI_IMR_MR5 reg_def( 5, 1) +#define EXTI_IMR_MR6 reg_def( 6, 1) +#define EXTI_IMR_MR7 reg_def( 7, 1) +#define EXTI_IMR_MR8 reg_def( 8, 1) +#define EXTI_IMR_MR9 reg_def( 9, 1) +#define EXTI_IMR_MR10 reg_def(10, 1) +#define EXTI_IMR_MR11 reg_def(11, 1) +#define EXTI_IMR_MR12 reg_def(12, 1) +#define EXTI_IMR_MR13 reg_def(13, 1) +#define EXTI_IMR_MR14 reg_def(14, 1) +#define EXTI_IMR_MR15 reg_def(15, 1) +#define EXTI_IMR_MR16 reg_def(16, 1) +#define EXTI_IMR_MR17 reg_def(17, 1) +#define EXTI_IMR_MR18 reg_def(18, 1) +#define EXTI_IMR_reserved1 reg_def(19, 13) + union EXTI_EMR { struct __attribute__((packed)) { uint32_t MR0:1; @@ -70,6 +93,27 @@ union EXTI_EMR { uint32_t word; }; +#define EXTI_EMR_MR0 reg_def( 0, 1) +#define EXTI_EMR_MR1 reg_def( 1, 1) +#define EXTI_EMR_MR2 reg_def( 2, 1) +#define EXTI_EMR_MR3 reg_def( 3, 1) +#define EXTI_EMR_MR4 reg_def( 4, 1) +#define EXTI_EMR_MR5 reg_def( 5, 1) +#define EXTI_EMR_MR6 reg_def( 6, 1) +#define EXTI_EMR_MR7 reg_def( 7, 1) +#define EXTI_EMR_MR8 reg_def( 8, 1) +#define EXTI_EMR_MR9 reg_def( 9, 1) +#define EXTI_EMR_MR10 reg_def(10, 1) +#define EXTI_EMR_MR11 reg_def(11, 1) +#define EXTI_EMR_MR12 reg_def(12, 1) +#define EXTI_EMR_MR13 reg_def(13, 1) +#define EXTI_EMR_MR14 reg_def(14, 1) +#define EXTI_EMR_MR15 reg_def(15, 1) +#define EXTI_EMR_MR16 reg_def(16, 1) +#define EXTI_EMR_MR17 reg_def(17, 1) +#define EXTI_EMR_MR18 reg_def(18, 1) +#define EXTI_EMR_reserved1 reg_def(19, 13) + union EXTI_RTSR { struct __attribute__((packed)) { uint32_t TR0:1; @@ -96,6 +140,27 @@ union EXTI_RTSR { uint32_t word; }; +#define EXTI_RTSR_TR0 reg_def( 0, 1) +#define EXTI_RTSR_TR1 reg_def( 1, 1) +#define EXTI_RTSR_TR2 reg_def( 2, 1) +#define EXTI_RTSR_TR3 reg_def( 3, 1) +#define EXTI_RTSR_TR4 reg_def( 4, 1) +#define EXTI_RTSR_TR5 reg_def( 5, 1) +#define EXTI_RTSR_TR6 reg_def( 6, 1) +#define EXTI_RTSR_TR7 reg_def( 7, 1) +#define EXTI_RTSR_TR8 reg_def( 8, 1) +#define EXTI_RTSR_TR9 reg_def( 9, 1) +#define EXTI_RTSR_TR10 reg_def(10, 1) +#define EXTI_RTSR_TR11 reg_def(11, 1) +#define EXTI_RTSR_TR12 reg_def(12, 1) +#define EXTI_RTSR_TR13 reg_def(13, 1) +#define EXTI_RTSR_TR14 reg_def(14, 1) +#define EXTI_RTSR_TR15 reg_def(15, 1) +#define EXTI_RTSR_TR16 reg_def(16, 1) +#define EXTI_RTSR_TR17 reg_def(17, 1) +#define EXTI_RTSR_TR18 reg_def(18, 1) +#define EXTI_RTSR_reserved1 reg_def(19, 13) + union EXTI_FTSR { struct __attribute__((packed)) { uint32_t TR0:1; @@ -122,6 +187,27 @@ union EXTI_FTSR { uint32_t word; }; +#define EXTI_FTSR_TR0 reg_def( 0, 1) +#define EXTI_FTSR_TR1 reg_def( 1, 1) +#define EXTI_FTSR_TR2 reg_def( 2, 1) +#define EXTI_FTSR_TR3 reg_def( 3, 1) +#define EXTI_FTSR_TR4 reg_def( 4, 1) +#define EXTI_FTSR_TR5 reg_def( 5, 1) +#define EXTI_FTSR_TR6 reg_def( 6, 1) +#define EXTI_FTSR_TR7 reg_def( 7, 1) +#define EXTI_FTSR_TR8 reg_def( 8, 1) +#define EXTI_FTSR_TR9 reg_def( 9, 1) +#define EXTI_FTSR_TR10 reg_def(10, 1) +#define EXTI_FTSR_TR11 reg_def(11, 1) +#define EXTI_FTSR_TR12 reg_def(12, 1) +#define EXTI_FTSR_TR13 reg_def(13, 1) +#define EXTI_FTSR_TR14 reg_def(14, 1) +#define EXTI_FTSR_TR15 reg_def(15, 1) +#define EXTI_FTSR_TR16 reg_def(16, 1) +#define EXTI_FTSR_TR17 reg_def(17, 1) +#define EXTI_FTSR_TR18 reg_def(18, 1) +#define EXTI_FTSR_reserved1 reg_def(19, 13) + union EXTI_SWIER { struct __attribute__((packed)) { uint32_t SWIER0:1; @@ -148,6 +234,27 @@ union EXTI_SWIER { uint32_t word; }; +#define EXTI_SWIER_SWIER0 reg_def( 0, 1) +#define EXTI_SWIER_SWIER1 reg_def( 1, 1) +#define EXTI_SWIER_SWIER2 reg_def( 2, 1) +#define EXTI_SWIER_SWIER3 reg_def( 3, 1) +#define EXTI_SWIER_SWIER4 reg_def( 4, 1) +#define EXTI_SWIER_SWIER5 reg_def( 5, 1) +#define EXTI_SWIER_SWIER6 reg_def( 6, 1) +#define EXTI_SWIER_SWIER7 reg_def( 7, 1) +#define EXTI_SWIER_SWIER8 reg_def( 8, 1) +#define EXTI_SWIER_SWIER9 reg_def( 9, 1) +#define EXTI_SWIER_SWIER10 reg_def(10, 1) +#define EXTI_SWIER_SWIER11 reg_def(11, 1) +#define EXTI_SWIER_SWIER12 reg_def(12, 1) +#define EXTI_SWIER_SWIER13 reg_def(13, 1) +#define EXTI_SWIER_SWIER14 reg_def(14, 1) +#define EXTI_SWIER_SWIER15 reg_def(15, 1) +#define EXTI_SWIER_SWIER16 reg_def(16, 1) +#define EXTI_SWIER_SWIER17 reg_def(17, 1) +#define EXTI_SWIER_SWIER18 reg_def(18, 1) +#define EXTI_SWIER_reserved1 reg_def(19, 13) + union EXTI_PR { struct __attribute__((packed)) { uint32_t PR0:1; @@ -174,6 +281,27 @@ union EXTI_PR { uint32_t word; }; +#define EXTI_PR_PR0 reg_def( 0, 1) +#define EXTI_PR_PR1 reg_def( 1, 1) +#define EXTI_PR_PR2 reg_def( 2, 1) +#define EXTI_PR_PR3 reg_def( 3, 1) +#define EXTI_PR_PR4 reg_def( 4, 1) +#define EXTI_PR_PR5 reg_def( 5, 1) +#define EXTI_PR_PR6 reg_def( 6, 1) +#define EXTI_PR_PR7 reg_def( 7, 1) +#define EXTI_PR_PR8 reg_def( 8, 1) +#define EXTI_PR_PR9 reg_def( 9, 1) +#define EXTI_PR_PR10 reg_def(10, 1) +#define EXTI_PR_PR11 reg_def(11, 1) +#define EXTI_PR_PR12 reg_def(12, 1) +#define EXTI_PR_PR13 reg_def(13, 1) +#define EXTI_PR_PR14 reg_def(14, 1) +#define EXTI_PR_PR15 reg_def(15, 1) +#define EXTI_PR_PR16 reg_def(16, 1) +#define EXTI_PR_PR17 reg_def(17, 1) +#define EXTI_PR_PR18 reg_def(18, 1) +#define EXTI_PR_reserved1 reg_def(19, 13) + struct __attribute__((packed)) EXTI { union EXTI_IMR IMR; union EXTI_EMR EMR;