Replace exti's bitfields with macros

This commit is contained in:
Steins7 2023-07-07 17:41:18 +02:00
parent 26bb798b79
commit ebe30a4a7a
2 changed files with 136 additions and 8 deletions

View File

@ -193,35 +193,35 @@ void exti_reset_peripheral(void)
void hdr_exti0(void) void hdr_exti0(void)
{ {
nvic_clear_pending(NVIC_IRQ_EXTI0); nvic_clear_pending(NVIC_IRQ_EXTI0);
regs->PR.PR0 = 1; reg_set(regs->PR, EXTI_PR_PR0);
callbacks[0](); callbacks[0]();
} }
void hdr_exti1(void) void hdr_exti1(void)
{ {
nvic_clear_pending(NVIC_IRQ_EXTI1); nvic_clear_pending(NVIC_IRQ_EXTI1);
regs->PR.PR1 = 1; reg_set(regs->PR, EXTI_PR_PR1);
callbacks[1](); callbacks[1]();
} }
void hdr_exti2(void) void hdr_exti2(void)
{ {
nvic_clear_pending(NVIC_IRQ_EXTI2); nvic_clear_pending(NVIC_IRQ_EXTI2);
regs->PR.PR2 = 1; reg_set(regs->PR, EXTI_PR_PR2);
callbacks[2](); callbacks[2]();
} }
void hdr_exti3(void) void hdr_exti3(void)
{ {
nvic_clear_pending(NVIC_IRQ_EXTI3); nvic_clear_pending(NVIC_IRQ_EXTI3);
regs->PR.PR3 = 1; reg_set(regs->PR, EXTI_PR_PR3);
callbacks[3](); callbacks[3]();
} }
void hdr_exti4(void) void hdr_exti4(void)
{ {
nvic_clear_pending(NVIC_IRQ_EXTI4); nvic_clear_pending(NVIC_IRQ_EXTI4);
regs->PR.PR4 = 1; reg_set(regs->PR, EXTI_PR_PR4);
callbacks[4](); callbacks[4]();
} }
@ -250,21 +250,21 @@ void hdr_exti15_10(void)
void hdr_pvd(void) void hdr_pvd(void)
{ {
nvic_clear_pending(NVIC_IRQ_PVD); nvic_clear_pending(NVIC_IRQ_PVD);
regs->PR.PR16 = 1; reg_set(regs->PR, EXTI_PR_PR16);
callbacks[16](); callbacks[16]();
} }
void hdr_rtc_alarm(void) void hdr_rtc_alarm(void)
{ {
nvic_clear_pending(NVIC_IRQ_RTC_ALARM); nvic_clear_pending(NVIC_IRQ_RTC_ALARM);
regs->PR.PR17 = 1; reg_set(regs->PR, EXTI_PR_PR17);
callbacks[17](); callbacks[17]();
} }
void hdr_usb_wakeup(void) void hdr_usb_wakeup(void)
{ {
nvic_clear_pending(NVIC_IRQ_USB_WAKEUP); nvic_clear_pending(NVIC_IRQ_USB_WAKEUP);
regs->PR.PR18 = 1; reg_set(regs->PR, EXTI_PR_PR18);
callbacks[18](); callbacks[18]();
} }

View File

@ -11,6 +11,8 @@
//--includes-------------------------------------------------------------------- //--includes--------------------------------------------------------------------
#include "reg.h"
#include "stdint.h" #include "stdint.h"
@ -44,6 +46,27 @@ union EXTI_IMR {
uint32_t word; 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 { union EXTI_EMR {
struct __attribute__((packed)) { struct __attribute__((packed)) {
uint32_t MR0:1; uint32_t MR0:1;
@ -70,6 +93,27 @@ union EXTI_EMR {
uint32_t word; 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 { union EXTI_RTSR {
struct __attribute__((packed)) { struct __attribute__((packed)) {
uint32_t TR0:1; uint32_t TR0:1;
@ -96,6 +140,27 @@ union EXTI_RTSR {
uint32_t word; 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 { union EXTI_FTSR {
struct __attribute__((packed)) { struct __attribute__((packed)) {
uint32_t TR0:1; uint32_t TR0:1;
@ -122,6 +187,27 @@ union EXTI_FTSR {
uint32_t word; 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 { union EXTI_SWIER {
struct __attribute__((packed)) { struct __attribute__((packed)) {
uint32_t SWIER0:1; uint32_t SWIER0:1;
@ -148,6 +234,27 @@ union EXTI_SWIER {
uint32_t word; 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 { union EXTI_PR {
struct __attribute__((packed)) { struct __attribute__((packed)) {
uint32_t PR0:1; uint32_t PR0:1;
@ -174,6 +281,27 @@ union EXTI_PR {
uint32_t word; 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 { struct __attribute__((packed)) EXTI {
union EXTI_IMR IMR; union EXTI_IMR IMR;
union EXTI_EMR EMR; union EXTI_EMR EMR;