diff options
Diffstat (limited to 'example/stm32u083.hpp')
-rw-r--r-- | example/stm32u083.hpp | 7431 |
1 files changed, 7431 insertions, 0 deletions
diff --git a/example/stm32u083.hpp b/example/stm32u083.hpp new file mode 100644 index 0000000..bafd7d8 --- /dev/null +++ b/example/stm32u083.hpp @@ -0,0 +1,7431 @@ +#include "funreg.hpp" + +namespace STM32U083 { + using namespace fr; + namespace ADC { + struct ISR : public MemRegister<uint32_t, 0x40012400> { + using ADRDY = RegisterMask<ISR, (0x1u << 0x0u)>; + using EOSMP = RegisterMask<ISR, (0x1u << 0x1u)>; + using EOC = RegisterMask<ISR, (0x1u << 0x2u)>; + using EOS = RegisterMask<ISR, (0x1u << 0x3u)>; + using OVR = RegisterMask<ISR, (0x1u << 0x4u)>; + using AWD1 = RegisterMask<ISR, (0x1u << 0x7u)>; + using AWD2 = RegisterMask<ISR, (0x1u << 0x8u)>; + using AWD3 = RegisterMask<ISR, (0x1u << 0x9u)>; + using EOCAL = RegisterMask<ISR, (0x1u << 0xbu)>; + using CCRDY = RegisterMask<ISR, (0x1u << 0xdu)>; + }; + struct IER : public MemRegister<uint32_t, 0x40012404> { + using ADRDYIE = RegisterMask<IER, (0x1u << 0x0u)>; + using EOSMPIE = RegisterMask<IER, (0x1u << 0x1u)>; + using EOCIE = RegisterMask<IER, (0x1u << 0x2u)>; + using EOSIE = RegisterMask<IER, (0x1u << 0x3u)>; + using OVRIE = RegisterMask<IER, (0x1u << 0x4u)>; + using AWD1IE = RegisterMask<IER, (0x1u << 0x7u)>; + using AWD2IE = RegisterMask<IER, (0x1u << 0x8u)>; + using AWD3IE = RegisterMask<IER, (0x1u << 0x9u)>; + using EOCALIE = RegisterMask<IER, (0x1u << 0xbu)>; + using CCRDYIE = RegisterMask<IER, (0x1u << 0xdu)>; + }; + struct CR : public MemRegister<uint32_t, 0x40012408> { + using ADEN = RegisterMask<CR, (0x1u << 0x0u)>; + using ADDIS = RegisterMask<CR, (0x1u << 0x1u)>; + using ADSTART = RegisterMask<CR, (0x1u << 0x2u)>; + using ADSTP = RegisterMask<CR, (0x1u << 0x4u)>; + using ADVREGEN = RegisterMask<CR, (0x1u << 0x1cu)>; + using ADCAL = RegisterMask<CR, (0x1u << 0x1fu)>; + }; + struct CFGR1 : public MemRegister<uint32_t, 0x4001240c> { + using DMAEN = RegisterMask<CFGR1, (0x1u << 0x0u)>; + using DMACFG = RegisterMask<CFGR1, (0x1u << 0x1u)>; + using SCANDIR = RegisterMask<CFGR1, (0x1u << 0x2u)>; + using RES = RegisterMask<CFGR1, (0x3u << 0x3u)>; + using ALIGN = RegisterMask<CFGR1, (0x1u << 0x5u)>; + using EXTSEL = RegisterMask<CFGR1, (0x7u << 0x6u)>; + using EXTEN = RegisterMask<CFGR1, (0x3u << 0xau)>; + using OVRMOD = RegisterMask<CFGR1, (0x1u << 0xcu)>; + using CONT = RegisterMask<CFGR1, (0x1u << 0xdu)>; + using WAIT = RegisterMask<CFGR1, (0x1u << 0xeu)>; + using AUTOFF = RegisterMask<CFGR1, (0x1u << 0xfu)>; + using DISCEN = RegisterMask<CFGR1, (0x1u << 0x10u)>; + using CHSELRMOD = RegisterMask<CFGR1, (0x1u << 0x15u)>; + using AWD1SGL = RegisterMask<CFGR1, (0x1u << 0x16u)>; + using AWD1EN = RegisterMask<CFGR1, (0x1u << 0x17u)>; + using AWD1CH = RegisterMask<CFGR1, (0x1fu << 0x1au)>; + }; + struct CFGR2 : public MemRegister<uint32_t, 0x40012410> { + using OVSE = RegisterMask<CFGR2, (0x1u << 0x0u)>; + using OVSR = RegisterMask<CFGR2, (0x7u << 0x2u)>; + using OVSS = RegisterMask<CFGR2, (0xfu << 0x5u)>; + using TOVS = RegisterMask<CFGR2, (0x1u << 0x9u)>; + using LFTRIG = RegisterMask<CFGR2, (0x1u << 0x1du)>; + using CKMODE = RegisterMask<CFGR2, (0x3u << 0x1eu)>; + }; + struct SMPR : public MemRegister<uint32_t, 0x40012414> { + using SMP1 = RegisterMask<SMPR, (0x7u << 0x0u)>; + using SMP2 = RegisterMask<SMPR, (0x7u << 0x4u)>; + using SMPSEL0 = RegisterMask<SMPR, (0x1u << 0x8u)>; + using SMPSEL1 = RegisterMask<SMPR, (0x1u << 0x9u)>; + using SMPSEL2 = RegisterMask<SMPR, (0x1u << 0xau)>; + using SMPSEL3 = RegisterMask<SMPR, (0x1u << 0xbu)>; + using SMPSEL4 = RegisterMask<SMPR, (0x1u << 0xcu)>; + using SMPSEL5 = RegisterMask<SMPR, (0x1u << 0xdu)>; + using SMPSEL6 = RegisterMask<SMPR, (0x1u << 0xeu)>; + using SMPSEL7 = RegisterMask<SMPR, (0x1u << 0xfu)>; + using SMPSEL8 = RegisterMask<SMPR, (0x1u << 0x10u)>; + using SMPSEL9 = RegisterMask<SMPR, (0x1u << 0x11u)>; + using SMPSEL10 = RegisterMask<SMPR, (0x1u << 0x12u)>; + using SMPSEL11 = RegisterMask<SMPR, (0x1u << 0x13u)>; + using SMPSEL12 = RegisterMask<SMPR, (0x1u << 0x14u)>; + using SMPSEL13 = RegisterMask<SMPR, (0x1u << 0x15u)>; + using SMPSEL14 = RegisterMask<SMPR, (0x1u << 0x16u)>; + using SMPSEL15 = RegisterMask<SMPR, (0x1u << 0x17u)>; + using SMPSEL16 = RegisterMask<SMPR, (0x1u << 0x18u)>; + using SMPSEL17 = RegisterMask<SMPR, (0x1u << 0x19u)>; + using SMPSEL18 = RegisterMask<SMPR, (0x1u << 0x1au)>; + using SMPSEL19 = RegisterMask<SMPR, (0x1u << 0x1bu)>; + }; + struct AWD1TR : public MemRegister<uint32_t, 0x40012420> { + using LT1 = RegisterMask<AWD1TR, (0xfffu << 0x0u)>; + using HT1 = RegisterMask<AWD1TR, (0xfffu << 0x10u)>; + }; + struct AWD2TR : public MemRegister<uint32_t, 0x40012424> { + using LT2 = RegisterMask<AWD2TR, (0xfffu << 0x0u)>; + using HT2 = RegisterMask<AWD2TR, (0xfffu << 0x10u)>; + }; + struct CHSELR : public MemRegister<uint32_t, 0x40012428> { + using CHSEL0 = RegisterMask<CHSELR, (0x1u << 0x0u)>; + using CHSEL1 = RegisterMask<CHSELR, (0x1u << 0x1u)>; + using CHSEL2 = RegisterMask<CHSELR, (0x1u << 0x2u)>; + using CHSEL3 = RegisterMask<CHSELR, (0x1u << 0x3u)>; + using CHSEL4 = RegisterMask<CHSELR, (0x1u << 0x4u)>; + using CHSEL5 = RegisterMask<CHSELR, (0x1u << 0x5u)>; + using CHSEL6 = RegisterMask<CHSELR, (0x1u << 0x6u)>; + using CHSEL7 = RegisterMask<CHSELR, (0x1u << 0x7u)>; + using CHSEL8 = RegisterMask<CHSELR, (0x1u << 0x8u)>; + using CHSEL9 = RegisterMask<CHSELR, (0x1u << 0x9u)>; + using CHSEL10 = RegisterMask<CHSELR, (0x1u << 0xau)>; + using CHSEL11 = RegisterMask<CHSELR, (0x1u << 0xbu)>; + using CHSEL12 = RegisterMask<CHSELR, (0x1u << 0xcu)>; + using CHSEL13 = RegisterMask<CHSELR, (0x1u << 0xdu)>; + using CHSEL14 = RegisterMask<CHSELR, (0x1u << 0xeu)>; + using CHSEL15 = RegisterMask<CHSELR, (0x1u << 0xfu)>; + using CHSEL16 = RegisterMask<CHSELR, (0x1u << 0x10u)>; + using CHSEL17 = RegisterMask<CHSELR, (0x1u << 0x11u)>; + using CHSEL18 = RegisterMask<CHSELR, (0x1u << 0x12u)>; + using CHSEL19 = RegisterMask<CHSELR, (0x1u << 0x13u)>; + }; + struct CHSELR_ALTERNATE : public MemRegister<uint32_t, 0x40012428> { + using SQ1 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0x0u)>; + using SQ2 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0x4u)>; + using SQ3 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0x8u)>; + using SQ4 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0xcu)>; + using SQ5 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0x10u)>; + using SQ6 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0x14u)>; + using SQ7 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0x18u)>; + using SQ8 = RegisterMask<CHSELR_ALTERNATE, (0xfu << 0x1cu)>; + }; + struct AWD3TR : public MemRegister<uint32_t, 0x4001242c> { + using LT3 = RegisterMask<AWD3TR, (0xfffu << 0x0u)>; + using HT3 = RegisterMask<AWD3TR, (0xfffu << 0x10u)>; + }; + struct DR : public MemRegister<uint32_t, 0x40012440> { + using DATA = RegisterMask<DR, (0xffffu << 0x0u)>; + }; + struct AWD2CR : public MemRegister<uint32_t, 0x400124a0> { + using AWD2CH0 = RegisterMask<AWD2CR, (0x1u << 0x0u)>; + using AWD2CH1 = RegisterMask<AWD2CR, (0x1u << 0x1u)>; + using AWD2CH2 = RegisterMask<AWD2CR, (0x1u << 0x2u)>; + using AWD2CH3 = RegisterMask<AWD2CR, (0x1u << 0x3u)>; + using AWD2CH4 = RegisterMask<AWD2CR, (0x1u << 0x4u)>; + using AWD2CH5 = RegisterMask<AWD2CR, (0x1u << 0x5u)>; + using AWD2CH6 = RegisterMask<AWD2CR, (0x1u << 0x6u)>; + using AWD2CH7 = RegisterMask<AWD2CR, (0x1u << 0x7u)>; + using AWD2CH8 = RegisterMask<AWD2CR, (0x1u << 0x8u)>; + using AWD2CH9 = RegisterMask<AWD2CR, (0x1u << 0x9u)>; + using AWD2CH10 = RegisterMask<AWD2CR, (0x1u << 0xau)>; + using AWD2CH11 = RegisterMask<AWD2CR, (0x1u << 0xbu)>; + using AWD2CH12 = RegisterMask<AWD2CR, (0x1u << 0xcu)>; + using AWD2CH13 = RegisterMask<AWD2CR, (0x1u << 0xdu)>; + using AWD2CH14 = RegisterMask<AWD2CR, (0x1u << 0xeu)>; + using AWD2CH15 = RegisterMask<AWD2CR, (0x1u << 0xfu)>; + using AWD2CH16 = RegisterMask<AWD2CR, (0x1u << 0x10u)>; + using AWD2CH17 = RegisterMask<AWD2CR, (0x1u << 0x11u)>; + using AWD2CH18 = RegisterMask<AWD2CR, (0x1u << 0x12u)>; + using AWD2CH19 = RegisterMask<AWD2CR, (0x1u << 0x13u)>; + }; + struct AWD3CR : public MemRegister<uint32_t, 0x400124a4> { + using AWD3CH0 = RegisterMask<AWD3CR, (0x1u << 0x0u)>; + using AWD3CH1 = RegisterMask<AWD3CR, (0x1u << 0x1u)>; + using AWD3CH2 = RegisterMask<AWD3CR, (0x1u << 0x2u)>; + using AWD3CH3 = RegisterMask<AWD3CR, (0x1u << 0x3u)>; + using AWD3CH4 = RegisterMask<AWD3CR, (0x1u << 0x4u)>; + using AWD3CH5 = RegisterMask<AWD3CR, (0x1u << 0x5u)>; + using AWD3CH6 = RegisterMask<AWD3CR, (0x1u << 0x6u)>; + using AWD3CH7 = RegisterMask<AWD3CR, (0x1u << 0x7u)>; + using AWD3CH8 = RegisterMask<AWD3CR, (0x1u << 0x8u)>; + using AWD3CH9 = RegisterMask<AWD3CR, (0x1u << 0x9u)>; + using AWD3CH10 = RegisterMask<AWD3CR, (0x1u << 0xau)>; + using AWD3CH11 = RegisterMask<AWD3CR, (0x1u << 0xbu)>; + using AWD3CH12 = RegisterMask<AWD3CR, (0x1u << 0xcu)>; + using AWD3CH13 = RegisterMask<AWD3CR, (0x1u << 0xdu)>; + using AWD3CH14 = RegisterMask<AWD3CR, (0x1u << 0xeu)>; + using AWD3CH15 = RegisterMask<AWD3CR, (0x1u << 0xfu)>; + using AWD3CH16 = RegisterMask<AWD3CR, (0x1u << 0x10u)>; + using AWD3CH17 = RegisterMask<AWD3CR, (0x1u << 0x11u)>; + using AWD3CH18 = RegisterMask<AWD3CR, (0x1u << 0x12u)>; + using AWD3CH19 = RegisterMask<AWD3CR, (0x1u << 0x13u)>; + }; + struct CALFACT : public MemRegister<uint32_t, 0x400124b4> { + using val = RegisterMask<CALFACT, (0x7fu << 0x0u)>; + }; + struct CCR : public MemRegister<uint32_t, 0x40012708> { + using PRESC = RegisterMask<CCR, (0xfu << 0x12u)>; + using VREFEN = RegisterMask<CCR, (0x1u << 0x16u)>; + using TSEN = RegisterMask<CCR, (0x1u << 0x17u)>; + using VBATEN = RegisterMask<CCR, (0x1u << 0x18u)>; + }; + using ALL = RegisterGroup<ISR, IER, CR, CFGR1, CFGR2, SMPR, AWD1TR, AWD2TR, CHSELR, CHSELR_ALTERNATE, AWD3TR, DR, AWD2CR, AWD3CR, CALFACT, CCR>; + } + namespace AES { + struct CR : public MemRegister<uint32_t, 0x40026000> { + using EN = RegisterMask<CR, (0x1u << 0x0u)>; + using DATATYPE = RegisterMask<CR, (0x3u << 0x1u)>; + using MODE = RegisterMask<CR, (0x3u << 0x3u)>; + using CHMOD = RegisterMask<CR, (0x3u << 0x5u)>; + using DMAINEN = RegisterMask<CR, (0x1u << 0xbu)>; + using DMAOUTEN = RegisterMask<CR, (0x1u << 0xcu)>; + using GCMPH = RegisterMask<CR, (0x3u << 0xdu)>; + using CHMOD_1 = RegisterMask<CR, (0x1u << 0x10u)>; + using KEYSIZE = RegisterMask<CR, (0x1u << 0x12u)>; + using NPBLB = RegisterMask<CR, (0xfu << 0x14u)>; + using IPRST = RegisterMask<CR, (0x1u << 0x1fu)>; + }; + struct SR : public MemRegister<uint32_t, 0x40026004> { + using RDERRF = RegisterMask<SR, (0x1u << 0x1u)>; + using WRERRF = RegisterMask<SR, (0x1u << 0x2u)>; + using BUSY = RegisterMask<SR, (0x1u << 0x3u)>; + using KEYVALID = RegisterMask<SR, (0x1u << 0x7u)>; + }; + struct DINR : public MemRegister<uint32_t, 0x40026008> { + using DIN = RegisterMask<DINR, (0x0u << 0x0u)>; + }; + struct DOUTR : public MemRegister<uint32_t, 0x4002600c> { + using DOUT = RegisterMask<DOUTR, (0x0u << 0x0u)>; + }; + struct KEYR0 : public MemRegister<uint32_t, 0x40026010> { + using KEY = RegisterMask<KEYR0, (0x0u << 0x0u)>; + }; + struct KEYR1 : public MemRegister<uint32_t, 0x40026014> { + using KEY = RegisterMask<KEYR1, (0x0u << 0x0u)>; + }; + struct KEYR2 : public MemRegister<uint32_t, 0x40026018> { + using KEY = RegisterMask<KEYR2, (0x0u << 0x0u)>; + }; + struct KEYR3 : public MemRegister<uint32_t, 0x4002601c> { + using KEY = RegisterMask<KEYR3, (0x0u << 0x0u)>; + }; + struct IVR0 : public MemRegister<uint32_t, 0x40026020> { + using IVI = RegisterMask<IVR0, (0x0u << 0x0u)>; + }; + struct IVR1 : public MemRegister<uint32_t, 0x40026024> { + using IVI = RegisterMask<IVR1, (0x0u << 0x0u)>; + }; + struct IVR2 : public MemRegister<uint32_t, 0x40026028> { + using IVI = RegisterMask<IVR2, (0x0u << 0x0u)>; + }; + struct IVR3 : public MemRegister<uint32_t, 0x4002602c> { + using IVI = RegisterMask<IVR3, (0x0u << 0x0u)>; + }; + struct KEYR4 : public MemRegister<uint32_t, 0x40026030> { + using KEY = RegisterMask<KEYR4, (0x0u << 0x0u)>; + }; + struct KEYR5 : public MemRegister<uint32_t, 0x40026034> { + using KEY = RegisterMask<KEYR5, (0x0u << 0x0u)>; + }; + struct KEYR6 : public MemRegister<uint32_t, 0x40026038> { + using KEY = RegisterMask<KEYR6, (0x0u << 0x0u)>; + }; + struct KEYR7 : public MemRegister<uint32_t, 0x4002603c> { + using KEY = RegisterMask<KEYR7, (0x0u << 0x0u)>; + }; + struct SUSPR0 : public MemRegister<uint32_t, 0x40026040> { + using SUSP = RegisterMask<SUSPR0, (0x0u << 0x0u)>; + }; + struct SUSPR1 : public MemRegister<uint32_t, 0x40026044> { + using SUSP = RegisterMask<SUSPR1, (0x0u << 0x0u)>; + }; + struct SUSPR2 : public MemRegister<uint32_t, 0x40026048> { + using SUSP = RegisterMask<SUSPR2, (0x0u << 0x0u)>; + }; + struct SUSPR3 : public MemRegister<uint32_t, 0x4002604c> { + using SUSP = RegisterMask<SUSPR3, (0x0u << 0x0u)>; + }; + struct SUSPR4 : public MemRegister<uint32_t, 0x40026050> { + using SUSP = RegisterMask<SUSPR4, (0x0u << 0x0u)>; + }; + struct SUSPR5 : public MemRegister<uint32_t, 0x40026054> { + using SUSP = RegisterMask<SUSPR5, (0x0u << 0x0u)>; + }; + struct SUSPR6 : public MemRegister<uint32_t, 0x40026058> { + using SUSP = RegisterMask<SUSPR6, (0x0u << 0x0u)>; + }; + struct SUSPR7 : public MemRegister<uint32_t, 0x4002605c> { + using SUSP = RegisterMask<SUSPR7, (0x0u << 0x0u)>; + }; + struct IER : public MemRegister<uint32_t, 0x40026300> { + using CCFIE = RegisterMask<IER, (0x1u << 0x0u)>; + using RWEIE = RegisterMask<IER, (0x1u << 0x1u)>; + using KEIE = RegisterMask<IER, (0x1u << 0x2u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x40026304> { + using CCF = RegisterMask<ISR, (0x1u << 0x0u)>; + using RWEIF = RegisterMask<ISR, (0x1u << 0x1u)>; + using KEIF = RegisterMask<ISR, (0x1u << 0x2u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40026308> { + using CCF = RegisterMask<ICR, (0x1u << 0x0u)>; + using RWEIF = RegisterMask<ICR, (0x1u << 0x1u)>; + using KEIF = RegisterMask<ICR, (0x1u << 0x2u)>; + }; + using ALL = RegisterGroup<CR, SR, DINR, DOUTR, KEYR0, KEYR1, KEYR2, KEYR3, IVR0, IVR1, IVR2, IVR3, KEYR4, KEYR5, KEYR6, KEYR7, SUSPR0, SUSPR1, SUSPR2, SUSPR3, SUSPR4, SUSPR5, SUSPR6, SUSPR7, IER, ISR, ICR>; + } + namespace COMP { + struct COMP1_CSR : public MemRegister<uint32_t, 0x40010200> { + using EN = RegisterMask<COMP1_CSR, (0x1u << 0x0u)>; + using INMSEL = RegisterMask<COMP1_CSR, (0xfu << 0x4u)>; + using INPSEL = RegisterMask<COMP1_CSR, (0x7u << 0x8u)>; + using WINMODE = RegisterMask<COMP1_CSR, (0x1u << 0xbu)>; + using WINOUT = RegisterMask<COMP1_CSR, (0x1u << 0xeu)>; + using POLARITY = RegisterMask<COMP1_CSR, (0x1u << 0xfu)>; + using HYST = RegisterMask<COMP1_CSR, (0x3u << 0x10u)>; + using PWRMODE = RegisterMask<COMP1_CSR, (0x3u << 0x12u)>; + using BLANKSEL = RegisterMask<COMP1_CSR, (0x1fu << 0x14u)>; + using VALUE = RegisterMask<COMP1_CSR, (0x1u << 0x1eu)>; + using LOCK = RegisterMask<COMP1_CSR, (0x1u << 0x1fu)>; + }; + struct COMP2_CSR : public MemRegister<uint32_t, 0x40010204> { + using EN = RegisterMask<COMP2_CSR, (0x1u << 0x0u)>; + using INMSEL = RegisterMask<COMP2_CSR, (0xfu << 0x4u)>; + using INPSEL = RegisterMask<COMP2_CSR, (0x3u << 0x8u)>; + using WINMODE = RegisterMask<COMP2_CSR, (0x1u << 0xbu)>; + using WINOUT = RegisterMask<COMP2_CSR, (0x1u << 0xeu)>; + using POLARITY = RegisterMask<COMP2_CSR, (0x1u << 0xfu)>; + using HYST = RegisterMask<COMP2_CSR, (0x3u << 0x10u)>; + using PWRMODE = RegisterMask<COMP2_CSR, (0x3u << 0x12u)>; + using BLANKSEL = RegisterMask<COMP2_CSR, (0x1fu << 0x14u)>; + using VALUE = RegisterMask<COMP2_CSR, (0x1u << 0x1eu)>; + using LOCK = RegisterMask<COMP2_CSR, (0x1u << 0x1fu)>; + }; + using ALL = RegisterGroup<COMP1_CSR, COMP2_CSR>; + } + namespace CRC { + struct DR : public MemRegister<uint32_t, 0x40023000> { + using val = RegisterMask<DR, (0x0u << 0x0u)>; + }; + struct IDR : public MemRegister<uint32_t, 0x40023004> { + using val = RegisterMask<IDR, (0x0u << 0x0u)>; + }; + struct CR : public MemRegister<uint32_t, 0x40023008> { + using RESET = RegisterMask<CR, (0x1u << 0x0u)>; + using POLYSIZE = RegisterMask<CR, (0x3u << 0x3u)>; + using REV_IN = RegisterMask<CR, (0x3u << 0x5u)>; + using REV_OUT = RegisterMask<CR, (0x3u << 0x7u)>; + using RTYPE_IN = RegisterMask<CR, (0x1u << 0x9u)>; + using RTYPE_OUT = RegisterMask<CR, (0x1u << 0xau)>; + }; + struct INIT : public MemRegister<uint32_t, 0x40023010> { + using CRC_INIT = RegisterMask<INIT, (0x0u << 0x0u)>; + }; + struct POL : public MemRegister<uint32_t, 0x40023014> { + using val = RegisterMask<POL, (0x0u << 0x0u)>; + }; + using ALL = RegisterGroup<DR, IDR, CR, INIT, POL>; + } + namespace CRS { + struct CR : public MemRegister<uint32_t, 0x40006c00> { + using SYNCOKIE = RegisterMask<CR, (0x1u << 0x0u)>; + using SYNCWARNIE = RegisterMask<CR, (0x1u << 0x1u)>; + using ERRIE = RegisterMask<CR, (0x1u << 0x2u)>; + using ESYNCIE = RegisterMask<CR, (0x1u << 0x3u)>; + using CEN = RegisterMask<CR, (0x1u << 0x5u)>; + using AUTOTRIMEN = RegisterMask<CR, (0x1u << 0x6u)>; + using SWSYNC = RegisterMask<CR, (0x1u << 0x7u)>; + using TRIM = RegisterMask<CR, (0x7fu << 0x8u)>; + }; + struct CFGR : public MemRegister<uint32_t, 0x40006c04> { + using RELOAD = RegisterMask<CFGR, (0xffffu << 0x0u)>; + using FELIM = RegisterMask<CFGR, (0xffu << 0x10u)>; + using SYNCDIV = RegisterMask<CFGR, (0x7u << 0x18u)>; + using SYNCSRC = RegisterMask<CFGR, (0x3u << 0x1cu)>; + using SYNCPOL = RegisterMask<CFGR, (0x1u << 0x1fu)>; + }; + struct ISR : public MemRegister<uint32_t, 0x40006c08> { + using SYNCOKF = RegisterMask<ISR, (0x1u << 0x0u)>; + using SYNCWARNF = RegisterMask<ISR, (0x1u << 0x1u)>; + using ERRF = RegisterMask<ISR, (0x1u << 0x2u)>; + using ESYNCF = RegisterMask<ISR, (0x1u << 0x3u)>; + using SYNCERR = RegisterMask<ISR, (0x1u << 0x8u)>; + using SYNCMISS = RegisterMask<ISR, (0x1u << 0x9u)>; + using TRIMOVF = RegisterMask<ISR, (0x1u << 0xau)>; + using FEDIR = RegisterMask<ISR, (0x1u << 0xfu)>; + using FECAP = RegisterMask<ISR, (0xffffu << 0x10u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40006c0c> { + using SYNCOKC = RegisterMask<ICR, (0x1u << 0x0u)>; + using SYNCWARNC = RegisterMask<ICR, (0x1u << 0x1u)>; + using ERRC = RegisterMask<ICR, (0x1u << 0x2u)>; + using ESYNCC = RegisterMask<ICR, (0x1u << 0x3u)>; + }; + using ALL = RegisterGroup<CR, CFGR, ISR, ICR>; + } + namespace DAC { + struct CR : public MemRegister<uint32_t, 0x40007400> { + using EN1 = RegisterMask<CR, (0x1u << 0x0u)>; + using TEN1 = RegisterMask<CR, (0x1u << 0x1u)>; + using TSEL1 = RegisterMask<CR, (0xfu << 0x2u)>; + using WAVE1 = RegisterMask<CR, (0x3u << 0x6u)>; + using MAMP1 = RegisterMask<CR, (0xfu << 0x8u)>; + using DMAEN1 = RegisterMask<CR, (0x1u << 0xcu)>; + using DMAUDRIE1 = RegisterMask<CR, (0x1u << 0xdu)>; + using CEN1 = RegisterMask<CR, (0x1u << 0xeu)>; + }; + struct SWTRGR : public MemRegister<uint32_t, 0x40007404> { + using SWTRIG1 = RegisterMask<SWTRGR, (0x1u << 0x0u)>; + }; + struct DHR12R1 : public MemRegister<uint32_t, 0x40007408> { + using DACC1DHR = RegisterMask<DHR12R1, (0xfffu << 0x0u)>; + }; + struct DHR12L1 : public MemRegister<uint32_t, 0x4000740c> { + using DACC1DHR = RegisterMask<DHR12L1, (0xfffu << 0x4u)>; + }; + struct DHR8R1 : public MemRegister<uint32_t, 0x40007410> { + using DACC1DHR = RegisterMask<DHR8R1, (0xffu << 0x0u)>; + }; + struct DOR1 : public MemRegister<uint32_t, 0x4000742c> { + using DACC1DOR = RegisterMask<DOR1, (0xfffu << 0x0u)>; + }; + struct SR : public MemRegister<uint32_t, 0x40007434> { + using DMAUDR1 = RegisterMask<SR, (0x1u << 0xdu)>; + using CAL_FLAG1 = RegisterMask<SR, (0x1u << 0xeu)>; + using BWST1 = RegisterMask<SR, (0x1u << 0xfu)>; + }; + struct CCR : public MemRegister<uint32_t, 0x40007438> { + using OTRIM1 = RegisterMask<CCR, (0x1fu << 0x0u)>; + }; + struct MCR : public MemRegister<uint32_t, 0x4000743c> { + using MODE1 = RegisterMask<MCR, (0x7u << 0x0u)>; + }; + struct SHSR1 : public MemRegister<uint32_t, 0x40007440> { + using TSAMPLE1 = RegisterMask<SHSR1, (0x3ffu << 0x0u)>; + }; + struct SHHR : public MemRegister<uint32_t, 0x40007448> { + using THOLD1 = RegisterMask<SHHR, (0x3ffu << 0x0u)>; + }; + struct SHRR : public MemRegister<uint32_t, 0x4000744c> { + using TREFRESH1 = RegisterMask<SHRR, (0xffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR, SWTRGR, DHR12R1, DHR12L1, DHR8R1, DOR1, SR, CCR, MCR, SHSR1, SHHR, SHRR>; + } + namespace DBGMCU { + struct IDCODE : public MemRegister<uint32_t, 0x40015800> { + using DEV_ID = RegisterMask<IDCODE, (0xfffu << 0x0u)>; + using REV_ID = RegisterMask<IDCODE, (0xffffu << 0x10u)>; + }; + struct CR : public MemRegister<uint32_t, 0x40015804> { + using DBG_STOP = RegisterMask<CR, (0x1u << 0x1u)>; + using DBG_STANDBY = RegisterMask<CR, (0x1u << 0x2u)>; + }; + struct APB1FZR : public MemRegister<uint32_t, 0x40015808> { + using DBG_TIM2_STOP = RegisterMask<APB1FZR, (0x1u << 0x0u)>; + using DBG_TIM3_STOP = RegisterMask<APB1FZR, (0x1u << 0x1u)>; + using DBG_TIM4_STOP = RegisterMask<APB1FZR, (0x1u << 0x2u)>; + using DBG_TIM6_STOP = RegisterMask<APB1FZR, (0x1u << 0x4u)>; + using DBG_TIM7_STOP = RegisterMask<APB1FZR, (0x1u << 0x5u)>; + using DBG_RTC_STOP = RegisterMask<APB1FZR, (0x1u << 0xau)>; + using DBG_WWDG_STOP = RegisterMask<APB1FZR, (0x1u << 0xbu)>; + using DBG_IWDG_STOP = RegisterMask<APB1FZR, (0x1u << 0xcu)>; + using DBG_I2C3_STOP = RegisterMask<APB1FZR, (0x1u << 0x15u)>; + using DBG_I2C1_STOP = RegisterMask<APB1FZR, (0x1u << 0x16u)>; + using DBG_LPTIM2_STOP = RegisterMask<APB1FZR, (0x1u << 0x1eu)>; + using DBG_LPTIM1_STOP = RegisterMask<APB1FZR, (0x1u << 0x1fu)>; + }; + struct APB2FZR : public MemRegister<uint32_t, 0x4001580c> { + using DBG_TIM1_STOP = RegisterMask<APB2FZR, (0x1u << 0xbu)>; + using DBG_TIM14_STOP = RegisterMask<APB2FZR, (0x1u << 0xfu)>; + using DBG_TIM15_STOP = RegisterMask<APB2FZR, (0x1u << 0x10u)>; + using DBG_TIM16_STOP = RegisterMask<APB2FZR, (0x1u << 0x11u)>; + using DBG_LPTIM3_STOP = RegisterMask<APB2FZR, (0x1u << 0x12u)>; + }; + struct SR : public MemRegister<uint32_t, 0x400158fc> { + using AP1_PRESENT = RegisterMask<SR, (0x1u << 0x0u)>; + using AP0_PRESENT = RegisterMask<SR, (0x1u << 0x1u)>; + using AP1_ENABLED = RegisterMask<SR, (0x1u << 0x10u)>; + using AP0_ENABLED = RegisterMask<SR, (0x1u << 0x11u)>; + }; + struct DBG_AUTH_HOST : public MemRegister<uint32_t, 0x40015900> { + using MESSAGE = RegisterMask<DBG_AUTH_HOST, (0x0u << 0x0u)>; + }; + struct DBG_AUTH_DEVICE : public MemRegister<uint32_t, 0x40015904> { + using MESSAGE = RegisterMask<DBG_AUTH_DEVICE, (0x0u << 0x0u)>; + }; + struct PIDR4 : public MemRegister<uint32_t, 0x400167d0> { + using JEP106CON = RegisterMask<PIDR4, (0xfu << 0x0u)>; + using SIZE = RegisterMask<PIDR4, (0xfu << 0x4u)>; + }; + struct PIDR0 : public MemRegister<uint32_t, 0x400167e0> { + using PARTNUM = RegisterMask<PIDR0, (0xffu << 0x0u)>; + }; + struct PIDR1 : public MemRegister<uint32_t, 0x400167e4> { + using PARTNUM = RegisterMask<PIDR1, (0xfu << 0x0u)>; + using JEP106ID = RegisterMask<PIDR1, (0xfu << 0x4u)>; + }; + struct PIDR2 : public MemRegister<uint32_t, 0x400167e8> { + using JEP106ID = RegisterMask<PIDR2, (0x7u << 0x0u)>; + using JEDEC = RegisterMask<PIDR2, (0x1u << 0x3u)>; + using REVISION = RegisterMask<PIDR2, (0xfu << 0x4u)>; + }; + struct PIDR3 : public MemRegister<uint32_t, 0x400167ec> { + using CMOD = RegisterMask<PIDR3, (0xfu << 0x0u)>; + using REVAND = RegisterMask<PIDR3, (0xfu << 0x4u)>; + }; + struct CIDR0 : public MemRegister<uint32_t, 0x400167f0> { + using PREAMBLE = RegisterMask<CIDR0, (0xffu << 0x0u)>; + }; + struct CIDR1 : public MemRegister<uint32_t, 0x400167f4> { + using PREAMBLE = RegisterMask<CIDR1, (0xfu << 0x0u)>; + using CLASS = RegisterMask<CIDR1, (0xfu << 0x4u)>; + }; + struct CIDR2 : public MemRegister<uint32_t, 0x400167f8> { + using PREAMBLE = RegisterMask<CIDR2, (0xffu << 0x0u)>; + }; + struct CIDR3 : public MemRegister<uint32_t, 0x400167fc> { + using PREAMBLE = RegisterMask<CIDR3, (0xffu << 0x0u)>; + }; + using ALL = RegisterGroup<IDCODE, CR, APB1FZR, APB2FZR, SR, DBG_AUTH_HOST, DBG_AUTH_DEVICE, PIDR4, PIDR0, PIDR1, PIDR2, PIDR3, CIDR0, CIDR1, CIDR2, CIDR3>; + } + namespace DMA1 { + struct ISR : public MemRegister<uint32_t, 0x40020000> { + using GIF1 = RegisterMask<ISR, (0x1u << 0x0u)>; + using TCIF1 = RegisterMask<ISR, (0x1u << 0x1u)>; + using HTIF1 = RegisterMask<ISR, (0x1u << 0x2u)>; + using TEIF1 = RegisterMask<ISR, (0x1u << 0x3u)>; + using GIF2 = RegisterMask<ISR, (0x1u << 0x4u)>; + using TCIF2 = RegisterMask<ISR, (0x1u << 0x5u)>; + using HTIF2 = RegisterMask<ISR, (0x1u << 0x6u)>; + using TEIF2 = RegisterMask<ISR, (0x1u << 0x7u)>; + using GIF3 = RegisterMask<ISR, (0x1u << 0x8u)>; + using TCIF3 = RegisterMask<ISR, (0x1u << 0x9u)>; + using HTIF3 = RegisterMask<ISR, (0x1u << 0xau)>; + using TEIF3 = RegisterMask<ISR, (0x1u << 0xbu)>; + using GIF4 = RegisterMask<ISR, (0x1u << 0xcu)>; + using TCIF4 = RegisterMask<ISR, (0x1u << 0xdu)>; + using HTIF4 = RegisterMask<ISR, (0x1u << 0xeu)>; + using TEIF4 = RegisterMask<ISR, (0x1u << 0xfu)>; + using GIF5 = RegisterMask<ISR, (0x1u << 0x10u)>; + using TCIF5 = RegisterMask<ISR, (0x1u << 0x11u)>; + using HTIF5 = RegisterMask<ISR, (0x1u << 0x12u)>; + using TEIF5 = RegisterMask<ISR, (0x1u << 0x13u)>; + using GIF6 = RegisterMask<ISR, (0x1u << 0x14u)>; + using TCIF6 = RegisterMask<ISR, (0x1u << 0x15u)>; + using HTIF6 = RegisterMask<ISR, (0x1u << 0x16u)>; + using TEIF6 = RegisterMask<ISR, (0x1u << 0x17u)>; + using GIF7 = RegisterMask<ISR, (0x1u << 0x18u)>; + using TCIF7 = RegisterMask<ISR, (0x1u << 0x19u)>; + using HTIF7 = RegisterMask<ISR, (0x1u << 0x1au)>; + using TEIF7 = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct IFCR : public MemRegister<uint32_t, 0x40020004> { + using CGIF1 = RegisterMask<IFCR, (0x1u << 0x0u)>; + using CTCIF1 = RegisterMask<IFCR, (0x1u << 0x1u)>; + using CHTIF1 = RegisterMask<IFCR, (0x1u << 0x2u)>; + using CTEIF1 = RegisterMask<IFCR, (0x1u << 0x3u)>; + using CGIF2 = RegisterMask<IFCR, (0x1u << 0x4u)>; + using CTCIF2 = RegisterMask<IFCR, (0x1u << 0x5u)>; + using CHTIF2 = RegisterMask<IFCR, (0x1u << 0x6u)>; + using CTEIF2 = RegisterMask<IFCR, (0x1u << 0x7u)>; + using CGIF3 = RegisterMask<IFCR, (0x1u << 0x8u)>; + using CTCIF3 = RegisterMask<IFCR, (0x1u << 0x9u)>; + using CHTIF3 = RegisterMask<IFCR, (0x1u << 0xau)>; + using CTEIF3 = RegisterMask<IFCR, (0x1u << 0xbu)>; + using CGIF4 = RegisterMask<IFCR, (0x1u << 0xcu)>; + using CTCIF4 = RegisterMask<IFCR, (0x1u << 0xdu)>; + using CHTIF4 = RegisterMask<IFCR, (0x1u << 0xeu)>; + using CTEIF4 = RegisterMask<IFCR, (0x1u << 0xfu)>; + using CGIF5 = RegisterMask<IFCR, (0x1u << 0x10u)>; + using CTCIF5 = RegisterMask<IFCR, (0x1u << 0x11u)>; + using CHTIF5 = RegisterMask<IFCR, (0x1u << 0x12u)>; + using CTEIF5 = RegisterMask<IFCR, (0x1u << 0x13u)>; + using CGIF6 = RegisterMask<IFCR, (0x1u << 0x14u)>; + using CTCIF6 = RegisterMask<IFCR, (0x1u << 0x15u)>; + using CHTIF6 = RegisterMask<IFCR, (0x1u << 0x16u)>; + using CTEIF6 = RegisterMask<IFCR, (0x1u << 0x17u)>; + using CGIF7 = RegisterMask<IFCR, (0x1u << 0x18u)>; + using CTCIF7 = RegisterMask<IFCR, (0x1u << 0x19u)>; + using CHTIF7 = RegisterMask<IFCR, (0x1u << 0x1au)>; + using CTEIF7 = RegisterMask<IFCR, (0x1u << 0x1bu)>; + }; + struct CCR1 : public MemRegister<uint32_t, 0x40020008> { + using EN = RegisterMask<CCR1, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR1, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR1, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR1, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR1, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR1, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR1, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR1, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR1, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR1, (0x3u << 0xau)>; + using PL = RegisterMask<CCR1, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR1, (0x1u << 0xeu)>; + }; + struct CNDTR1 : public MemRegister<uint32_t, 0x4002000c> { + using NDT = RegisterMask<CNDTR1, (0xffffu << 0x0u)>; + }; + struct CPAR1 : public MemRegister<uint32_t, 0x40020010> { + using PA = RegisterMask<CPAR1, (0x0u << 0x0u)>; + }; + struct CMAR1 : public MemRegister<uint32_t, 0x40020014> { + using MA = RegisterMask<CMAR1, (0x0u << 0x0u)>; + }; + struct CCR2 : public MemRegister<uint32_t, 0x4002001c> { + using EN = RegisterMask<CCR2, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR2, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR2, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR2, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR2, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR2, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR2, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR2, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR2, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR2, (0x3u << 0xau)>; + using PL = RegisterMask<CCR2, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR2, (0x1u << 0xeu)>; + }; + struct CNDTR2 : public MemRegister<uint32_t, 0x40020020> { + using NDT = RegisterMask<CNDTR2, (0xffffu << 0x0u)>; + }; + struct CPAR2 : public MemRegister<uint32_t, 0x40020024> { + using PA = RegisterMask<CPAR2, (0x0u << 0x0u)>; + }; + struct CMAR2 : public MemRegister<uint32_t, 0x40020028> { + using MA = RegisterMask<CMAR2, (0x0u << 0x0u)>; + }; + struct CCR3 : public MemRegister<uint32_t, 0x40020030> { + using EN = RegisterMask<CCR3, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR3, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR3, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR3, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR3, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR3, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR3, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR3, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR3, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR3, (0x3u << 0xau)>; + using PL = RegisterMask<CCR3, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR3, (0x1u << 0xeu)>; + }; + struct CNDTR3 : public MemRegister<uint32_t, 0x40020034> { + using NDT = RegisterMask<CNDTR3, (0xffffu << 0x0u)>; + }; + struct CPAR3 : public MemRegister<uint32_t, 0x40020038> { + using PA = RegisterMask<CPAR3, (0x0u << 0x0u)>; + }; + struct CMAR3 : public MemRegister<uint32_t, 0x4002003c> { + using MA = RegisterMask<CMAR3, (0x0u << 0x0u)>; + }; + struct CCR4 : public MemRegister<uint32_t, 0x40020044> { + using EN = RegisterMask<CCR4, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR4, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR4, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR4, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR4, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR4, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR4, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR4, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR4, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR4, (0x3u << 0xau)>; + using PL = RegisterMask<CCR4, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR4, (0x1u << 0xeu)>; + }; + struct CNDTR4 : public MemRegister<uint32_t, 0x40020048> { + using NDT = RegisterMask<CNDTR4, (0xffffu << 0x0u)>; + }; + struct CPAR4 : public MemRegister<uint32_t, 0x4002004c> { + using PA = RegisterMask<CPAR4, (0x0u << 0x0u)>; + }; + struct CMAR4 : public MemRegister<uint32_t, 0x40020050> { + using MA = RegisterMask<CMAR4, (0x0u << 0x0u)>; + }; + struct CCR5 : public MemRegister<uint32_t, 0x40020058> { + using EN = RegisterMask<CCR5, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR5, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR5, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR5, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR5, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR5, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR5, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR5, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR5, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR5, (0x3u << 0xau)>; + using PL = RegisterMask<CCR5, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR5, (0x1u << 0xeu)>; + }; + struct CNDTR5 : public MemRegister<uint32_t, 0x4002005c> { + using NDT = RegisterMask<CNDTR5, (0xffffu << 0x0u)>; + }; + struct CPAR5 : public MemRegister<uint32_t, 0x40020060> { + using PA = RegisterMask<CPAR5, (0x0u << 0x0u)>; + }; + struct CMAR5 : public MemRegister<uint32_t, 0x40020064> { + using MA = RegisterMask<CMAR5, (0x0u << 0x0u)>; + }; + struct CCR6 : public MemRegister<uint32_t, 0x4002006c> { + using EN = RegisterMask<CCR6, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR6, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR6, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR6, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR6, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR6, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR6, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR6, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR6, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR6, (0x3u << 0xau)>; + using PL = RegisterMask<CCR6, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR6, (0x1u << 0xeu)>; + }; + struct CNDTR6 : public MemRegister<uint32_t, 0x40020070> { + using NDT = RegisterMask<CNDTR6, (0xffffu << 0x0u)>; + }; + struct CPAR6 : public MemRegister<uint32_t, 0x40020074> { + using PA = RegisterMask<CPAR6, (0x0u << 0x0u)>; + }; + struct CMAR6 : public MemRegister<uint32_t, 0x40020078> { + using MA = RegisterMask<CMAR6, (0x0u << 0x0u)>; + }; + struct CCR7 : public MemRegister<uint32_t, 0x40020080> { + using EN = RegisterMask<CCR7, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR7, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR7, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR7, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR7, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR7, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR7, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR7, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR7, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR7, (0x3u << 0xau)>; + using PL = RegisterMask<CCR7, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR7, (0x1u << 0xeu)>; + }; + struct CNDTR7 : public MemRegister<uint32_t, 0x40020084> { + using NDT = RegisterMask<CNDTR7, (0xffffu << 0x0u)>; + }; + struct CPAR7 : public MemRegister<uint32_t, 0x40020088> { + using PA = RegisterMask<CPAR7, (0x0u << 0x0u)>; + }; + struct CMAR7 : public MemRegister<uint32_t, 0x4002008c> { + using MA = RegisterMask<CMAR7, (0x0u << 0x0u)>; + }; + using ALL = RegisterGroup<ISR, IFCR, CCR1, CNDTR1, CPAR1, CMAR1, CCR2, CNDTR2, CPAR2, CMAR2, CCR3, CNDTR3, CPAR3, CMAR3, CCR4, CNDTR4, CPAR4, CMAR4, CCR5, CNDTR5, CPAR5, CMAR5, CCR6, CNDTR6, CPAR6, CMAR6, CCR7, CNDTR7, CPAR7, CMAR7>; + } + namespace DMA2 { + struct ISR : public MemRegister<uint32_t, 0x40020400> { + using GIF1 = RegisterMask<ISR, (0x1u << 0x0u)>; + using TCIF1 = RegisterMask<ISR, (0x1u << 0x1u)>; + using HTIF1 = RegisterMask<ISR, (0x1u << 0x2u)>; + using TEIF1 = RegisterMask<ISR, (0x1u << 0x3u)>; + using GIF2 = RegisterMask<ISR, (0x1u << 0x4u)>; + using TCIF2 = RegisterMask<ISR, (0x1u << 0x5u)>; + using HTIF2 = RegisterMask<ISR, (0x1u << 0x6u)>; + using TEIF2 = RegisterMask<ISR, (0x1u << 0x7u)>; + using GIF3 = RegisterMask<ISR, (0x1u << 0x8u)>; + using TCIF3 = RegisterMask<ISR, (0x1u << 0x9u)>; + using HTIF3 = RegisterMask<ISR, (0x1u << 0xau)>; + using TEIF3 = RegisterMask<ISR, (0x1u << 0xbu)>; + using GIF4 = RegisterMask<ISR, (0x1u << 0xcu)>; + using TCIF4 = RegisterMask<ISR, (0x1u << 0xdu)>; + using HTIF4 = RegisterMask<ISR, (0x1u << 0xeu)>; + using TEIF4 = RegisterMask<ISR, (0x1u << 0xfu)>; + using GIF5 = RegisterMask<ISR, (0x1u << 0x10u)>; + using TCIF5 = RegisterMask<ISR, (0x1u << 0x11u)>; + using HTIF5 = RegisterMask<ISR, (0x1u << 0x12u)>; + using TEIF5 = RegisterMask<ISR, (0x1u << 0x13u)>; + using GIF6 = RegisterMask<ISR, (0x1u << 0x14u)>; + using TCIF6 = RegisterMask<ISR, (0x1u << 0x15u)>; + using HTIF6 = RegisterMask<ISR, (0x1u << 0x16u)>; + using TEIF6 = RegisterMask<ISR, (0x1u << 0x17u)>; + using GIF7 = RegisterMask<ISR, (0x1u << 0x18u)>; + using TCIF7 = RegisterMask<ISR, (0x1u << 0x19u)>; + using HTIF7 = RegisterMask<ISR, (0x1u << 0x1au)>; + using TEIF7 = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct IFCR : public MemRegister<uint32_t, 0x40020404> { + using CGIF1 = RegisterMask<IFCR, (0x1u << 0x0u)>; + using CTCIF1 = RegisterMask<IFCR, (0x1u << 0x1u)>; + using CHTIF1 = RegisterMask<IFCR, (0x1u << 0x2u)>; + using CTEIF1 = RegisterMask<IFCR, (0x1u << 0x3u)>; + using CGIF2 = RegisterMask<IFCR, (0x1u << 0x4u)>; + using CTCIF2 = RegisterMask<IFCR, (0x1u << 0x5u)>; + using CHTIF2 = RegisterMask<IFCR, (0x1u << 0x6u)>; + using CTEIF2 = RegisterMask<IFCR, (0x1u << 0x7u)>; + using CGIF3 = RegisterMask<IFCR, (0x1u << 0x8u)>; + using CTCIF3 = RegisterMask<IFCR, (0x1u << 0x9u)>; + using CHTIF3 = RegisterMask<IFCR, (0x1u << 0xau)>; + using CTEIF3 = RegisterMask<IFCR, (0x1u << 0xbu)>; + using CGIF4 = RegisterMask<IFCR, (0x1u << 0xcu)>; + using CTCIF4 = RegisterMask<IFCR, (0x1u << 0xdu)>; + using CHTIF4 = RegisterMask<IFCR, (0x1u << 0xeu)>; + using CTEIF4 = RegisterMask<IFCR, (0x1u << 0xfu)>; + using CGIF5 = RegisterMask<IFCR, (0x1u << 0x10u)>; + using CTCIF5 = RegisterMask<IFCR, (0x1u << 0x11u)>; + using CHTIF5 = RegisterMask<IFCR, (0x1u << 0x12u)>; + using CTEIF5 = RegisterMask<IFCR, (0x1u << 0x13u)>; + using CGIF6 = RegisterMask<IFCR, (0x1u << 0x14u)>; + using CTCIF6 = RegisterMask<IFCR, (0x1u << 0x15u)>; + using CHTIF6 = RegisterMask<IFCR, (0x1u << 0x16u)>; + using CTEIF6 = RegisterMask<IFCR, (0x1u << 0x17u)>; + using CGIF7 = RegisterMask<IFCR, (0x1u << 0x18u)>; + using CTCIF7 = RegisterMask<IFCR, (0x1u << 0x19u)>; + using CHTIF7 = RegisterMask<IFCR, (0x1u << 0x1au)>; + using CTEIF7 = RegisterMask<IFCR, (0x1u << 0x1bu)>; + }; + struct CCR1 : public MemRegister<uint32_t, 0x40020408> { + using EN = RegisterMask<CCR1, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR1, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR1, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR1, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR1, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR1, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR1, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR1, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR1, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR1, (0x3u << 0xau)>; + using PL = RegisterMask<CCR1, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR1, (0x1u << 0xeu)>; + }; + struct CNDTR1 : public MemRegister<uint32_t, 0x4002040c> { + using NDT = RegisterMask<CNDTR1, (0xffffu << 0x0u)>; + }; + struct CPAR1 : public MemRegister<uint32_t, 0x40020410> { + using PA = RegisterMask<CPAR1, (0x0u << 0x0u)>; + }; + struct CMAR1 : public MemRegister<uint32_t, 0x40020414> { + using MA = RegisterMask<CMAR1, (0x0u << 0x0u)>; + }; + struct CCR2 : public MemRegister<uint32_t, 0x4002041c> { + using EN = RegisterMask<CCR2, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR2, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR2, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR2, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR2, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR2, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR2, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR2, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR2, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR2, (0x3u << 0xau)>; + using PL = RegisterMask<CCR2, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR2, (0x1u << 0xeu)>; + }; + struct CNDTR2 : public MemRegister<uint32_t, 0x40020420> { + using NDT = RegisterMask<CNDTR2, (0xffffu << 0x0u)>; + }; + struct CPAR2 : public MemRegister<uint32_t, 0x40020424> { + using PA = RegisterMask<CPAR2, (0x0u << 0x0u)>; + }; + struct CMAR2 : public MemRegister<uint32_t, 0x40020428> { + using MA = RegisterMask<CMAR2, (0x0u << 0x0u)>; + }; + struct CCR3 : public MemRegister<uint32_t, 0x40020430> { + using EN = RegisterMask<CCR3, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR3, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR3, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR3, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR3, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR3, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR3, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR3, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR3, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR3, (0x3u << 0xau)>; + using PL = RegisterMask<CCR3, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR3, (0x1u << 0xeu)>; + }; + struct CNDTR3 : public MemRegister<uint32_t, 0x40020434> { + using NDT = RegisterMask<CNDTR3, (0xffffu << 0x0u)>; + }; + struct CPAR3 : public MemRegister<uint32_t, 0x40020438> { + using PA = RegisterMask<CPAR3, (0x0u << 0x0u)>; + }; + struct CMAR3 : public MemRegister<uint32_t, 0x4002043c> { + using MA = RegisterMask<CMAR3, (0x0u << 0x0u)>; + }; + struct CCR4 : public MemRegister<uint32_t, 0x40020444> { + using EN = RegisterMask<CCR4, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR4, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR4, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR4, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR4, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR4, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR4, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR4, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR4, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR4, (0x3u << 0xau)>; + using PL = RegisterMask<CCR4, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR4, (0x1u << 0xeu)>; + }; + struct CNDTR4 : public MemRegister<uint32_t, 0x40020448> { + using NDT = RegisterMask<CNDTR4, (0xffffu << 0x0u)>; + }; + struct CPAR4 : public MemRegister<uint32_t, 0x4002044c> { + using PA = RegisterMask<CPAR4, (0x0u << 0x0u)>; + }; + struct CMAR4 : public MemRegister<uint32_t, 0x40020450> { + using MA = RegisterMask<CMAR4, (0x0u << 0x0u)>; + }; + struct CCR5 : public MemRegister<uint32_t, 0x40020458> { + using EN = RegisterMask<CCR5, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR5, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR5, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR5, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR5, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR5, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR5, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR5, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR5, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR5, (0x3u << 0xau)>; + using PL = RegisterMask<CCR5, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR5, (0x1u << 0xeu)>; + }; + struct CNDTR5 : public MemRegister<uint32_t, 0x4002045c> { + using NDT = RegisterMask<CNDTR5, (0xffffu << 0x0u)>; + }; + struct CPAR5 : public MemRegister<uint32_t, 0x40020460> { + using PA = RegisterMask<CPAR5, (0x0u << 0x0u)>; + }; + struct CMAR5 : public MemRegister<uint32_t, 0x40020464> { + using MA = RegisterMask<CMAR5, (0x0u << 0x0u)>; + }; + struct CCR6 : public MemRegister<uint32_t, 0x4002046c> { + using EN = RegisterMask<CCR6, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR6, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR6, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR6, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR6, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR6, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR6, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR6, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR6, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR6, (0x3u << 0xau)>; + using PL = RegisterMask<CCR6, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR6, (0x1u << 0xeu)>; + }; + struct CNDTR6 : public MemRegister<uint32_t, 0x40020470> { + using NDT = RegisterMask<CNDTR6, (0xffffu << 0x0u)>; + }; + struct CPAR6 : public MemRegister<uint32_t, 0x40020474> { + using PA = RegisterMask<CPAR6, (0x0u << 0x0u)>; + }; + struct CMAR6 : public MemRegister<uint32_t, 0x40020478> { + using MA = RegisterMask<CMAR6, (0x0u << 0x0u)>; + }; + struct CCR7 : public MemRegister<uint32_t, 0x40020480> { + using EN = RegisterMask<CCR7, (0x1u << 0x0u)>; + using TCIE = RegisterMask<CCR7, (0x1u << 0x1u)>; + using HTIE = RegisterMask<CCR7, (0x1u << 0x2u)>; + using TEIE = RegisterMask<CCR7, (0x1u << 0x3u)>; + using DIR = RegisterMask<CCR7, (0x1u << 0x4u)>; + using CIRC = RegisterMask<CCR7, (0x1u << 0x5u)>; + using PINC = RegisterMask<CCR7, (0x1u << 0x6u)>; + using MINC = RegisterMask<CCR7, (0x1u << 0x7u)>; + using PSIZE = RegisterMask<CCR7, (0x3u << 0x8u)>; + using MSIZE = RegisterMask<CCR7, (0x3u << 0xau)>; + using PL = RegisterMask<CCR7, (0x3u << 0xcu)>; + using MEM2MEM = RegisterMask<CCR7, (0x1u << 0xeu)>; + }; + struct CNDTR7 : public MemRegister<uint32_t, 0x40020484> { + using NDT = RegisterMask<CNDTR7, (0xffffu << 0x0u)>; + }; + struct CPAR7 : public MemRegister<uint32_t, 0x40020488> { + using PA = RegisterMask<CPAR7, (0x0u << 0x0u)>; + }; + struct CMAR7 : public MemRegister<uint32_t, 0x4002048c> { + using MA = RegisterMask<CMAR7, (0x0u << 0x0u)>; + }; + using ALL = RegisterGroup<ISR, IFCR, CCR1, CNDTR1, CPAR1, CMAR1, CCR2, CNDTR2, CPAR2, CMAR2, CCR3, CNDTR3, CPAR3, CMAR3, CCR4, CNDTR4, CPAR4, CMAR4, CCR5, CNDTR5, CPAR5, CMAR5, CCR6, CNDTR6, CPAR6, CMAR6, CCR7, CNDTR7, CPAR7, CMAR7>; + } + namespace DMAMUX { + struct C0CR : public MemRegister<uint32_t, 0x40020800> { + using DMAREQ_ID = RegisterMask<C0CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C0CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C0CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C0CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C0CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C0CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C0CR, (0x1fu << 0x18u)>; + }; + struct C1CR : public MemRegister<uint32_t, 0x40020804> { + using DMAREQ_ID = RegisterMask<C1CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C1CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C1CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C1CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C1CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C1CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C1CR, (0x1fu << 0x18u)>; + }; + struct C2CR : public MemRegister<uint32_t, 0x40020808> { + using DMAREQ_ID = RegisterMask<C2CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C2CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C2CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C2CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C2CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C2CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C2CR, (0x1fu << 0x18u)>; + }; + struct C3CR : public MemRegister<uint32_t, 0x4002080c> { + using DMAREQ_ID = RegisterMask<C3CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C3CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C3CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C3CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C3CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C3CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C3CR, (0x1fu << 0x18u)>; + }; + struct C4CR : public MemRegister<uint32_t, 0x40020810> { + using DMAREQ_ID = RegisterMask<C4CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C4CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C4CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C4CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C4CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C4CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C4CR, (0x1fu << 0x18u)>; + }; + struct C5CR : public MemRegister<uint32_t, 0x40020814> { + using DMAREQ_ID = RegisterMask<C5CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C5CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C5CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C5CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C5CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C5CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C5CR, (0x1fu << 0x18u)>; + }; + struct C6CR : public MemRegister<uint32_t, 0x40020818> { + using DMAREQ_ID = RegisterMask<C6CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C6CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C6CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C6CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C6CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C6CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C6CR, (0x1fu << 0x18u)>; + }; + struct C7CR : public MemRegister<uint32_t, 0x4002081c> { + using DMAREQ_ID = RegisterMask<C7CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C7CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C7CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C7CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C7CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C7CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C7CR, (0x1fu << 0x18u)>; + }; + struct C8CR : public MemRegister<uint32_t, 0x40020820> { + using DMAREQ_ID = RegisterMask<C8CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C8CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C8CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C8CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C8CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C8CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C8CR, (0x1fu << 0x18u)>; + }; + struct C9CR : public MemRegister<uint32_t, 0x40020824> { + using DMAREQ_ID = RegisterMask<C9CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C9CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C9CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C9CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C9CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C9CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C9CR, (0x1fu << 0x18u)>; + }; + struct C10CR : public MemRegister<uint32_t, 0x40020828> { + using DMAREQ_ID = RegisterMask<C10CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C10CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C10CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C10CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C10CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C10CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C10CR, (0x1fu << 0x18u)>; + }; + struct C11CR : public MemRegister<uint32_t, 0x4002082c> { + using DMAREQ_ID = RegisterMask<C11CR, (0x7fu << 0x0u)>; + using SOIE = RegisterMask<C11CR, (0x1u << 0x8u)>; + using EGE = RegisterMask<C11CR, (0x1u << 0x9u)>; + using SE = RegisterMask<C11CR, (0x1u << 0x10u)>; + using SPOL = RegisterMask<C11CR, (0x3u << 0x11u)>; + using NBREQ = RegisterMask<C11CR, (0x1fu << 0x13u)>; + using SYNC_ID = RegisterMask<C11CR, (0x1fu << 0x18u)>; + }; + struct CSR : public MemRegister<uint32_t, 0x40020880> { + using SOF0 = RegisterMask<CSR, (0x1u << 0x0u)>; + using SOF1 = RegisterMask<CSR, (0x1u << 0x1u)>; + using SOF2 = RegisterMask<CSR, (0x1u << 0x2u)>; + using SOF3 = RegisterMask<CSR, (0x1u << 0x3u)>; + using SOF4 = RegisterMask<CSR, (0x1u << 0x4u)>; + using SOF5 = RegisterMask<CSR, (0x1u << 0x5u)>; + using SOF6 = RegisterMask<CSR, (0x1u << 0x6u)>; + using SOF7 = RegisterMask<CSR, (0x1u << 0x7u)>; + using SOF8 = RegisterMask<CSR, (0x1u << 0x8u)>; + using SOF9 = RegisterMask<CSR, (0x1u << 0x9u)>; + using SOF10 = RegisterMask<CSR, (0x1u << 0xau)>; + using SOF11 = RegisterMask<CSR, (0x1u << 0xbu)>; + }; + struct CFR : public MemRegister<uint32_t, 0x40020884> { + using CSOF0 = RegisterMask<CFR, (0x1u << 0x0u)>; + using CSOF1 = RegisterMask<CFR, (0x1u << 0x1u)>; + using CSOF2 = RegisterMask<CFR, (0x1u << 0x2u)>; + using CSOF3 = RegisterMask<CFR, (0x1u << 0x3u)>; + using CSOF4 = RegisterMask<CFR, (0x1u << 0x4u)>; + using CSOF5 = RegisterMask<CFR, (0x1u << 0x5u)>; + using CSOF6 = RegisterMask<CFR, (0x1u << 0x6u)>; + using CSOF7 = RegisterMask<CFR, (0x1u << 0x7u)>; + using CSOF8 = RegisterMask<CFR, (0x1u << 0x8u)>; + using CSOF9 = RegisterMask<CFR, (0x1u << 0x9u)>; + using CSOF10 = RegisterMask<CFR, (0x1u << 0xau)>; + using CSOF11 = RegisterMask<CFR, (0x1u << 0xbu)>; + }; + struct RG0CR : public MemRegister<uint32_t, 0x40020900> { + using SIG_ID = RegisterMask<RG0CR, (0x1fu << 0x0u)>; + using OIE = RegisterMask<RG0CR, (0x1u << 0x8u)>; + using GE = RegisterMask<RG0CR, (0x1u << 0x10u)>; + using GPOL = RegisterMask<RG0CR, (0x3u << 0x11u)>; + using GNBREQ = RegisterMask<RG0CR, (0x1fu << 0x13u)>; + }; + struct RG1CR : public MemRegister<uint32_t, 0x40020904> { + using SIG_ID = RegisterMask<RG1CR, (0x1fu << 0x0u)>; + using OIE = RegisterMask<RG1CR, (0x1u << 0x8u)>; + using GE = RegisterMask<RG1CR, (0x1u << 0x10u)>; + using GPOL = RegisterMask<RG1CR, (0x3u << 0x11u)>; + using GNBREQ = RegisterMask<RG1CR, (0x1fu << 0x13u)>; + }; + struct RG2CR : public MemRegister<uint32_t, 0x40020908> { + using SIG_ID = RegisterMask<RG2CR, (0x1fu << 0x0u)>; + using OIE = RegisterMask<RG2CR, (0x1u << 0x8u)>; + using GE = RegisterMask<RG2CR, (0x1u << 0x10u)>; + using GPOL = RegisterMask<RG2CR, (0x3u << 0x11u)>; + using GNBREQ = RegisterMask<RG2CR, (0x1fu << 0x13u)>; + }; + struct RG3CR : public MemRegister<uint32_t, 0x4002090c> { + using SIG_ID = RegisterMask<RG3CR, (0x1fu << 0x0u)>; + using OIE = RegisterMask<RG3CR, (0x1u << 0x8u)>; + using GE = RegisterMask<RG3CR, (0x1u << 0x10u)>; + using GPOL = RegisterMask<RG3CR, (0x3u << 0x11u)>; + using GNBREQ = RegisterMask<RG3CR, (0x1fu << 0x13u)>; + }; + struct RGSR : public MemRegister<uint32_t, 0x40020940> { + using OF0 = RegisterMask<RGSR, (0x1u << 0x0u)>; + using OF1 = RegisterMask<RGSR, (0x1u << 0x1u)>; + using OF2 = RegisterMask<RGSR, (0x1u << 0x2u)>; + using OF3 = RegisterMask<RGSR, (0x1u << 0x3u)>; + }; + struct RGCFR : public MemRegister<uint32_t, 0x40020944> { + using COF0 = RegisterMask<RGCFR, (0x1u << 0x0u)>; + using COF1 = RegisterMask<RGCFR, (0x1u << 0x1u)>; + using COF2 = RegisterMask<RGCFR, (0x1u << 0x2u)>; + using COF3 = RegisterMask<RGCFR, (0x1u << 0x3u)>; + }; + using ALL = RegisterGroup<C0CR, C1CR, C2CR, C3CR, C4CR, C5CR, C6CR, C7CR, C8CR, C9CR, C10CR, C11CR, CSR, CFR, RG0CR, RG1CR, RG2CR, RG3CR, RGSR, RGCFR>; + } + namespace EXTI { + struct RTSR1 : public MemRegister<uint32_t, 0x40021800> { + using RT0 = RegisterMask<RTSR1, (0x1u << 0x0u)>; + using RT1 = RegisterMask<RTSR1, (0x1u << 0x1u)>; + using RT2 = RegisterMask<RTSR1, (0x1u << 0x2u)>; + using RT3 = RegisterMask<RTSR1, (0x1u << 0x3u)>; + using RT4 = RegisterMask<RTSR1, (0x1u << 0x4u)>; + using RT5 = RegisterMask<RTSR1, (0x1u << 0x5u)>; + using RT6 = RegisterMask<RTSR1, (0x1u << 0x6u)>; + using RT7 = RegisterMask<RTSR1, (0x1u << 0x7u)>; + using RT8 = RegisterMask<RTSR1, (0x1u << 0x8u)>; + using RT9 = RegisterMask<RTSR1, (0x1u << 0x9u)>; + using RT10 = RegisterMask<RTSR1, (0x1u << 0xau)>; + using RT11 = RegisterMask<RTSR1, (0x1u << 0xbu)>; + using RT12 = RegisterMask<RTSR1, (0x1u << 0xcu)>; + using RT13 = RegisterMask<RTSR1, (0x1u << 0xdu)>; + using RT14 = RegisterMask<RTSR1, (0x1u << 0xeu)>; + using RT15 = RegisterMask<RTSR1, (0x1u << 0xfu)>; + using RT16 = RegisterMask<RTSR1, (0x1u << 0x10u)>; + using RT17 = RegisterMask<RTSR1, (0x1u << 0x11u)>; + using RT18 = RegisterMask<RTSR1, (0x1u << 0x12u)>; + using RT19 = RegisterMask<RTSR1, (0x1u << 0x13u)>; + using RT20 = RegisterMask<RTSR1, (0x1u << 0x14u)>; + using RT21 = RegisterMask<RTSR1, (0x1u << 0x15u)>; + }; + struct FTSR1 : public MemRegister<uint32_t, 0x40021804> { + using FT0 = RegisterMask<FTSR1, (0x1u << 0x0u)>; + using FT1 = RegisterMask<FTSR1, (0x1u << 0x1u)>; + using FT2 = RegisterMask<FTSR1, (0x1u << 0x2u)>; + using FT3 = RegisterMask<FTSR1, (0x1u << 0x3u)>; + using FT4 = RegisterMask<FTSR1, (0x1u << 0x4u)>; + using FT5 = RegisterMask<FTSR1, (0x1u << 0x5u)>; + using FT6 = RegisterMask<FTSR1, (0x1u << 0x6u)>; + using FT7 = RegisterMask<FTSR1, (0x1u << 0x7u)>; + using FT8 = RegisterMask<FTSR1, (0x1u << 0x8u)>; + using FT9 = RegisterMask<FTSR1, (0x1u << 0x9u)>; + using FT10 = RegisterMask<FTSR1, (0x1u << 0xau)>; + using FT11 = RegisterMask<FTSR1, (0x1u << 0xbu)>; + using FT12 = RegisterMask<FTSR1, (0x1u << 0xcu)>; + using FT13 = RegisterMask<FTSR1, (0x1u << 0xdu)>; + using FT14 = RegisterMask<FTSR1, (0x1u << 0xeu)>; + using FT15 = RegisterMask<FTSR1, (0x1u << 0xfu)>; + using FT16 = RegisterMask<FTSR1, (0x1u << 0x10u)>; + using FT17 = RegisterMask<FTSR1, (0x1u << 0x11u)>; + using FT18 = RegisterMask<FTSR1, (0x1u << 0x12u)>; + using FT19 = RegisterMask<FTSR1, (0x1u << 0x13u)>; + using FT20 = RegisterMask<FTSR1, (0x1u << 0x14u)>; + using FT21 = RegisterMask<FTSR1, (0x1u << 0x15u)>; + }; + struct SWIER1 : public MemRegister<uint32_t, 0x40021808> { + using SWI0 = RegisterMask<SWIER1, (0x1u << 0x0u)>; + using SWI1 = RegisterMask<SWIER1, (0x1u << 0x1u)>; + using SWI2 = RegisterMask<SWIER1, (0x1u << 0x2u)>; + using SWI3 = RegisterMask<SWIER1, (0x1u << 0x3u)>; + using SWI4 = RegisterMask<SWIER1, (0x1u << 0x4u)>; + using SWI5 = RegisterMask<SWIER1, (0x1u << 0x5u)>; + using SWI6 = RegisterMask<SWIER1, (0x1u << 0x6u)>; + using SWI7 = RegisterMask<SWIER1, (0x1u << 0x7u)>; + using SWI8 = RegisterMask<SWIER1, (0x1u << 0x8u)>; + using SWI9 = RegisterMask<SWIER1, (0x1u << 0x9u)>; + using SWI10 = RegisterMask<SWIER1, (0x1u << 0xau)>; + using SWI11 = RegisterMask<SWIER1, (0x1u << 0xbu)>; + using SWI12 = RegisterMask<SWIER1, (0x1u << 0xcu)>; + using SWI13 = RegisterMask<SWIER1, (0x1u << 0xdu)>; + using SWI14 = RegisterMask<SWIER1, (0x1u << 0xeu)>; + using SWI15 = RegisterMask<SWIER1, (0x1u << 0xfu)>; + using SWI16 = RegisterMask<SWIER1, (0x1u << 0x10u)>; + using SWI17 = RegisterMask<SWIER1, (0x1u << 0x11u)>; + using SWI18 = RegisterMask<SWIER1, (0x1u << 0x12u)>; + using SWI19 = RegisterMask<SWIER1, (0x1u << 0x13u)>; + using SWI20 = RegisterMask<SWIER1, (0x1u << 0x14u)>; + using SWI21 = RegisterMask<SWIER1, (0x1u << 0x15u)>; + }; + struct RPR1 : public MemRegister<uint32_t, 0x4002180c> { + using RPIF0 = RegisterMask<RPR1, (0x1u << 0x0u)>; + using RPIF1 = RegisterMask<RPR1, (0x1u << 0x1u)>; + using RPIF2 = RegisterMask<RPR1, (0x1u << 0x2u)>; + using RPIF3 = RegisterMask<RPR1, (0x1u << 0x3u)>; + using RPIF4 = RegisterMask<RPR1, (0x1u << 0x4u)>; + using RPIF5 = RegisterMask<RPR1, (0x1u << 0x5u)>; + using RPIF6 = RegisterMask<RPR1, (0x1u << 0x6u)>; + using RPIF7 = RegisterMask<RPR1, (0x1u << 0x7u)>; + using RPIF8 = RegisterMask<RPR1, (0x1u << 0x8u)>; + using RPIF9 = RegisterMask<RPR1, (0x1u << 0x9u)>; + using RPIF10 = RegisterMask<RPR1, (0x1u << 0xau)>; + using RPIF11 = RegisterMask<RPR1, (0x1u << 0xbu)>; + using RPIF12 = RegisterMask<RPR1, (0x1u << 0xcu)>; + using RPIF13 = RegisterMask<RPR1, (0x1u << 0xdu)>; + using RPIF14 = RegisterMask<RPR1, (0x1u << 0xeu)>; + using RPIF15 = RegisterMask<RPR1, (0x1u << 0xfu)>; + using RPIF16 = RegisterMask<RPR1, (0x1u << 0x10u)>; + using RPIF17 = RegisterMask<RPR1, (0x1u << 0x11u)>; + using RPIF18 = RegisterMask<RPR1, (0x1u << 0x12u)>; + using RPIF19 = RegisterMask<RPR1, (0x1u << 0x13u)>; + using RPIF20 = RegisterMask<RPR1, (0x1u << 0x14u)>; + using RPIF21 = RegisterMask<RPR1, (0x1u << 0x15u)>; + }; + struct FPR1 : public MemRegister<uint32_t, 0x40021810> { + using FPIF0 = RegisterMask<FPR1, (0x1u << 0x0u)>; + using FPIF1 = RegisterMask<FPR1, (0x1u << 0x1u)>; + using FPIF2 = RegisterMask<FPR1, (0x1u << 0x2u)>; + using FPIF3 = RegisterMask<FPR1, (0x1u << 0x3u)>; + using FPIF4 = RegisterMask<FPR1, (0x1u << 0x4u)>; + using FPIF5 = RegisterMask<FPR1, (0x1u << 0x5u)>; + using FPIF6 = RegisterMask<FPR1, (0x1u << 0x6u)>; + using FPIF7 = RegisterMask<FPR1, (0x1u << 0x7u)>; + using FPIF8 = RegisterMask<FPR1, (0x1u << 0x8u)>; + using FPIF9 = RegisterMask<FPR1, (0x1u << 0x9u)>; + using FPIF10 = RegisterMask<FPR1, (0x1u << 0xau)>; + using FPIF11 = RegisterMask<FPR1, (0x1u << 0xbu)>; + using FPIF12 = RegisterMask<FPR1, (0x1u << 0xcu)>; + using FPIF13 = RegisterMask<FPR1, (0x1u << 0xdu)>; + using FPIF14 = RegisterMask<FPR1, (0x1u << 0xeu)>; + using FPIF15 = RegisterMask<FPR1, (0x1u << 0xfu)>; + using FPIF16 = RegisterMask<FPR1, (0x1u << 0x10u)>; + using FPIF17 = RegisterMask<FPR1, (0x1u << 0x11u)>; + using FPIF18 = RegisterMask<FPR1, (0x1u << 0x12u)>; + using FPIF19 = RegisterMask<FPR1, (0x1u << 0x13u)>; + using FPIF20 = RegisterMask<FPR1, (0x1u << 0x14u)>; + using FPIF21 = RegisterMask<FPR1, (0x1u << 0x15u)>; + }; + struct EXTICR1 : public MemRegister<uint32_t, 0x40021860> { + using EXTI0 = RegisterMask<EXTICR1, (0xffu << 0x0u)>; + using EXTI1 = RegisterMask<EXTICR1, (0xffu << 0x8u)>; + using EXTI2 = RegisterMask<EXTICR1, (0xffu << 0x10u)>; + using EXTI3 = RegisterMask<EXTICR1, (0xffu << 0x18u)>; + }; + struct EXTICR2 : public MemRegister<uint32_t, 0x40021864> { + using EXTI4 = RegisterMask<EXTICR2, (0xffu << 0x0u)>; + using EXTI5 = RegisterMask<EXTICR2, (0xffu << 0x8u)>; + using EXTI6 = RegisterMask<EXTICR2, (0xffu << 0x10u)>; + using EXTI7 = RegisterMask<EXTICR2, (0xffu << 0x18u)>; + }; + struct EXTICR3 : public MemRegister<uint32_t, 0x40021868> { + using EXTI8 = RegisterMask<EXTICR3, (0xffu << 0x0u)>; + using EXTI9 = RegisterMask<EXTICR3, (0xffu << 0x8u)>; + using EXTI10 = RegisterMask<EXTICR3, (0xffu << 0x10u)>; + using EXTI11 = RegisterMask<EXTICR3, (0xffu << 0x18u)>; + }; + struct EXTICR4 : public MemRegister<uint32_t, 0x4002186c> { + using EXTI12 = RegisterMask<EXTICR4, (0xffu << 0x0u)>; + using EXTI13 = RegisterMask<EXTICR4, (0xffu << 0x8u)>; + using EXTI14 = RegisterMask<EXTICR4, (0xffu << 0x10u)>; + using EXTI15 = RegisterMask<EXTICR4, (0xffu << 0x18u)>; + }; + struct IMR1 : public MemRegister<uint32_t, 0x40021880> { + using IM0 = RegisterMask<IMR1, (0x1u << 0x0u)>; + using IM1 = RegisterMask<IMR1, (0x1u << 0x1u)>; + using IM2 = RegisterMask<IMR1, (0x1u << 0x2u)>; + using IM3 = RegisterMask<IMR1, (0x1u << 0x3u)>; + using IM4 = RegisterMask<IMR1, (0x1u << 0x4u)>; + using IM5 = RegisterMask<IMR1, (0x1u << 0x5u)>; + using IM6 = RegisterMask<IMR1, (0x1u << 0x6u)>; + using IM7 = RegisterMask<IMR1, (0x1u << 0x7u)>; + using IM8 = RegisterMask<IMR1, (0x1u << 0x8u)>; + using IM9 = RegisterMask<IMR1, (0x1u << 0x9u)>; + using IM10 = RegisterMask<IMR1, (0x1u << 0xau)>; + using IM11 = RegisterMask<IMR1, (0x1u << 0xbu)>; + using IM12 = RegisterMask<IMR1, (0x1u << 0xcu)>; + using IM13 = RegisterMask<IMR1, (0x1u << 0xdu)>; + using IM14 = RegisterMask<IMR1, (0x1u << 0xeu)>; + using IM15 = RegisterMask<IMR1, (0x1u << 0xfu)>; + using IM16 = RegisterMask<IMR1, (0x1u << 0x10u)>; + using IM17 = RegisterMask<IMR1, (0x1u << 0x11u)>; + using IM18 = RegisterMask<IMR1, (0x1u << 0x12u)>; + using IM19 = RegisterMask<IMR1, (0x1u << 0x13u)>; + using IM20 = RegisterMask<IMR1, (0x1u << 0x14u)>; + using IM21 = RegisterMask<IMR1, (0x1u << 0x15u)>; + using IM22 = RegisterMask<IMR1, (0x1u << 0x16u)>; + using IM23 = RegisterMask<IMR1, (0x1u << 0x17u)>; + using IM24 = RegisterMask<IMR1, (0x1u << 0x18u)>; + using IM25 = RegisterMask<IMR1, (0x1u << 0x19u)>; + using IM26 = RegisterMask<IMR1, (0x1u << 0x1au)>; + using IM27 = RegisterMask<IMR1, (0x1u << 0x1bu)>; + using IM28 = RegisterMask<IMR1, (0x1u << 0x1cu)>; + using IM29 = RegisterMask<IMR1, (0x1u << 0x1du)>; + using IM30 = RegisterMask<IMR1, (0x1u << 0x1eu)>; + using IM31 = RegisterMask<IMR1, (0x1u << 0x1fu)>; + }; + struct EMR1 : public MemRegister<uint32_t, 0x40021884> { + using EM0 = RegisterMask<EMR1, (0x1u << 0x0u)>; + using EM1 = RegisterMask<EMR1, (0x1u << 0x1u)>; + using EM2 = RegisterMask<EMR1, (0x1u << 0x2u)>; + using EM3 = RegisterMask<EMR1, (0x1u << 0x3u)>; + using EM4 = RegisterMask<EMR1, (0x1u << 0x4u)>; + using EM5 = RegisterMask<EMR1, (0x1u << 0x5u)>; + using EM6 = RegisterMask<EMR1, (0x1u << 0x6u)>; + using EM7 = RegisterMask<EMR1, (0x1u << 0x7u)>; + using EM8 = RegisterMask<EMR1, (0x1u << 0x8u)>; + using EM9 = RegisterMask<EMR1, (0x1u << 0x9u)>; + using EM10 = RegisterMask<EMR1, (0x1u << 0xau)>; + using EM11 = RegisterMask<EMR1, (0x1u << 0xbu)>; + using EM12 = RegisterMask<EMR1, (0x1u << 0xcu)>; + using EM13 = RegisterMask<EMR1, (0x1u << 0xdu)>; + using EM14 = RegisterMask<EMR1, (0x1u << 0xeu)>; + using EM15 = RegisterMask<EMR1, (0x1u << 0xfu)>; + using EM16 = RegisterMask<EMR1, (0x1u << 0x10u)>; + using EM17 = RegisterMask<EMR1, (0x1u << 0x11u)>; + using EM18 = RegisterMask<EMR1, (0x1u << 0x12u)>; + using EM19 = RegisterMask<EMR1, (0x1u << 0x13u)>; + using EM20 = RegisterMask<EMR1, (0x1u << 0x14u)>; + using EM21 = RegisterMask<EMR1, (0x1u << 0x15u)>; + using EM22 = RegisterMask<EMR1, (0x1u << 0x16u)>; + using EM23 = RegisterMask<EMR1, (0x1u << 0x17u)>; + using EM24 = RegisterMask<EMR1, (0x1u << 0x18u)>; + using EM25 = RegisterMask<EMR1, (0x1u << 0x19u)>; + using EM26 = RegisterMask<EMR1, (0x1u << 0x1au)>; + using EM27 = RegisterMask<EMR1, (0x1u << 0x1bu)>; + using EM28 = RegisterMask<EMR1, (0x1u << 0x1cu)>; + using EM29 = RegisterMask<EMR1, (0x1u << 0x1du)>; + using EM30 = RegisterMask<EMR1, (0x1u << 0x1eu)>; + using EM31 = RegisterMask<EMR1, (0x1u << 0x1fu)>; + }; + struct IMR2 : public MemRegister<uint32_t, 0x40021890> { + using IM32 = RegisterMask<IMR2, (0x1u << 0x0u)>; + using IM33 = RegisterMask<IMR2, (0x1u << 0x1u)>; + using IM34 = RegisterMask<IMR2, (0x1u << 0x2u)>; + using IM35 = RegisterMask<IMR2, (0x1u << 0x3u)>; + using IM36 = RegisterMask<IMR2, (0x1u << 0x4u)>; + using IM37 = RegisterMask<IMR2, (0x1u << 0x5u)>; + }; + struct EMR2 : public MemRegister<uint32_t, 0x40021894> { + using EM32 = RegisterMask<EMR2, (0x1u << 0x0u)>; + using EM33 = RegisterMask<EMR2, (0x1u << 0x1u)>; + using EM34 = RegisterMask<EMR2, (0x1u << 0x2u)>; + using EM35 = RegisterMask<EMR2, (0x1u << 0x3u)>; + using EM36 = RegisterMask<EMR2, (0x1u << 0x4u)>; + using EM37 = RegisterMask<EMR2, (0x1u << 0x5u)>; + }; + using ALL = RegisterGroup<RTSR1, FTSR1, SWIER1, RPR1, FPR1, EXTICR1, EXTICR2, EXTICR3, EXTICR4, IMR1, EMR1, IMR2, EMR2>; + } + namespace FLASH { + struct ACR : public MemRegister<uint32_t, 0x40022000> { + using LATENCY = RegisterMask<ACR, (0x7u << 0x0u)>; + using PRFTEN = RegisterMask<ACR, (0x1u << 0x8u)>; + using ICEN = RegisterMask<ACR, (0x1u << 0x9u)>; + using ICRST = RegisterMask<ACR, (0x1u << 0xbu)>; + using EMPTY = RegisterMask<ACR, (0x1u << 0x10u)>; + using DBG_SWEN = RegisterMask<ACR, (0x1u << 0x12u)>; + }; + struct KEYR : public MemRegister<uint32_t, 0x40022008> { + using KEY = RegisterMask<KEYR, (0x0u << 0x0u)>; + }; + struct OPTKEYR : public MemRegister<uint32_t, 0x4002200c> { + using OPTKEY = RegisterMask<OPTKEYR, (0x0u << 0x0u)>; + }; + struct SR : public MemRegister<uint32_t, 0x40022010> { + using EOP = RegisterMask<SR, (0x1u << 0x0u)>; + using OPERR = RegisterMask<SR, (0x1u << 0x1u)>; + using PROGERR = RegisterMask<SR, (0x1u << 0x3u)>; + using WRPERR = RegisterMask<SR, (0x1u << 0x4u)>; + using PGAERR = RegisterMask<SR, (0x1u << 0x5u)>; + using SIZERR = RegisterMask<SR, (0x1u << 0x6u)>; + using PGSERR = RegisterMask<SR, (0x1u << 0x7u)>; + using MISSERR = RegisterMask<SR, (0x1u << 0x8u)>; + using FASTERR = RegisterMask<SR, (0x1u << 0x9u)>; + using RDERR = RegisterMask<SR, (0x1u << 0xeu)>; + using OPTVERR = RegisterMask<SR, (0x1u << 0xfu)>; + using BSY1 = RegisterMask<SR, (0x1u << 0x10u)>; + using CFGBSY = RegisterMask<SR, (0x1u << 0x12u)>; + }; + struct CR : public MemRegister<uint32_t, 0x40022014> { + using PG = RegisterMask<CR, (0x1u << 0x0u)>; + using PER = RegisterMask<CR, (0x1u << 0x1u)>; + using MER1 = RegisterMask<CR, (0x1u << 0x2u)>; + using PNB = RegisterMask<CR, (0x7fu << 0x3u)>; + using STRT = RegisterMask<CR, (0x1u << 0x10u)>; + using OPTSTRT = RegisterMask<CR, (0x1u << 0x11u)>; + using FSTPG = RegisterMask<CR, (0x1u << 0x12u)>; + using EOPIE = RegisterMask<CR, (0x1u << 0x18u)>; + using ERRIE = RegisterMask<CR, (0x1u << 0x19u)>; + using RDERRIE = RegisterMask<CR, (0x1u << 0x1au)>; + using OBL_LAUNCH = RegisterMask<CR, (0x1u << 0x1bu)>; + using SEC_PROT = RegisterMask<CR, (0x1u << 0x1cu)>; + using OPTLOCK = RegisterMask<CR, (0x1u << 0x1eu)>; + using LOCK = RegisterMask<CR, (0x1u << 0x1fu)>; + }; + struct ECCR : public MemRegister<uint32_t, 0x40022018> { + using ADDR_ECC = RegisterMask<ECCR, (0x3fffu << 0x0u)>; + using SYSF_ECC = RegisterMask<ECCR, (0x1u << 0x14u)>; + using ECCCIE = RegisterMask<ECCR, (0x1u << 0x18u)>; + using ECCC = RegisterMask<ECCR, (0x1u << 0x1eu)>; + using ECCD = RegisterMask<ECCR, (0x1u << 0x1fu)>; + }; + struct OPTR : public MemRegister<uint32_t, 0x40022020> { + using RDP = RegisterMask<OPTR, (0xffu << 0x0u)>; + using BORR_LEV = RegisterMask<OPTR, (0x7u << 0x8u)>; + using NRST_STOP = RegisterMask<OPTR, (0x1u << 0xdu)>; + using NRST_STDBY = RegisterMask<OPTR, (0x1u << 0xeu)>; + using NRST_SHDW = RegisterMask<OPTR, (0x1u << 0xfu)>; + using IWDG_SW = RegisterMask<OPTR, (0x1u << 0x10u)>; + using IWDG_STOP = RegisterMask<OPTR, (0x1u << 0x11u)>; + using IWDG_STDBY = RegisterMask<OPTR, (0x1u << 0x12u)>; + using WWDG_SW = RegisterMask<OPTR, (0x1u << 0x13u)>; + using BDRST = RegisterMask<OPTR, (0x1u << 0x15u)>; + using RAM_PARITY_CHECK = RegisterMask<OPTR, (0x1u << 0x16u)>; + using BKPSRAM_HW_ERASE_DISABLE = RegisterMask<OPTR, (0x1u << 0x17u)>; + using NBOOT_SEL = RegisterMask<OPTR, (0x1u << 0x18u)>; + using NBOOT1 = RegisterMask<OPTR, (0x1u << 0x19u)>; + using NBOOT0 = RegisterMask<OPTR, (0x1u << 0x1au)>; + using NRST_MODE = RegisterMask<OPTR, (0x3u << 0x1bu)>; + using IRHEN = RegisterMask<OPTR, (0x1u << 0x1du)>; + }; + struct WRP1AR : public MemRegister<uint32_t, 0x4002202c> { + using WRP1A_STRT = RegisterMask<WRP1AR, (0x7fu << 0x0u)>; + using WRP1A_END = RegisterMask<WRP1AR, (0x7fu << 0x10u)>; + }; + struct WRP1BR : public MemRegister<uint32_t, 0x40022030> { + using WRP1B_STRT = RegisterMask<WRP1BR, (0x7fu << 0x0u)>; + using WRP1B_END = RegisterMask<WRP1BR, (0x7fu << 0x10u)>; + }; + struct SECR : public MemRegister<uint32_t, 0x40022080> { + using HDP1_PEND = RegisterMask<SECR, (0x7fu << 0x0u)>; + using BOOT_LOCK = RegisterMask<SECR, (0x1u << 0x10u)>; + using HDP1EN = RegisterMask<SECR, (0xffu << 0x18u)>; + }; + using ALL = RegisterGroup<ACR, KEYR, OPTKEYR, SR, CR, ECCR, OPTR, WRP1AR, WRP1BR, SECR>; + } + namespace GPIOA { + struct MODER : public MemRegister<uint32_t, 0x50000000> { + using MODE0 = RegisterMask<MODER, (0x3u << 0x0u)>; + using MODE1 = RegisterMask<MODER, (0x3u << 0x2u)>; + using MODE2 = RegisterMask<MODER, (0x3u << 0x4u)>; + using MODE3 = RegisterMask<MODER, (0x3u << 0x6u)>; + using MODE4 = RegisterMask<MODER, (0x3u << 0x8u)>; + using MODE5 = RegisterMask<MODER, (0x3u << 0xau)>; + using MODE6 = RegisterMask<MODER, (0x3u << 0xcu)>; + using MODE7 = RegisterMask<MODER, (0x3u << 0xeu)>; + using MODE8 = RegisterMask<MODER, (0x3u << 0x10u)>; + using MODE9 = RegisterMask<MODER, (0x3u << 0x12u)>; + using MODE10 = RegisterMask<MODER, (0x3u << 0x14u)>; + using MODE11 = RegisterMask<MODER, (0x3u << 0x16u)>; + using MODE12 = RegisterMask<MODER, (0x3u << 0x18u)>; + using MODE13 = RegisterMask<MODER, (0x3u << 0x1au)>; + using MODE14 = RegisterMask<MODER, (0x3u << 0x1cu)>; + using MODE15 = RegisterMask<MODER, (0x3u << 0x1eu)>; + }; + struct OTYPER : public MemRegister<uint32_t, 0x50000004> { + using OT0 = RegisterMask<OTYPER, (0x1u << 0x0u)>; + using OT1 = RegisterMask<OTYPER, (0x1u << 0x1u)>; + using OT2 = RegisterMask<OTYPER, (0x1u << 0x2u)>; + using OT3 = RegisterMask<OTYPER, (0x1u << 0x3u)>; + using OT4 = RegisterMask<OTYPER, (0x1u << 0x4u)>; + using OT5 = RegisterMask<OTYPER, (0x1u << 0x5u)>; + using OT6 = RegisterMask<OTYPER, (0x1u << 0x6u)>; + using OT7 = RegisterMask<OTYPER, (0x1u << 0x7u)>; + using OT8 = RegisterMask<OTYPER, (0x1u << 0x8u)>; + using OT9 = RegisterMask<OTYPER, (0x1u << 0x9u)>; + using OT10 = RegisterMask<OTYPER, (0x1u << 0xau)>; + using OT11 = RegisterMask<OTYPER, (0x1u << 0xbu)>; + using OT12 = RegisterMask<OTYPER, (0x1u << 0xcu)>; + using OT13 = RegisterMask<OTYPER, (0x1u << 0xdu)>; + using OT14 = RegisterMask<OTYPER, (0x1u << 0xeu)>; + using OT15 = RegisterMask<OTYPER, (0x1u << 0xfu)>; + }; + struct OSPEEDR : public MemRegister<uint32_t, 0x50000008> { + using OSPEED0 = RegisterMask<OSPEEDR, (0x3u << 0x0u)>; + using OSPEED1 = RegisterMask<OSPEEDR, (0x3u << 0x2u)>; + using OSPEED2 = RegisterMask<OSPEEDR, (0x3u << 0x4u)>; + using OSPEED3 = RegisterMask<OSPEEDR, (0x3u << 0x6u)>; + using OSPEED4 = RegisterMask<OSPEEDR, (0x3u << 0x8u)>; + using OSPEED5 = RegisterMask<OSPEEDR, (0x3u << 0xau)>; + using OSPEED6 = RegisterMask<OSPEEDR, (0x3u << 0xcu)>; + using OSPEED7 = RegisterMask<OSPEEDR, (0x3u << 0xeu)>; + using OSPEED8 = RegisterMask<OSPEEDR, (0x3u << 0x10u)>; + using OSPEED9 = RegisterMask<OSPEEDR, (0x3u << 0x12u)>; + using OSPEED10 = RegisterMask<OSPEEDR, (0x3u << 0x14u)>; + using OSPEED11 = RegisterMask<OSPEEDR, (0x3u << 0x16u)>; + using OSPEED12 = RegisterMask<OSPEEDR, (0x3u << 0x18u)>; + using OSPEED13 = RegisterMask<OSPEEDR, (0x3u << 0x1au)>; + using OSPEED14 = RegisterMask<OSPEEDR, (0x3u << 0x1cu)>; + using OSPEED15 = RegisterMask<OSPEEDR, (0x3u << 0x1eu)>; + }; + struct PUPDR : public MemRegister<uint32_t, 0x5000000c> { + using PUPD0 = RegisterMask<PUPDR, (0x3u << 0x0u)>; + using PUPD1 = RegisterMask<PUPDR, (0x3u << 0x2u)>; + using PUPD2 = RegisterMask<PUPDR, (0x3u << 0x4u)>; + using PUPD3 = RegisterMask<PUPDR, (0x3u << 0x6u)>; + using PUPD4 = RegisterMask<PUPDR, (0x3u << 0x8u)>; + using PUPD5 = RegisterMask<PUPDR, (0x3u << 0xau)>; + using PUPD6 = RegisterMask<PUPDR, (0x3u << 0xcu)>; + using PUPD7 = RegisterMask<PUPDR, (0x3u << 0xeu)>; + using PUPD8 = RegisterMask<PUPDR, (0x3u << 0x10u)>; + using PUPD9 = RegisterMask<PUPDR, (0x3u << 0x12u)>; + using PUPD10 = RegisterMask<PUPDR, (0x3u << 0x14u)>; + using PUPD11 = RegisterMask<PUPDR, (0x3u << 0x16u)>; + using PUPD12 = RegisterMask<PUPDR, (0x3u << 0x18u)>; + using PUPD13 = RegisterMask<PUPDR, (0x3u << 0x1au)>; + using PUPD14 = RegisterMask<PUPDR, (0x3u << 0x1cu)>; + using PUPD15 = RegisterMask<PUPDR, (0x3u << 0x1eu)>; + }; + struct IDR : public MemRegister<uint32_t, 0x50000010> { + using ID0 = RegisterMask<IDR, (0x1u << 0x0u)>; + using ID1 = RegisterMask<IDR, (0x1u << 0x1u)>; + using ID2 = RegisterMask<IDR, (0x1u << 0x2u)>; + using ID3 = RegisterMask<IDR, (0x1u << 0x3u)>; + using ID4 = RegisterMask<IDR, (0x1u << 0x4u)>; + using ID5 = RegisterMask<IDR, (0x1u << 0x5u)>; + using ID6 = RegisterMask<IDR, (0x1u << 0x6u)>; + using ID7 = RegisterMask<IDR, (0x1u << 0x7u)>; + using ID8 = RegisterMask<IDR, (0x1u << 0x8u)>; + using ID9 = RegisterMask<IDR, (0x1u << 0x9u)>; + using ID10 = RegisterMask<IDR, (0x1u << 0xau)>; + using ID11 = RegisterMask<IDR, (0x1u << 0xbu)>; + using ID12 = RegisterMask<IDR, (0x1u << 0xcu)>; + using ID13 = RegisterMask<IDR, (0x1u << 0xdu)>; + using ID14 = RegisterMask<IDR, (0x1u << 0xeu)>; + using ID15 = RegisterMask<IDR, (0x1u << 0xfu)>; + }; + struct ODR : public MemRegister<uint32_t, 0x50000014> { + using OD0 = RegisterMask<ODR, (0x1u << 0x0u)>; + using OD1 = RegisterMask<ODR, (0x1u << 0x1u)>; + using OD2 = RegisterMask<ODR, (0x1u << 0x2u)>; + using OD3 = RegisterMask<ODR, (0x1u << 0x3u)>; + using OD4 = RegisterMask<ODR, (0x1u << 0x4u)>; + using OD5 = RegisterMask<ODR, (0x1u << 0x5u)>; + using OD6 = RegisterMask<ODR, (0x1u << 0x6u)>; + using OD7 = RegisterMask<ODR, (0x1u << 0x7u)>; + using OD8 = RegisterMask<ODR, (0x1u << 0x8u)>; + using OD9 = RegisterMask<ODR, (0x1u << 0x9u)>; + using OD10 = RegisterMask<ODR, (0x1u << 0xau)>; + using OD11 = RegisterMask<ODR, (0x1u << 0xbu)>; + using OD12 = RegisterMask<ODR, (0x1u << 0xcu)>; + using OD13 = RegisterMask<ODR, (0x1u << 0xdu)>; + using OD14 = RegisterMask<ODR, (0x1u << 0xeu)>; + using OD15 = RegisterMask<ODR, (0x1u << 0xfu)>; + }; + struct BSRR : public MemRegister<uint32_t, 0x50000018> { + using BS0 = RegisterMask<BSRR, (0x1u << 0x0u)>; + using BS1 = RegisterMask<BSRR, (0x1u << 0x1u)>; + using BS2 = RegisterMask<BSRR, (0x1u << 0x2u)>; + using BS3 = RegisterMask<BSRR, (0x1u << 0x3u)>; + using BS4 = RegisterMask<BSRR, (0x1u << 0x4u)>; + using BS5 = RegisterMask<BSRR, (0x1u << 0x5u)>; + using BS6 = RegisterMask<BSRR, (0x1u << 0x6u)>; + using BS7 = RegisterMask<BSRR, (0x1u << 0x7u)>; + using BS8 = RegisterMask<BSRR, (0x1u << 0x8u)>; + using BS9 = RegisterMask<BSRR, (0x1u << 0x9u)>; + using BS10 = RegisterMask<BSRR, (0x1u << 0xau)>; + using BS11 = RegisterMask<BSRR, (0x1u << 0xbu)>; + using BS12 = RegisterMask<BSRR, (0x1u << 0xcu)>; + using BS13 = RegisterMask<BSRR, (0x1u << 0xdu)>; + using BS14 = RegisterMask<BSRR, (0x1u << 0xeu)>; + using BS15 = RegisterMask<BSRR, (0x1u << 0xfu)>; + using BR0 = RegisterMask<BSRR, (0x1u << 0x10u)>; + using BR1 = RegisterMask<BSRR, (0x1u << 0x11u)>; + using BR2 = RegisterMask<BSRR, (0x1u << 0x12u)>; + using BR3 = RegisterMask<BSRR, (0x1u << 0x13u)>; + using BR4 = RegisterMask<BSRR, (0x1u << 0x14u)>; + using BR5 = RegisterMask<BSRR, (0x1u << 0x15u)>; + using BR6 = RegisterMask<BSRR, (0x1u << 0x16u)>; + using BR7 = RegisterMask<BSRR, (0x1u << 0x17u)>; + using BR8 = RegisterMask<BSRR, (0x1u << 0x18u)>; + using BR9 = RegisterMask<BSRR, (0x1u << 0x19u)>; + using BR10 = RegisterMask<BSRR, (0x1u << 0x1au)>; + using BR11 = RegisterMask<BSRR, (0x1u << 0x1bu)>; + using BR12 = RegisterMask<BSRR, (0x1u << 0x1cu)>; + using BR13 = RegisterMask<BSRR, (0x1u << 0x1du)>; + using BR14 = RegisterMask<BSRR, (0x1u << 0x1eu)>; + using BR15 = RegisterMask<BSRR, (0x1u << 0x1fu)>; + }; + struct LCKR : public MemRegister<uint32_t, 0x5000001c> { + using LCK0 = RegisterMask<LCKR, (0x1u << 0x0u)>; + using LCK1 = RegisterMask<LCKR, (0x1u << 0x1u)>; + using LCK2 = RegisterMask<LCKR, (0x1u << 0x2u)>; + using LCK3 = RegisterMask<LCKR, (0x1u << 0x3u)>; + using LCK4 = RegisterMask<LCKR, (0x1u << 0x4u)>; + using LCK5 = RegisterMask<LCKR, (0x1u << 0x5u)>; + using LCK6 = RegisterMask<LCKR, (0x1u << 0x6u)>; + using LCK7 = RegisterMask<LCKR, (0x1u << 0x7u)>; + using LCK8 = RegisterMask<LCKR, (0x1u << 0x8u)>; + using LCK9 = RegisterMask<LCKR, (0x1u << 0x9u)>; + using LCK10 = RegisterMask<LCKR, (0x1u << 0xau)>; + using LCK11 = RegisterMask<LCKR, (0x1u << 0xbu)>; + using LCK12 = RegisterMask<LCKR, (0x1u << 0xcu)>; + using LCK13 = RegisterMask<LCKR, (0x1u << 0xdu)>; + using LCK14 = RegisterMask<LCKR, (0x1u << 0xeu)>; + using LCK15 = RegisterMask<LCKR, (0x1u << 0xfu)>; + using LCKK = RegisterMask<LCKR, (0x1u << 0x10u)>; + }; + struct AFRL : public MemRegister<uint32_t, 0x50000020> { + using AFSEL0 = RegisterMask<AFRL, (0xfu << 0x0u)>; + using AFSEL1 = RegisterMask<AFRL, (0xfu << 0x4u)>; + using AFSEL2 = RegisterMask<AFRL, (0xfu << 0x8u)>; + using AFSEL3 = RegisterMask<AFRL, (0xfu << 0xcu)>; + using AFSEL4 = RegisterMask<AFRL, (0xfu << 0x10u)>; + using AFSEL5 = RegisterMask<AFRL, (0xfu << 0x14u)>; + using AFSEL6 = RegisterMask<AFRL, (0xfu << 0x18u)>; + using AFSEL7 = RegisterMask<AFRL, (0xfu << 0x1cu)>; + }; + struct AFRH : public MemRegister<uint32_t, 0x50000024> { + using AFSEL8 = RegisterMask<AFRH, (0xfu << 0x0u)>; + using AFSEL9 = RegisterMask<AFRH, (0xfu << 0x4u)>; + using AFSEL10 = RegisterMask<AFRH, (0xfu << 0x8u)>; + using AFSEL11 = RegisterMask<AFRH, (0xfu << 0xcu)>; + using AFSEL12 = RegisterMask<AFRH, (0xfu << 0x10u)>; + using AFSEL13 = RegisterMask<AFRH, (0xfu << 0x14u)>; + using AFSEL14 = RegisterMask<AFRH, (0xfu << 0x18u)>; + using AFSEL15 = RegisterMask<AFRH, (0xfu << 0x1cu)>; + }; + struct BRR : public MemRegister<uint32_t, 0x50000028> { + using BR0 = RegisterMask<BRR, (0x1u << 0x0u)>; + using BR1 = RegisterMask<BRR, (0x1u << 0x1u)>; + using BR2 = RegisterMask<BRR, (0x1u << 0x2u)>; + using BR3 = RegisterMask<BRR, (0x1u << 0x3u)>; + using BR4 = RegisterMask<BRR, (0x1u << 0x4u)>; + using BR5 = RegisterMask<BRR, (0x1u << 0x5u)>; + using BR6 = RegisterMask<BRR, (0x1u << 0x6u)>; + using BR7 = RegisterMask<BRR, (0x1u << 0x7u)>; + using BR8 = RegisterMask<BRR, (0x1u << 0x8u)>; + using BR9 = RegisterMask<BRR, (0x1u << 0x9u)>; + using BR10 = RegisterMask<BRR, (0x1u << 0xau)>; + using BR11 = RegisterMask<BRR, (0x1u << 0xbu)>; + using BR12 = RegisterMask<BRR, (0x1u << 0xcu)>; + using BR13 = RegisterMask<BRR, (0x1u << 0xdu)>; + using BR14 = RegisterMask<BRR, (0x1u << 0xeu)>; + using BR15 = RegisterMask<BRR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFRL, AFRH, BRR>; + } + namespace GPIOB { + struct MODER : public MemRegister<uint32_t, 0x50000400> { + using MODE0 = RegisterMask<MODER, (0x3u << 0x0u)>; + using MODE1 = RegisterMask<MODER, (0x3u << 0x2u)>; + using MODE2 = RegisterMask<MODER, (0x3u << 0x4u)>; + using MODE3 = RegisterMask<MODER, (0x3u << 0x6u)>; + using MODE4 = RegisterMask<MODER, (0x3u << 0x8u)>; + using MODE5 = RegisterMask<MODER, (0x3u << 0xau)>; + using MODE6 = RegisterMask<MODER, (0x3u << 0xcu)>; + using MODE7 = RegisterMask<MODER, (0x3u << 0xeu)>; + using MODE8 = RegisterMask<MODER, (0x3u << 0x10u)>; + using MODE9 = RegisterMask<MODER, (0x3u << 0x12u)>; + using MODE10 = RegisterMask<MODER, (0x3u << 0x14u)>; + using MODE11 = RegisterMask<MODER, (0x3u << 0x16u)>; + using MODE12 = RegisterMask<MODER, (0x3u << 0x18u)>; + using MODE13 = RegisterMask<MODER, (0x3u << 0x1au)>; + using MODE14 = RegisterMask<MODER, (0x3u << 0x1cu)>; + using MODE15 = RegisterMask<MODER, (0x3u << 0x1eu)>; + }; + struct OTYPER : public MemRegister<uint32_t, 0x50000404> { + using OT0 = RegisterMask<OTYPER, (0x1u << 0x0u)>; + using OT1 = RegisterMask<OTYPER, (0x1u << 0x1u)>; + using OT2 = RegisterMask<OTYPER, (0x1u << 0x2u)>; + using OT3 = RegisterMask<OTYPER, (0x1u << 0x3u)>; + using OT4 = RegisterMask<OTYPER, (0x1u << 0x4u)>; + using OT5 = RegisterMask<OTYPER, (0x1u << 0x5u)>; + using OT6 = RegisterMask<OTYPER, (0x1u << 0x6u)>; + using OT7 = RegisterMask<OTYPER, (0x1u << 0x7u)>; + using OT8 = RegisterMask<OTYPER, (0x1u << 0x8u)>; + using OT9 = RegisterMask<OTYPER, (0x1u << 0x9u)>; + using OT10 = RegisterMask<OTYPER, (0x1u << 0xau)>; + using OT11 = RegisterMask<OTYPER, (0x1u << 0xbu)>; + using OT12 = RegisterMask<OTYPER, (0x1u << 0xcu)>; + using OT13 = RegisterMask<OTYPER, (0x1u << 0xdu)>; + using OT14 = RegisterMask<OTYPER, (0x1u << 0xeu)>; + using OT15 = RegisterMask<OTYPER, (0x1u << 0xfu)>; + }; + struct OSPEEDR : public MemRegister<uint32_t, 0x50000408> { + using OSPEED0 = RegisterMask<OSPEEDR, (0x3u << 0x0u)>; + using OSPEED1 = RegisterMask<OSPEEDR, (0x3u << 0x2u)>; + using OSPEED2 = RegisterMask<OSPEEDR, (0x3u << 0x4u)>; + using OSPEED3 = RegisterMask<OSPEEDR, (0x3u << 0x6u)>; + using OSPEED4 = RegisterMask<OSPEEDR, (0x3u << 0x8u)>; + using OSPEED5 = RegisterMask<OSPEEDR, (0x3u << 0xau)>; + using OSPEED6 = RegisterMask<OSPEEDR, (0x3u << 0xcu)>; + using OSPEED7 = RegisterMask<OSPEEDR, (0x3u << 0xeu)>; + using OSPEED8 = RegisterMask<OSPEEDR, (0x3u << 0x10u)>; + using OSPEED9 = RegisterMask<OSPEEDR, (0x3u << 0x12u)>; + using OSPEED10 = RegisterMask<OSPEEDR, (0x3u << 0x14u)>; + using OSPEED11 = RegisterMask<OSPEEDR, (0x3u << 0x16u)>; + using OSPEED12 = RegisterMask<OSPEEDR, (0x3u << 0x18u)>; + using OSPEED13 = RegisterMask<OSPEEDR, (0x3u << 0x1au)>; + using OSPEED14 = RegisterMask<OSPEEDR, (0x3u << 0x1cu)>; + using OSPEED15 = RegisterMask<OSPEEDR, (0x3u << 0x1eu)>; + }; + struct PUPDR : public MemRegister<uint32_t, 0x5000040c> { + using PUPD0 = RegisterMask<PUPDR, (0x3u << 0x0u)>; + using PUPD1 = RegisterMask<PUPDR, (0x3u << 0x2u)>; + using PUPD2 = RegisterMask<PUPDR, (0x3u << 0x4u)>; + using PUPD3 = RegisterMask<PUPDR, (0x3u << 0x6u)>; + using PUPD4 = RegisterMask<PUPDR, (0x3u << 0x8u)>; + using PUPD5 = RegisterMask<PUPDR, (0x3u << 0xau)>; + using PUPD6 = RegisterMask<PUPDR, (0x3u << 0xcu)>; + using PUPD7 = RegisterMask<PUPDR, (0x3u << 0xeu)>; + using PUPD8 = RegisterMask<PUPDR, (0x3u << 0x10u)>; + using PUPD9 = RegisterMask<PUPDR, (0x3u << 0x12u)>; + using PUPD10 = RegisterMask<PUPDR, (0x3u << 0x14u)>; + using PUPD11 = RegisterMask<PUPDR, (0x3u << 0x16u)>; + using PUPD12 = RegisterMask<PUPDR, (0x3u << 0x18u)>; + using PUPD13 = RegisterMask<PUPDR, (0x3u << 0x1au)>; + using PUPD14 = RegisterMask<PUPDR, (0x3u << 0x1cu)>; + using PUPD15 = RegisterMask<PUPDR, (0x3u << 0x1eu)>; + }; + struct IDR : public MemRegister<uint32_t, 0x50000410> { + using ID0 = RegisterMask<IDR, (0x1u << 0x0u)>; + using ID1 = RegisterMask<IDR, (0x1u << 0x1u)>; + using ID2 = RegisterMask<IDR, (0x1u << 0x2u)>; + using ID3 = RegisterMask<IDR, (0x1u << 0x3u)>; + using ID4 = RegisterMask<IDR, (0x1u << 0x4u)>; + using ID5 = RegisterMask<IDR, (0x1u << 0x5u)>; + using ID6 = RegisterMask<IDR, (0x1u << 0x6u)>; + using ID7 = RegisterMask<IDR, (0x1u << 0x7u)>; + using ID8 = RegisterMask<IDR, (0x1u << 0x8u)>; + using ID9 = RegisterMask<IDR, (0x1u << 0x9u)>; + using ID10 = RegisterMask<IDR, (0x1u << 0xau)>; + using ID11 = RegisterMask<IDR, (0x1u << 0xbu)>; + using ID12 = RegisterMask<IDR, (0x1u << 0xcu)>; + using ID13 = RegisterMask<IDR, (0x1u << 0xdu)>; + using ID14 = RegisterMask<IDR, (0x1u << 0xeu)>; + using ID15 = RegisterMask<IDR, (0x1u << 0xfu)>; + }; + struct ODR : public MemRegister<uint32_t, 0x50000414> { + using OD0 = RegisterMask<ODR, (0x1u << 0x0u)>; + using OD1 = RegisterMask<ODR, (0x1u << 0x1u)>; + using OD2 = RegisterMask<ODR, (0x1u << 0x2u)>; + using OD3 = RegisterMask<ODR, (0x1u << 0x3u)>; + using OD4 = RegisterMask<ODR, (0x1u << 0x4u)>; + using OD5 = RegisterMask<ODR, (0x1u << 0x5u)>; + using OD6 = RegisterMask<ODR, (0x1u << 0x6u)>; + using OD7 = RegisterMask<ODR, (0x1u << 0x7u)>; + using OD8 = RegisterMask<ODR, (0x1u << 0x8u)>; + using OD9 = RegisterMask<ODR, (0x1u << 0x9u)>; + using OD10 = RegisterMask<ODR, (0x1u << 0xau)>; + using OD11 = RegisterMask<ODR, (0x1u << 0xbu)>; + using OD12 = RegisterMask<ODR, (0x1u << 0xcu)>; + using OD13 = RegisterMask<ODR, (0x1u << 0xdu)>; + using OD14 = RegisterMask<ODR, (0x1u << 0xeu)>; + using OD15 = RegisterMask<ODR, (0x1u << 0xfu)>; + }; + struct BSRR : public MemRegister<uint32_t, 0x50000418> { + using BS0 = RegisterMask<BSRR, (0x1u << 0x0u)>; + using BS1 = RegisterMask<BSRR, (0x1u << 0x1u)>; + using BS2 = RegisterMask<BSRR, (0x1u << 0x2u)>; + using BS3 = RegisterMask<BSRR, (0x1u << 0x3u)>; + using BS4 = RegisterMask<BSRR, (0x1u << 0x4u)>; + using BS5 = RegisterMask<BSRR, (0x1u << 0x5u)>; + using BS6 = RegisterMask<BSRR, (0x1u << 0x6u)>; + using BS7 = RegisterMask<BSRR, (0x1u << 0x7u)>; + using BS8 = RegisterMask<BSRR, (0x1u << 0x8u)>; + using BS9 = RegisterMask<BSRR, (0x1u << 0x9u)>; + using BS10 = RegisterMask<BSRR, (0x1u << 0xau)>; + using BS11 = RegisterMask<BSRR, (0x1u << 0xbu)>; + using BS12 = RegisterMask<BSRR, (0x1u << 0xcu)>; + using BS13 = RegisterMask<BSRR, (0x1u << 0xdu)>; + using BS14 = RegisterMask<BSRR, (0x1u << 0xeu)>; + using BS15 = RegisterMask<BSRR, (0x1u << 0xfu)>; + using BR0 = RegisterMask<BSRR, (0x1u << 0x10u)>; + using BR1 = RegisterMask<BSRR, (0x1u << 0x11u)>; + using BR2 = RegisterMask<BSRR, (0x1u << 0x12u)>; + using BR3 = RegisterMask<BSRR, (0x1u << 0x13u)>; + using BR4 = RegisterMask<BSRR, (0x1u << 0x14u)>; + using BR5 = RegisterMask<BSRR, (0x1u << 0x15u)>; + using BR6 = RegisterMask<BSRR, (0x1u << 0x16u)>; + using BR7 = RegisterMask<BSRR, (0x1u << 0x17u)>; + using BR8 = RegisterMask<BSRR, (0x1u << 0x18u)>; + using BR9 = RegisterMask<BSRR, (0x1u << 0x19u)>; + using BR10 = RegisterMask<BSRR, (0x1u << 0x1au)>; + using BR11 = RegisterMask<BSRR, (0x1u << 0x1bu)>; + using BR12 = RegisterMask<BSRR, (0x1u << 0x1cu)>; + using BR13 = RegisterMask<BSRR, (0x1u << 0x1du)>; + using BR14 = RegisterMask<BSRR, (0x1u << 0x1eu)>; + using BR15 = RegisterMask<BSRR, (0x1u << 0x1fu)>; + }; + struct LCKR : public MemRegister<uint32_t, 0x5000041c> { + using LCK0 = RegisterMask<LCKR, (0x1u << 0x0u)>; + using LCK1 = RegisterMask<LCKR, (0x1u << 0x1u)>; + using LCK2 = RegisterMask<LCKR, (0x1u << 0x2u)>; + using LCK3 = RegisterMask<LCKR, (0x1u << 0x3u)>; + using LCK4 = RegisterMask<LCKR, (0x1u << 0x4u)>; + using LCK5 = RegisterMask<LCKR, (0x1u << 0x5u)>; + using LCK6 = RegisterMask<LCKR, (0x1u << 0x6u)>; + using LCK7 = RegisterMask<LCKR, (0x1u << 0x7u)>; + using LCK8 = RegisterMask<LCKR, (0x1u << 0x8u)>; + using LCK9 = RegisterMask<LCKR, (0x1u << 0x9u)>; + using LCK10 = RegisterMask<LCKR, (0x1u << 0xau)>; + using LCK11 = RegisterMask<LCKR, (0x1u << 0xbu)>; + using LCK12 = RegisterMask<LCKR, (0x1u << 0xcu)>; + using LCK13 = RegisterMask<LCKR, (0x1u << 0xdu)>; + using LCK14 = RegisterMask<LCKR, (0x1u << 0xeu)>; + using LCK15 = RegisterMask<LCKR, (0x1u << 0xfu)>; + using LCKK = RegisterMask<LCKR, (0x1u << 0x10u)>; + }; + struct AFRL : public MemRegister<uint32_t, 0x50000420> { + using AFSEL0 = RegisterMask<AFRL, (0xfu << 0x0u)>; + using AFSEL1 = RegisterMask<AFRL, (0xfu << 0x4u)>; + using AFSEL2 = RegisterMask<AFRL, (0xfu << 0x8u)>; + using AFSEL3 = RegisterMask<AFRL, (0xfu << 0xcu)>; + using AFSEL4 = RegisterMask<AFRL, (0xfu << 0x10u)>; + using AFSEL5 = RegisterMask<AFRL, (0xfu << 0x14u)>; + using AFSEL6 = RegisterMask<AFRL, (0xfu << 0x18u)>; + using AFSEL7 = RegisterMask<AFRL, (0xfu << 0x1cu)>; + }; + struct AFRH : public MemRegister<uint32_t, 0x50000424> { + using AFSEL8 = RegisterMask<AFRH, (0xfu << 0x0u)>; + using AFSEL9 = RegisterMask<AFRH, (0xfu << 0x4u)>; + using AFSEL10 = RegisterMask<AFRH, (0xfu << 0x8u)>; + using AFSEL11 = RegisterMask<AFRH, (0xfu << 0xcu)>; + using AFSEL12 = RegisterMask<AFRH, (0xfu << 0x10u)>; + using AFSEL13 = RegisterMask<AFRH, (0xfu << 0x14u)>; + using AFSEL14 = RegisterMask<AFRH, (0xfu << 0x18u)>; + using AFSEL15 = RegisterMask<AFRH, (0xfu << 0x1cu)>; + }; + struct BRR : public MemRegister<uint32_t, 0x50000428> { + using BR0 = RegisterMask<BRR, (0x1u << 0x0u)>; + using BR1 = RegisterMask<BRR, (0x1u << 0x1u)>; + using BR2 = RegisterMask<BRR, (0x1u << 0x2u)>; + using BR3 = RegisterMask<BRR, (0x1u << 0x3u)>; + using BR4 = RegisterMask<BRR, (0x1u << 0x4u)>; + using BR5 = RegisterMask<BRR, (0x1u << 0x5u)>; + using BR6 = RegisterMask<BRR, (0x1u << 0x6u)>; + using BR7 = RegisterMask<BRR, (0x1u << 0x7u)>; + using BR8 = RegisterMask<BRR, (0x1u << 0x8u)>; + using BR9 = RegisterMask<BRR, (0x1u << 0x9u)>; + using BR10 = RegisterMask<BRR, (0x1u << 0xau)>; + using BR11 = RegisterMask<BRR, (0x1u << 0xbu)>; + using BR12 = RegisterMask<BRR, (0x1u << 0xcu)>; + using BR13 = RegisterMask<BRR, (0x1u << 0xdu)>; + using BR14 = RegisterMask<BRR, (0x1u << 0xeu)>; + using BR15 = RegisterMask<BRR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFRL, AFRH, BRR>; + } + namespace GPIOC { + struct MODER : public MemRegister<uint32_t, 0x50000800> { + using MODE0 = RegisterMask<MODER, (0x3u << 0x0u)>; + using MODE1 = RegisterMask<MODER, (0x3u << 0x2u)>; + using MODE2 = RegisterMask<MODER, (0x3u << 0x4u)>; + using MODE3 = RegisterMask<MODER, (0x3u << 0x6u)>; + using MODE4 = RegisterMask<MODER, (0x3u << 0x8u)>; + using MODE5 = RegisterMask<MODER, (0x3u << 0xau)>; + using MODE6 = RegisterMask<MODER, (0x3u << 0xcu)>; + using MODE7 = RegisterMask<MODER, (0x3u << 0xeu)>; + using MODE8 = RegisterMask<MODER, (0x3u << 0x10u)>; + using MODE9 = RegisterMask<MODER, (0x3u << 0x12u)>; + using MODE10 = RegisterMask<MODER, (0x3u << 0x14u)>; + using MODE11 = RegisterMask<MODER, (0x3u << 0x16u)>; + using MODE12 = RegisterMask<MODER, (0x3u << 0x18u)>; + using MODE13 = RegisterMask<MODER, (0x3u << 0x1au)>; + using MODE14 = RegisterMask<MODER, (0x3u << 0x1cu)>; + using MODE15 = RegisterMask<MODER, (0x3u << 0x1eu)>; + }; + struct OTYPER : public MemRegister<uint32_t, 0x50000804> { + using OT0 = RegisterMask<OTYPER, (0x1u << 0x0u)>; + using OT1 = RegisterMask<OTYPER, (0x1u << 0x1u)>; + using OT2 = RegisterMask<OTYPER, (0x1u << 0x2u)>; + using OT3 = RegisterMask<OTYPER, (0x1u << 0x3u)>; + using OT4 = RegisterMask<OTYPER, (0x1u << 0x4u)>; + using OT5 = RegisterMask<OTYPER, (0x1u << 0x5u)>; + using OT6 = RegisterMask<OTYPER, (0x1u << 0x6u)>; + using OT7 = RegisterMask<OTYPER, (0x1u << 0x7u)>; + using OT8 = RegisterMask<OTYPER, (0x1u << 0x8u)>; + using OT9 = RegisterMask<OTYPER, (0x1u << 0x9u)>; + using OT10 = RegisterMask<OTYPER, (0x1u << 0xau)>; + using OT11 = RegisterMask<OTYPER, (0x1u << 0xbu)>; + using OT12 = RegisterMask<OTYPER, (0x1u << 0xcu)>; + using OT13 = RegisterMask<OTYPER, (0x1u << 0xdu)>; + using OT14 = RegisterMask<OTYPER, (0x1u << 0xeu)>; + using OT15 = RegisterMask<OTYPER, (0x1u << 0xfu)>; + }; + struct OSPEEDR : public MemRegister<uint32_t, 0x50000808> { + using OSPEED0 = RegisterMask<OSPEEDR, (0x3u << 0x0u)>; + using OSPEED1 = RegisterMask<OSPEEDR, (0x3u << 0x2u)>; + using OSPEED2 = RegisterMask<OSPEEDR, (0x3u << 0x4u)>; + using OSPEED3 = RegisterMask<OSPEEDR, (0x3u << 0x6u)>; + using OSPEED4 = RegisterMask<OSPEEDR, (0x3u << 0x8u)>; + using OSPEED5 = RegisterMask<OSPEEDR, (0x3u << 0xau)>; + using OSPEED6 = RegisterMask<OSPEEDR, (0x3u << 0xcu)>; + using OSPEED7 = RegisterMask<OSPEEDR, (0x3u << 0xeu)>; + using OSPEED8 = RegisterMask<OSPEEDR, (0x3u << 0x10u)>; + using OSPEED9 = RegisterMask<OSPEEDR, (0x3u << 0x12u)>; + using OSPEED10 = RegisterMask<OSPEEDR, (0x3u << 0x14u)>; + using OSPEED11 = RegisterMask<OSPEEDR, (0x3u << 0x16u)>; + using OSPEED12 = RegisterMask<OSPEEDR, (0x3u << 0x18u)>; + using OSPEED13 = RegisterMask<OSPEEDR, (0x3u << 0x1au)>; + using OSPEED14 = RegisterMask<OSPEEDR, (0x3u << 0x1cu)>; + using OSPEED15 = RegisterMask<OSPEEDR, (0x3u << 0x1eu)>; + }; + struct PUPDR : public MemRegister<uint32_t, 0x5000080c> { + using PUPD0 = RegisterMask<PUPDR, (0x3u << 0x0u)>; + using PUPD1 = RegisterMask<PUPDR, (0x3u << 0x2u)>; + using PUPD2 = RegisterMask<PUPDR, (0x3u << 0x4u)>; + using PUPD3 = RegisterMask<PUPDR, (0x3u << 0x6u)>; + using PUPD4 = RegisterMask<PUPDR, (0x3u << 0x8u)>; + using PUPD5 = RegisterMask<PUPDR, (0x3u << 0xau)>; + using PUPD6 = RegisterMask<PUPDR, (0x3u << 0xcu)>; + using PUPD7 = RegisterMask<PUPDR, (0x3u << 0xeu)>; + using PUPD8 = RegisterMask<PUPDR, (0x3u << 0x10u)>; + using PUPD9 = RegisterMask<PUPDR, (0x3u << 0x12u)>; + using PUPD10 = RegisterMask<PUPDR, (0x3u << 0x14u)>; + using PUPD11 = RegisterMask<PUPDR, (0x3u << 0x16u)>; + using PUPD12 = RegisterMask<PUPDR, (0x3u << 0x18u)>; + using PUPD13 = RegisterMask<PUPDR, (0x3u << 0x1au)>; + using PUPD14 = RegisterMask<PUPDR, (0x3u << 0x1cu)>; + using PUPD15 = RegisterMask<PUPDR, (0x3u << 0x1eu)>; + }; + struct IDR : public MemRegister<uint32_t, 0x50000810> { + using ID0 = RegisterMask<IDR, (0x1u << 0x0u)>; + using ID1 = RegisterMask<IDR, (0x1u << 0x1u)>; + using ID2 = RegisterMask<IDR, (0x1u << 0x2u)>; + using ID3 = RegisterMask<IDR, (0x1u << 0x3u)>; + using ID4 = RegisterMask<IDR, (0x1u << 0x4u)>; + using ID5 = RegisterMask<IDR, (0x1u << 0x5u)>; + using ID6 = RegisterMask<IDR, (0x1u << 0x6u)>; + using ID7 = RegisterMask<IDR, (0x1u << 0x7u)>; + using ID8 = RegisterMask<IDR, (0x1u << 0x8u)>; + using ID9 = RegisterMask<IDR, (0x1u << 0x9u)>; + using ID10 = RegisterMask<IDR, (0x1u << 0xau)>; + using ID11 = RegisterMask<IDR, (0x1u << 0xbu)>; + using ID12 = RegisterMask<IDR, (0x1u << 0xcu)>; + using ID13 = RegisterMask<IDR, (0x1u << 0xdu)>; + using ID14 = RegisterMask<IDR, (0x1u << 0xeu)>; + using ID15 = RegisterMask<IDR, (0x1u << 0xfu)>; + }; + struct ODR : public MemRegister<uint32_t, 0x50000814> { + using OD0 = RegisterMask<ODR, (0x1u << 0x0u)>; + using OD1 = RegisterMask<ODR, (0x1u << 0x1u)>; + using OD2 = RegisterMask<ODR, (0x1u << 0x2u)>; + using OD3 = RegisterMask<ODR, (0x1u << 0x3u)>; + using OD4 = RegisterMask<ODR, (0x1u << 0x4u)>; + using OD5 = RegisterMask<ODR, (0x1u << 0x5u)>; + using OD6 = RegisterMask<ODR, (0x1u << 0x6u)>; + using OD7 = RegisterMask<ODR, (0x1u << 0x7u)>; + using OD8 = RegisterMask<ODR, (0x1u << 0x8u)>; + using OD9 = RegisterMask<ODR, (0x1u << 0x9u)>; + using OD10 = RegisterMask<ODR, (0x1u << 0xau)>; + using OD11 = RegisterMask<ODR, (0x1u << 0xbu)>; + using OD12 = RegisterMask<ODR, (0x1u << 0xcu)>; + using OD13 = RegisterMask<ODR, (0x1u << 0xdu)>; + using OD14 = RegisterMask<ODR, (0x1u << 0xeu)>; + using OD15 = RegisterMask<ODR, (0x1u << 0xfu)>; + }; + struct BSRR : public MemRegister<uint32_t, 0x50000818> { + using BS0 = RegisterMask<BSRR, (0x1u << 0x0u)>; + using BS1 = RegisterMask<BSRR, (0x1u << 0x1u)>; + using BS2 = RegisterMask<BSRR, (0x1u << 0x2u)>; + using BS3 = RegisterMask<BSRR, (0x1u << 0x3u)>; + using BS4 = RegisterMask<BSRR, (0x1u << 0x4u)>; + using BS5 = RegisterMask<BSRR, (0x1u << 0x5u)>; + using BS6 = RegisterMask<BSRR, (0x1u << 0x6u)>; + using BS7 = RegisterMask<BSRR, (0x1u << 0x7u)>; + using BS8 = RegisterMask<BSRR, (0x1u << 0x8u)>; + using BS9 = RegisterMask<BSRR, (0x1u << 0x9u)>; + using BS10 = RegisterMask<BSRR, (0x1u << 0xau)>; + using BS11 = RegisterMask<BSRR, (0x1u << 0xbu)>; + using BS12 = RegisterMask<BSRR, (0x1u << 0xcu)>; + using BS13 = RegisterMask<BSRR, (0x1u << 0xdu)>; + using BS14 = RegisterMask<BSRR, (0x1u << 0xeu)>; + using BS15 = RegisterMask<BSRR, (0x1u << 0xfu)>; + using BR0 = RegisterMask<BSRR, (0x1u << 0x10u)>; + using BR1 = RegisterMask<BSRR, (0x1u << 0x11u)>; + using BR2 = RegisterMask<BSRR, (0x1u << 0x12u)>; + using BR3 = RegisterMask<BSRR, (0x1u << 0x13u)>; + using BR4 = RegisterMask<BSRR, (0x1u << 0x14u)>; + using BR5 = RegisterMask<BSRR, (0x1u << 0x15u)>; + using BR6 = RegisterMask<BSRR, (0x1u << 0x16u)>; + using BR7 = RegisterMask<BSRR, (0x1u << 0x17u)>; + using BR8 = RegisterMask<BSRR, (0x1u << 0x18u)>; + using BR9 = RegisterMask<BSRR, (0x1u << 0x19u)>; + using BR10 = RegisterMask<BSRR, (0x1u << 0x1au)>; + using BR11 = RegisterMask<BSRR, (0x1u << 0x1bu)>; + using BR12 = RegisterMask<BSRR, (0x1u << 0x1cu)>; + using BR13 = RegisterMask<BSRR, (0x1u << 0x1du)>; + using BR14 = RegisterMask<BSRR, (0x1u << 0x1eu)>; + using BR15 = RegisterMask<BSRR, (0x1u << 0x1fu)>; + }; + struct LCKR : public MemRegister<uint32_t, 0x5000081c> { + using LCK0 = RegisterMask<LCKR, (0x1u << 0x0u)>; + using LCK1 = RegisterMask<LCKR, (0x1u << 0x1u)>; + using LCK2 = RegisterMask<LCKR, (0x1u << 0x2u)>; + using LCK3 = RegisterMask<LCKR, (0x1u << 0x3u)>; + using LCK4 = RegisterMask<LCKR, (0x1u << 0x4u)>; + using LCK5 = RegisterMask<LCKR, (0x1u << 0x5u)>; + using LCK6 = RegisterMask<LCKR, (0x1u << 0x6u)>; + using LCK7 = RegisterMask<LCKR, (0x1u << 0x7u)>; + using LCK8 = RegisterMask<LCKR, (0x1u << 0x8u)>; + using LCK9 = RegisterMask<LCKR, (0x1u << 0x9u)>; + using LCK10 = RegisterMask<LCKR, (0x1u << 0xau)>; + using LCK11 = RegisterMask<LCKR, (0x1u << 0xbu)>; + using LCK12 = RegisterMask<LCKR, (0x1u << 0xcu)>; + using LCK13 = RegisterMask<LCKR, (0x1u << 0xdu)>; + using LCK14 = RegisterMask<LCKR, (0x1u << 0xeu)>; + using LCK15 = RegisterMask<LCKR, (0x1u << 0xfu)>; + using LCKK = RegisterMask<LCKR, (0x1u << 0x10u)>; + }; + struct AFRL : public MemRegister<uint32_t, 0x50000820> { + using AFSEL0 = RegisterMask<AFRL, (0xfu << 0x0u)>; + using AFSEL1 = RegisterMask<AFRL, (0xfu << 0x4u)>; + using AFSEL2 = RegisterMask<AFRL, (0xfu << 0x8u)>; + using AFSEL3 = RegisterMask<AFRL, (0xfu << 0xcu)>; + using AFSEL4 = RegisterMask<AFRL, (0xfu << 0x10u)>; + using AFSEL5 = RegisterMask<AFRL, (0xfu << 0x14u)>; + using AFSEL6 = RegisterMask<AFRL, (0xfu << 0x18u)>; + using AFSEL7 = RegisterMask<AFRL, (0xfu << 0x1cu)>; + }; + struct AFRH : public MemRegister<uint32_t, 0x50000824> { + using AFSEL8 = RegisterMask<AFRH, (0xfu << 0x0u)>; + using AFSEL9 = RegisterMask<AFRH, (0xfu << 0x4u)>; + using AFSEL10 = RegisterMask<AFRH, (0xfu << 0x8u)>; + using AFSEL11 = RegisterMask<AFRH, (0xfu << 0xcu)>; + using AFSEL12 = RegisterMask<AFRH, (0xfu << 0x10u)>; + using AFSEL13 = RegisterMask<AFRH, (0xfu << 0x14u)>; + using AFSEL14 = RegisterMask<AFRH, (0xfu << 0x18u)>; + using AFSEL15 = RegisterMask<AFRH, (0xfu << 0x1cu)>; + }; + struct BRR : public MemRegister<uint32_t, 0x50000828> { + using BR0 = RegisterMask<BRR, (0x1u << 0x0u)>; + using BR1 = RegisterMask<BRR, (0x1u << 0x1u)>; + using BR2 = RegisterMask<BRR, (0x1u << 0x2u)>; + using BR3 = RegisterMask<BRR, (0x1u << 0x3u)>; + using BR4 = RegisterMask<BRR, (0x1u << 0x4u)>; + using BR5 = RegisterMask<BRR, (0x1u << 0x5u)>; + using BR6 = RegisterMask<BRR, (0x1u << 0x6u)>; + using BR7 = RegisterMask<BRR, (0x1u << 0x7u)>; + using BR8 = RegisterMask<BRR, (0x1u << 0x8u)>; + using BR9 = RegisterMask<BRR, (0x1u << 0x9u)>; + using BR10 = RegisterMask<BRR, (0x1u << 0xau)>; + using BR11 = RegisterMask<BRR, (0x1u << 0xbu)>; + using BR12 = RegisterMask<BRR, (0x1u << 0xcu)>; + using BR13 = RegisterMask<BRR, (0x1u << 0xdu)>; + using BR14 = RegisterMask<BRR, (0x1u << 0xeu)>; + using BR15 = RegisterMask<BRR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFRL, AFRH, BRR>; + } + namespace GPIOD { + struct MODER : public MemRegister<uint32_t, 0x50000c00> { + using MODE0 = RegisterMask<MODER, (0x3u << 0x0u)>; + using MODE1 = RegisterMask<MODER, (0x3u << 0x2u)>; + using MODE2 = RegisterMask<MODER, (0x3u << 0x4u)>; + using MODE3 = RegisterMask<MODER, (0x3u << 0x6u)>; + using MODE4 = RegisterMask<MODER, (0x3u << 0x8u)>; + using MODE5 = RegisterMask<MODER, (0x3u << 0xau)>; + using MODE6 = RegisterMask<MODER, (0x3u << 0xcu)>; + using MODE7 = RegisterMask<MODER, (0x3u << 0xeu)>; + using MODE8 = RegisterMask<MODER, (0x3u << 0x10u)>; + using MODE9 = RegisterMask<MODER, (0x3u << 0x12u)>; + using MODE10 = RegisterMask<MODER, (0x3u << 0x14u)>; + using MODE11 = RegisterMask<MODER, (0x3u << 0x16u)>; + using MODE12 = RegisterMask<MODER, (0x3u << 0x18u)>; + using MODE13 = RegisterMask<MODER, (0x3u << 0x1au)>; + using MODE14 = RegisterMask<MODER, (0x3u << 0x1cu)>; + using MODE15 = RegisterMask<MODER, (0x3u << 0x1eu)>; + }; + struct OTYPER : public MemRegister<uint32_t, 0x50000c04> { + using OT0 = RegisterMask<OTYPER, (0x1u << 0x0u)>; + using OT1 = RegisterMask<OTYPER, (0x1u << 0x1u)>; + using OT2 = RegisterMask<OTYPER, (0x1u << 0x2u)>; + using OT3 = RegisterMask<OTYPER, (0x1u << 0x3u)>; + using OT4 = RegisterMask<OTYPER, (0x1u << 0x4u)>; + using OT5 = RegisterMask<OTYPER, (0x1u << 0x5u)>; + using OT6 = RegisterMask<OTYPER, (0x1u << 0x6u)>; + using OT7 = RegisterMask<OTYPER, (0x1u << 0x7u)>; + using OT8 = RegisterMask<OTYPER, (0x1u << 0x8u)>; + using OT9 = RegisterMask<OTYPER, (0x1u << 0x9u)>; + using OT10 = RegisterMask<OTYPER, (0x1u << 0xau)>; + using OT11 = RegisterMask<OTYPER, (0x1u << 0xbu)>; + using OT12 = RegisterMask<OTYPER, (0x1u << 0xcu)>; + using OT13 = RegisterMask<OTYPER, (0x1u << 0xdu)>; + using OT14 = RegisterMask<OTYPER, (0x1u << 0xeu)>; + using OT15 = RegisterMask<OTYPER, (0x1u << 0xfu)>; + }; + struct OSPEEDR : public MemRegister<uint32_t, 0x50000c08> { + using OSPEED0 = RegisterMask<OSPEEDR, (0x3u << 0x0u)>; + using OSPEED1 = RegisterMask<OSPEEDR, (0x3u << 0x2u)>; + using OSPEED2 = RegisterMask<OSPEEDR, (0x3u << 0x4u)>; + using OSPEED3 = RegisterMask<OSPEEDR, (0x3u << 0x6u)>; + using OSPEED4 = RegisterMask<OSPEEDR, (0x3u << 0x8u)>; + using OSPEED5 = RegisterMask<OSPEEDR, (0x3u << 0xau)>; + using OSPEED6 = RegisterMask<OSPEEDR, (0x3u << 0xcu)>; + using OSPEED7 = RegisterMask<OSPEEDR, (0x3u << 0xeu)>; + using OSPEED8 = RegisterMask<OSPEEDR, (0x3u << 0x10u)>; + using OSPEED9 = RegisterMask<OSPEEDR, (0x3u << 0x12u)>; + using OSPEED10 = RegisterMask<OSPEEDR, (0x3u << 0x14u)>; + using OSPEED11 = RegisterMask<OSPEEDR, (0x3u << 0x16u)>; + using OSPEED12 = RegisterMask<OSPEEDR, (0x3u << 0x18u)>; + using OSPEED13 = RegisterMask<OSPEEDR, (0x3u << 0x1au)>; + using OSPEED14 = RegisterMask<OSPEEDR, (0x3u << 0x1cu)>; + using OSPEED15 = RegisterMask<OSPEEDR, (0x3u << 0x1eu)>; + }; + struct PUPDR : public MemRegister<uint32_t, 0x50000c0c> { + using PUPD0 = RegisterMask<PUPDR, (0x3u << 0x0u)>; + using PUPD1 = RegisterMask<PUPDR, (0x3u << 0x2u)>; + using PUPD2 = RegisterMask<PUPDR, (0x3u << 0x4u)>; + using PUPD3 = RegisterMask<PUPDR, (0x3u << 0x6u)>; + using PUPD4 = RegisterMask<PUPDR, (0x3u << 0x8u)>; + using PUPD5 = RegisterMask<PUPDR, (0x3u << 0xau)>; + using PUPD6 = RegisterMask<PUPDR, (0x3u << 0xcu)>; + using PUPD7 = RegisterMask<PUPDR, (0x3u << 0xeu)>; + using PUPD8 = RegisterMask<PUPDR, (0x3u << 0x10u)>; + using PUPD9 = RegisterMask<PUPDR, (0x3u << 0x12u)>; + using PUPD10 = RegisterMask<PUPDR, (0x3u << 0x14u)>; + using PUPD11 = RegisterMask<PUPDR, (0x3u << 0x16u)>; + using PUPD12 = RegisterMask<PUPDR, (0x3u << 0x18u)>; + using PUPD13 = RegisterMask<PUPDR, (0x3u << 0x1au)>; + using PUPD14 = RegisterMask<PUPDR, (0x3u << 0x1cu)>; + using PUPD15 = RegisterMask<PUPDR, (0x3u << 0x1eu)>; + }; + struct IDR : public MemRegister<uint32_t, 0x50000c10> { + using ID0 = RegisterMask<IDR, (0x1u << 0x0u)>; + using ID1 = RegisterMask<IDR, (0x1u << 0x1u)>; + using ID2 = RegisterMask<IDR, (0x1u << 0x2u)>; + using ID3 = RegisterMask<IDR, (0x1u << 0x3u)>; + using ID4 = RegisterMask<IDR, (0x1u << 0x4u)>; + using ID5 = RegisterMask<IDR, (0x1u << 0x5u)>; + using ID6 = RegisterMask<IDR, (0x1u << 0x6u)>; + using ID7 = RegisterMask<IDR, (0x1u << 0x7u)>; + using ID8 = RegisterMask<IDR, (0x1u << 0x8u)>; + using ID9 = RegisterMask<IDR, (0x1u << 0x9u)>; + using ID10 = RegisterMask<IDR, (0x1u << 0xau)>; + using ID11 = RegisterMask<IDR, (0x1u << 0xbu)>; + using ID12 = RegisterMask<IDR, (0x1u << 0xcu)>; + using ID13 = RegisterMask<IDR, (0x1u << 0xdu)>; + using ID14 = RegisterMask<IDR, (0x1u << 0xeu)>; + using ID15 = RegisterMask<IDR, (0x1u << 0xfu)>; + }; + struct ODR : public MemRegister<uint32_t, 0x50000c14> { + using OD0 = RegisterMask<ODR, (0x1u << 0x0u)>; + using OD1 = RegisterMask<ODR, (0x1u << 0x1u)>; + using OD2 = RegisterMask<ODR, (0x1u << 0x2u)>; + using OD3 = RegisterMask<ODR, (0x1u << 0x3u)>; + using OD4 = RegisterMask<ODR, (0x1u << 0x4u)>; + using OD5 = RegisterMask<ODR, (0x1u << 0x5u)>; + using OD6 = RegisterMask<ODR, (0x1u << 0x6u)>; + using OD7 = RegisterMask<ODR, (0x1u << 0x7u)>; + using OD8 = RegisterMask<ODR, (0x1u << 0x8u)>; + using OD9 = RegisterMask<ODR, (0x1u << 0x9u)>; + using OD10 = RegisterMask<ODR, (0x1u << 0xau)>; + using OD11 = RegisterMask<ODR, (0x1u << 0xbu)>; + using OD12 = RegisterMask<ODR, (0x1u << 0xcu)>; + using OD13 = RegisterMask<ODR, (0x1u << 0xdu)>; + using OD14 = RegisterMask<ODR, (0x1u << 0xeu)>; + using OD15 = RegisterMask<ODR, (0x1u << 0xfu)>; + }; + struct BSRR : public MemRegister<uint32_t, 0x50000c18> { + using BS0 = RegisterMask<BSRR, (0x1u << 0x0u)>; + using BS1 = RegisterMask<BSRR, (0x1u << 0x1u)>; + using BS2 = RegisterMask<BSRR, (0x1u << 0x2u)>; + using BS3 = RegisterMask<BSRR, (0x1u << 0x3u)>; + using BS4 = RegisterMask<BSRR, (0x1u << 0x4u)>; + using BS5 = RegisterMask<BSRR, (0x1u << 0x5u)>; + using BS6 = RegisterMask<BSRR, (0x1u << 0x6u)>; + using BS7 = RegisterMask<BSRR, (0x1u << 0x7u)>; + using BS8 = RegisterMask<BSRR, (0x1u << 0x8u)>; + using BS9 = RegisterMask<BSRR, (0x1u << 0x9u)>; + using BS10 = RegisterMask<BSRR, (0x1u << 0xau)>; + using BS11 = RegisterMask<BSRR, (0x1u << 0xbu)>; + using BS12 = RegisterMask<BSRR, (0x1u << 0xcu)>; + using BS13 = RegisterMask<BSRR, (0x1u << 0xdu)>; + using BS14 = RegisterMask<BSRR, (0x1u << 0xeu)>; + using BS15 = RegisterMask<BSRR, (0x1u << 0xfu)>; + using BR0 = RegisterMask<BSRR, (0x1u << 0x10u)>; + using BR1 = RegisterMask<BSRR, (0x1u << 0x11u)>; + using BR2 = RegisterMask<BSRR, (0x1u << 0x12u)>; + using BR3 = RegisterMask<BSRR, (0x1u << 0x13u)>; + using BR4 = RegisterMask<BSRR, (0x1u << 0x14u)>; + using BR5 = RegisterMask<BSRR, (0x1u << 0x15u)>; + using BR6 = RegisterMask<BSRR, (0x1u << 0x16u)>; + using BR7 = RegisterMask<BSRR, (0x1u << 0x17u)>; + using BR8 = RegisterMask<BSRR, (0x1u << 0x18u)>; + using BR9 = RegisterMask<BSRR, (0x1u << 0x19u)>; + using BR10 = RegisterMask<BSRR, (0x1u << 0x1au)>; + using BR11 = RegisterMask<BSRR, (0x1u << 0x1bu)>; + using BR12 = RegisterMask<BSRR, (0x1u << 0x1cu)>; + using BR13 = RegisterMask<BSRR, (0x1u << 0x1du)>; + using BR14 = RegisterMask<BSRR, (0x1u << 0x1eu)>; + using BR15 = RegisterMask<BSRR, (0x1u << 0x1fu)>; + }; + struct LCKR : public MemRegister<uint32_t, 0x50000c1c> { + using LCK0 = RegisterMask<LCKR, (0x1u << 0x0u)>; + using LCK1 = RegisterMask<LCKR, (0x1u << 0x1u)>; + using LCK2 = RegisterMask<LCKR, (0x1u << 0x2u)>; + using LCK3 = RegisterMask<LCKR, (0x1u << 0x3u)>; + using LCK4 = RegisterMask<LCKR, (0x1u << 0x4u)>; + using LCK5 = RegisterMask<LCKR, (0x1u << 0x5u)>; + using LCK6 = RegisterMask<LCKR, (0x1u << 0x6u)>; + using LCK7 = RegisterMask<LCKR, (0x1u << 0x7u)>; + using LCK8 = RegisterMask<LCKR, (0x1u << 0x8u)>; + using LCK9 = RegisterMask<LCKR, (0x1u << 0x9u)>; + using LCK10 = RegisterMask<LCKR, (0x1u << 0xau)>; + using LCK11 = RegisterMask<LCKR, (0x1u << 0xbu)>; + using LCK12 = RegisterMask<LCKR, (0x1u << 0xcu)>; + using LCK13 = RegisterMask<LCKR, (0x1u << 0xdu)>; + using LCK14 = RegisterMask<LCKR, (0x1u << 0xeu)>; + using LCK15 = RegisterMask<LCKR, (0x1u << 0xfu)>; + using LCKK = RegisterMask<LCKR, (0x1u << 0x10u)>; + }; + struct AFRL : public MemRegister<uint32_t, 0x50000c20> { + using AFSEL0 = RegisterMask<AFRL, (0xfu << 0x0u)>; + using AFSEL1 = RegisterMask<AFRL, (0xfu << 0x4u)>; + using AFSEL2 = RegisterMask<AFRL, (0xfu << 0x8u)>; + using AFSEL3 = RegisterMask<AFRL, (0xfu << 0xcu)>; + using AFSEL4 = RegisterMask<AFRL, (0xfu << 0x10u)>; + using AFSEL5 = RegisterMask<AFRL, (0xfu << 0x14u)>; + using AFSEL6 = RegisterMask<AFRL, (0xfu << 0x18u)>; + using AFSEL7 = RegisterMask<AFRL, (0xfu << 0x1cu)>; + }; + struct AFRH : public MemRegister<uint32_t, 0x50000c24> { + using AFSEL8 = RegisterMask<AFRH, (0xfu << 0x0u)>; + using AFSEL9 = RegisterMask<AFRH, (0xfu << 0x4u)>; + using AFSEL10 = RegisterMask<AFRH, (0xfu << 0x8u)>; + using AFSEL11 = RegisterMask<AFRH, (0xfu << 0xcu)>; + using AFSEL12 = RegisterMask<AFRH, (0xfu << 0x10u)>; + using AFSEL13 = RegisterMask<AFRH, (0xfu << 0x14u)>; + using AFSEL14 = RegisterMask<AFRH, (0xfu << 0x18u)>; + using AFSEL15 = RegisterMask<AFRH, (0xfu << 0x1cu)>; + }; + struct BRR : public MemRegister<uint32_t, 0x50000c28> { + using BR0 = RegisterMask<BRR, (0x1u << 0x0u)>; + using BR1 = RegisterMask<BRR, (0x1u << 0x1u)>; + using BR2 = RegisterMask<BRR, (0x1u << 0x2u)>; + using BR3 = RegisterMask<BRR, (0x1u << 0x3u)>; + using BR4 = RegisterMask<BRR, (0x1u << 0x4u)>; + using BR5 = RegisterMask<BRR, (0x1u << 0x5u)>; + using BR6 = RegisterMask<BRR, (0x1u << 0x6u)>; + using BR7 = RegisterMask<BRR, (0x1u << 0x7u)>; + using BR8 = RegisterMask<BRR, (0x1u << 0x8u)>; + using BR9 = RegisterMask<BRR, (0x1u << 0x9u)>; + using BR10 = RegisterMask<BRR, (0x1u << 0xau)>; + using BR11 = RegisterMask<BRR, (0x1u << 0xbu)>; + using BR12 = RegisterMask<BRR, (0x1u << 0xcu)>; + using BR13 = RegisterMask<BRR, (0x1u << 0xdu)>; + using BR14 = RegisterMask<BRR, (0x1u << 0xeu)>; + using BR15 = RegisterMask<BRR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFRL, AFRH, BRR>; + } + namespace GPIOE { + struct MODER : public MemRegister<uint32_t, 0x50001000> { + using MODE0 = RegisterMask<MODER, (0x3u << 0x0u)>; + using MODE1 = RegisterMask<MODER, (0x3u << 0x2u)>; + using MODE2 = RegisterMask<MODER, (0x3u << 0x4u)>; + using MODE3 = RegisterMask<MODER, (0x3u << 0x6u)>; + using MODE4 = RegisterMask<MODER, (0x3u << 0x8u)>; + using MODE5 = RegisterMask<MODER, (0x3u << 0xau)>; + using MODE6 = RegisterMask<MODER, (0x3u << 0xcu)>; + using MODE7 = RegisterMask<MODER, (0x3u << 0xeu)>; + using MODE8 = RegisterMask<MODER, (0x3u << 0x10u)>; + using MODE9 = RegisterMask<MODER, (0x3u << 0x12u)>; + using MODE10 = RegisterMask<MODER, (0x3u << 0x14u)>; + using MODE11 = RegisterMask<MODER, (0x3u << 0x16u)>; + using MODE12 = RegisterMask<MODER, (0x3u << 0x18u)>; + using MODE13 = RegisterMask<MODER, (0x3u << 0x1au)>; + using MODE14 = RegisterMask<MODER, (0x3u << 0x1cu)>; + using MODE15 = RegisterMask<MODER, (0x3u << 0x1eu)>; + }; + struct OTYPER : public MemRegister<uint32_t, 0x50001004> { + using OT0 = RegisterMask<OTYPER, (0x1u << 0x0u)>; + using OT1 = RegisterMask<OTYPER, (0x1u << 0x1u)>; + using OT2 = RegisterMask<OTYPER, (0x1u << 0x2u)>; + using OT3 = RegisterMask<OTYPER, (0x1u << 0x3u)>; + using OT4 = RegisterMask<OTYPER, (0x1u << 0x4u)>; + using OT5 = RegisterMask<OTYPER, (0x1u << 0x5u)>; + using OT6 = RegisterMask<OTYPER, (0x1u << 0x6u)>; + using OT7 = RegisterMask<OTYPER, (0x1u << 0x7u)>; + using OT8 = RegisterMask<OTYPER, (0x1u << 0x8u)>; + using OT9 = RegisterMask<OTYPER, (0x1u << 0x9u)>; + using OT10 = RegisterMask<OTYPER, (0x1u << 0xau)>; + using OT11 = RegisterMask<OTYPER, (0x1u << 0xbu)>; + using OT12 = RegisterMask<OTYPER, (0x1u << 0xcu)>; + using OT13 = RegisterMask<OTYPER, (0x1u << 0xdu)>; + using OT14 = RegisterMask<OTYPER, (0x1u << 0xeu)>; + using OT15 = RegisterMask<OTYPER, (0x1u << 0xfu)>; + }; + struct OSPEEDR : public MemRegister<uint32_t, 0x50001008> { + using OSPEED0 = RegisterMask<OSPEEDR, (0x3u << 0x0u)>; + using OSPEED1 = RegisterMask<OSPEEDR, (0x3u << 0x2u)>; + using OSPEED2 = RegisterMask<OSPEEDR, (0x3u << 0x4u)>; + using OSPEED3 = RegisterMask<OSPEEDR, (0x3u << 0x6u)>; + using OSPEED4 = RegisterMask<OSPEEDR, (0x3u << 0x8u)>; + using OSPEED5 = RegisterMask<OSPEEDR, (0x3u << 0xau)>; + using OSPEED6 = RegisterMask<OSPEEDR, (0x3u << 0xcu)>; + using OSPEED7 = RegisterMask<OSPEEDR, (0x3u << 0xeu)>; + using OSPEED8 = RegisterMask<OSPEEDR, (0x3u << 0x10u)>; + using OSPEED9 = RegisterMask<OSPEEDR, (0x3u << 0x12u)>; + using OSPEED10 = RegisterMask<OSPEEDR, (0x3u << 0x14u)>; + using OSPEED11 = RegisterMask<OSPEEDR, (0x3u << 0x16u)>; + using OSPEED12 = RegisterMask<OSPEEDR, (0x3u << 0x18u)>; + using OSPEED13 = RegisterMask<OSPEEDR, (0x3u << 0x1au)>; + using OSPEED14 = RegisterMask<OSPEEDR, (0x3u << 0x1cu)>; + using OSPEED15 = RegisterMask<OSPEEDR, (0x3u << 0x1eu)>; + }; + struct PUPDR : public MemRegister<uint32_t, 0x5000100c> { + using PUPD0 = RegisterMask<PUPDR, (0x3u << 0x0u)>; + using PUPD1 = RegisterMask<PUPDR, (0x3u << 0x2u)>; + using PUPD2 = RegisterMask<PUPDR, (0x3u << 0x4u)>; + using PUPD3 = RegisterMask<PUPDR, (0x3u << 0x6u)>; + using PUPD4 = RegisterMask<PUPDR, (0x3u << 0x8u)>; + using PUPD5 = RegisterMask<PUPDR, (0x3u << 0xau)>; + using PUPD6 = RegisterMask<PUPDR, (0x3u << 0xcu)>; + using PUPD7 = RegisterMask<PUPDR, (0x3u << 0xeu)>; + using PUPD8 = RegisterMask<PUPDR, (0x3u << 0x10u)>; + using PUPD9 = RegisterMask<PUPDR, (0x3u << 0x12u)>; + using PUPD10 = RegisterMask<PUPDR, (0x3u << 0x14u)>; + using PUPD11 = RegisterMask<PUPDR, (0x3u << 0x16u)>; + using PUPD12 = RegisterMask<PUPDR, (0x3u << 0x18u)>; + using PUPD13 = RegisterMask<PUPDR, (0x3u << 0x1au)>; + using PUPD14 = RegisterMask<PUPDR, (0x3u << 0x1cu)>; + using PUPD15 = RegisterMask<PUPDR, (0x3u << 0x1eu)>; + }; + struct IDR : public MemRegister<uint32_t, 0x50001010> { + using ID0 = RegisterMask<IDR, (0x1u << 0x0u)>; + using ID1 = RegisterMask<IDR, (0x1u << 0x1u)>; + using ID2 = RegisterMask<IDR, (0x1u << 0x2u)>; + using ID3 = RegisterMask<IDR, (0x1u << 0x3u)>; + using ID4 = RegisterMask<IDR, (0x1u << 0x4u)>; + using ID5 = RegisterMask<IDR, (0x1u << 0x5u)>; + using ID6 = RegisterMask<IDR, (0x1u << 0x6u)>; + using ID7 = RegisterMask<IDR, (0x1u << 0x7u)>; + using ID8 = RegisterMask<IDR, (0x1u << 0x8u)>; + using ID9 = RegisterMask<IDR, (0x1u << 0x9u)>; + using ID10 = RegisterMask<IDR, (0x1u << 0xau)>; + using ID11 = RegisterMask<IDR, (0x1u << 0xbu)>; + using ID12 = RegisterMask<IDR, (0x1u << 0xcu)>; + using ID13 = RegisterMask<IDR, (0x1u << 0xdu)>; + using ID14 = RegisterMask<IDR, (0x1u << 0xeu)>; + using ID15 = RegisterMask<IDR, (0x1u << 0xfu)>; + }; + struct ODR : public MemRegister<uint32_t, 0x50001014> { + using OD0 = RegisterMask<ODR, (0x1u << 0x0u)>; + using OD1 = RegisterMask<ODR, (0x1u << 0x1u)>; + using OD2 = RegisterMask<ODR, (0x1u << 0x2u)>; + using OD3 = RegisterMask<ODR, (0x1u << 0x3u)>; + using OD4 = RegisterMask<ODR, (0x1u << 0x4u)>; + using OD5 = RegisterMask<ODR, (0x1u << 0x5u)>; + using OD6 = RegisterMask<ODR, (0x1u << 0x6u)>; + using OD7 = RegisterMask<ODR, (0x1u << 0x7u)>; + using OD8 = RegisterMask<ODR, (0x1u << 0x8u)>; + using OD9 = RegisterMask<ODR, (0x1u << 0x9u)>; + using OD10 = RegisterMask<ODR, (0x1u << 0xau)>; + using OD11 = RegisterMask<ODR, (0x1u << 0xbu)>; + using OD12 = RegisterMask<ODR, (0x1u << 0xcu)>; + using OD13 = RegisterMask<ODR, (0x1u << 0xdu)>; + using OD14 = RegisterMask<ODR, (0x1u << 0xeu)>; + using OD15 = RegisterMask<ODR, (0x1u << 0xfu)>; + }; + struct BSRR : public MemRegister<uint32_t, 0x50001018> { + using BS0 = RegisterMask<BSRR, (0x1u << 0x0u)>; + using BS1 = RegisterMask<BSRR, (0x1u << 0x1u)>; + using BS2 = RegisterMask<BSRR, (0x1u << 0x2u)>; + using BS3 = RegisterMask<BSRR, (0x1u << 0x3u)>; + using BS4 = RegisterMask<BSRR, (0x1u << 0x4u)>; + using BS5 = RegisterMask<BSRR, (0x1u << 0x5u)>; + using BS6 = RegisterMask<BSRR, (0x1u << 0x6u)>; + using BS7 = RegisterMask<BSRR, (0x1u << 0x7u)>; + using BS8 = RegisterMask<BSRR, (0x1u << 0x8u)>; + using BS9 = RegisterMask<BSRR, (0x1u << 0x9u)>; + using BS10 = RegisterMask<BSRR, (0x1u << 0xau)>; + using BS11 = RegisterMask<BSRR, (0x1u << 0xbu)>; + using BS12 = RegisterMask<BSRR, (0x1u << 0xcu)>; + using BS13 = RegisterMask<BSRR, (0x1u << 0xdu)>; + using BS14 = RegisterMask<BSRR, (0x1u << 0xeu)>; + using BS15 = RegisterMask<BSRR, (0x1u << 0xfu)>; + using BR0 = RegisterMask<BSRR, (0x1u << 0x10u)>; + using BR1 = RegisterMask<BSRR, (0x1u << 0x11u)>; + using BR2 = RegisterMask<BSRR, (0x1u << 0x12u)>; + using BR3 = RegisterMask<BSRR, (0x1u << 0x13u)>; + using BR4 = RegisterMask<BSRR, (0x1u << 0x14u)>; + using BR5 = RegisterMask<BSRR, (0x1u << 0x15u)>; + using BR6 = RegisterMask<BSRR, (0x1u << 0x16u)>; + using BR7 = RegisterMask<BSRR, (0x1u << 0x17u)>; + using BR8 = RegisterMask<BSRR, (0x1u << 0x18u)>; + using BR9 = RegisterMask<BSRR, (0x1u << 0x19u)>; + using BR10 = RegisterMask<BSRR, (0x1u << 0x1au)>; + using BR11 = RegisterMask<BSRR, (0x1u << 0x1bu)>; + using BR12 = RegisterMask<BSRR, (0x1u << 0x1cu)>; + using BR13 = RegisterMask<BSRR, (0x1u << 0x1du)>; + using BR14 = RegisterMask<BSRR, (0x1u << 0x1eu)>; + using BR15 = RegisterMask<BSRR, (0x1u << 0x1fu)>; + }; + struct LCKR : public MemRegister<uint32_t, 0x5000101c> { + using LCK0 = RegisterMask<LCKR, (0x1u << 0x0u)>; + using LCK1 = RegisterMask<LCKR, (0x1u << 0x1u)>; + using LCK2 = RegisterMask<LCKR, (0x1u << 0x2u)>; + using LCK3 = RegisterMask<LCKR, (0x1u << 0x3u)>; + using LCK4 = RegisterMask<LCKR, (0x1u << 0x4u)>; + using LCK5 = RegisterMask<LCKR, (0x1u << 0x5u)>; + using LCK6 = RegisterMask<LCKR, (0x1u << 0x6u)>; + using LCK7 = RegisterMask<LCKR, (0x1u << 0x7u)>; + using LCK8 = RegisterMask<LCKR, (0x1u << 0x8u)>; + using LCK9 = RegisterMask<LCKR, (0x1u << 0x9u)>; + using LCK10 = RegisterMask<LCKR, (0x1u << 0xau)>; + using LCK11 = RegisterMask<LCKR, (0x1u << 0xbu)>; + using LCK12 = RegisterMask<LCKR, (0x1u << 0xcu)>; + using LCK13 = RegisterMask<LCKR, (0x1u << 0xdu)>; + using LCK14 = RegisterMask<LCKR, (0x1u << 0xeu)>; + using LCK15 = RegisterMask<LCKR, (0x1u << 0xfu)>; + using LCKK = RegisterMask<LCKR, (0x1u << 0x10u)>; + }; + struct AFRL : public MemRegister<uint32_t, 0x50001020> { + using AFSEL0 = RegisterMask<AFRL, (0xfu << 0x0u)>; + using AFSEL1 = RegisterMask<AFRL, (0xfu << 0x4u)>; + using AFSEL2 = RegisterMask<AFRL, (0xfu << 0x8u)>; + using AFSEL3 = RegisterMask<AFRL, (0xfu << 0xcu)>; + using AFSEL4 = RegisterMask<AFRL, (0xfu << 0x10u)>; + using AFSEL5 = RegisterMask<AFRL, (0xfu << 0x14u)>; + using AFSEL6 = RegisterMask<AFRL, (0xfu << 0x18u)>; + using AFSEL7 = RegisterMask<AFRL, (0xfu << 0x1cu)>; + }; + struct AFRH : public MemRegister<uint32_t, 0x50001024> { + using AFSEL8 = RegisterMask<AFRH, (0xfu << 0x0u)>; + using AFSEL9 = RegisterMask<AFRH, (0xfu << 0x4u)>; + using AFSEL10 = RegisterMask<AFRH, (0xfu << 0x8u)>; + using AFSEL11 = RegisterMask<AFRH, (0xfu << 0xcu)>; + using AFSEL12 = RegisterMask<AFRH, (0xfu << 0x10u)>; + using AFSEL13 = RegisterMask<AFRH, (0xfu << 0x14u)>; + using AFSEL14 = RegisterMask<AFRH, (0xfu << 0x18u)>; + using AFSEL15 = RegisterMask<AFRH, (0xfu << 0x1cu)>; + }; + struct BRR : public MemRegister<uint32_t, 0x50001028> { + using BR0 = RegisterMask<BRR, (0x1u << 0x0u)>; + using BR1 = RegisterMask<BRR, (0x1u << 0x1u)>; + using BR2 = RegisterMask<BRR, (0x1u << 0x2u)>; + using BR3 = RegisterMask<BRR, (0x1u << 0x3u)>; + using BR4 = RegisterMask<BRR, (0x1u << 0x4u)>; + using BR5 = RegisterMask<BRR, (0x1u << 0x5u)>; + using BR6 = RegisterMask<BRR, (0x1u << 0x6u)>; + using BR7 = RegisterMask<BRR, (0x1u << 0x7u)>; + using BR8 = RegisterMask<BRR, (0x1u << 0x8u)>; + using BR9 = RegisterMask<BRR, (0x1u << 0x9u)>; + using BR10 = RegisterMask<BRR, (0x1u << 0xau)>; + using BR11 = RegisterMask<BRR, (0x1u << 0xbu)>; + using BR12 = RegisterMask<BRR, (0x1u << 0xcu)>; + using BR13 = RegisterMask<BRR, (0x1u << 0xdu)>; + using BR14 = RegisterMask<BRR, (0x1u << 0xeu)>; + using BR15 = RegisterMask<BRR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFRL, AFRH, BRR>; + } + namespace GPIOF { + struct MODER : public MemRegister<uint32_t, 0x50001400> { + using MODE0 = RegisterMask<MODER, (0x3u << 0x0u)>; + using MODE1 = RegisterMask<MODER, (0x3u << 0x2u)>; + using MODE2 = RegisterMask<MODER, (0x3u << 0x4u)>; + using MODE3 = RegisterMask<MODER, (0x3u << 0x6u)>; + using MODE4 = RegisterMask<MODER, (0x3u << 0x8u)>; + using MODE5 = RegisterMask<MODER, (0x3u << 0xau)>; + using MODE6 = RegisterMask<MODER, (0x3u << 0xcu)>; + using MODE7 = RegisterMask<MODER, (0x3u << 0xeu)>; + using MODE8 = RegisterMask<MODER, (0x3u << 0x10u)>; + using MODE9 = RegisterMask<MODER, (0x3u << 0x12u)>; + using MODE10 = RegisterMask<MODER, (0x3u << 0x14u)>; + using MODE11 = RegisterMask<MODER, (0x3u << 0x16u)>; + using MODE12 = RegisterMask<MODER, (0x3u << 0x18u)>; + using MODE13 = RegisterMask<MODER, (0x3u << 0x1au)>; + using MODE14 = RegisterMask<MODER, (0x3u << 0x1cu)>; + using MODE15 = RegisterMask<MODER, (0x3u << 0x1eu)>; + }; + struct OTYPER : public MemRegister<uint32_t, 0x50001404> { + using OT0 = RegisterMask<OTYPER, (0x1u << 0x0u)>; + using OT1 = RegisterMask<OTYPER, (0x1u << 0x1u)>; + using OT2 = RegisterMask<OTYPER, (0x1u << 0x2u)>; + using OT3 = RegisterMask<OTYPER, (0x1u << 0x3u)>; + using OT4 = RegisterMask<OTYPER, (0x1u << 0x4u)>; + using OT5 = RegisterMask<OTYPER, (0x1u << 0x5u)>; + using OT6 = RegisterMask<OTYPER, (0x1u << 0x6u)>; + using OT7 = RegisterMask<OTYPER, (0x1u << 0x7u)>; + using OT8 = RegisterMask<OTYPER, (0x1u << 0x8u)>; + using OT9 = RegisterMask<OTYPER, (0x1u << 0x9u)>; + using OT10 = RegisterMask<OTYPER, (0x1u << 0xau)>; + using OT11 = RegisterMask<OTYPER, (0x1u << 0xbu)>; + using OT12 = RegisterMask<OTYPER, (0x1u << 0xcu)>; + using OT13 = RegisterMask<OTYPER, (0x1u << 0xdu)>; + using OT14 = RegisterMask<OTYPER, (0x1u << 0xeu)>; + using OT15 = RegisterMask<OTYPER, (0x1u << 0xfu)>; + }; + struct OSPEEDR : public MemRegister<uint32_t, 0x50001408> { + using OSPEED0 = RegisterMask<OSPEEDR, (0x3u << 0x0u)>; + using OSPEED1 = RegisterMask<OSPEEDR, (0x3u << 0x2u)>; + using OSPEED2 = RegisterMask<OSPEEDR, (0x3u << 0x4u)>; + using OSPEED3 = RegisterMask<OSPEEDR, (0x3u << 0x6u)>; + using OSPEED4 = RegisterMask<OSPEEDR, (0x3u << 0x8u)>; + using OSPEED5 = RegisterMask<OSPEEDR, (0x3u << 0xau)>; + using OSPEED6 = RegisterMask<OSPEEDR, (0x3u << 0xcu)>; + using OSPEED7 = RegisterMask<OSPEEDR, (0x3u << 0xeu)>; + using OSPEED8 = RegisterMask<OSPEEDR, (0x3u << 0x10u)>; + using OSPEED9 = RegisterMask<OSPEEDR, (0x3u << 0x12u)>; + using OSPEED10 = RegisterMask<OSPEEDR, (0x3u << 0x14u)>; + using OSPEED11 = RegisterMask<OSPEEDR, (0x3u << 0x16u)>; + using OSPEED12 = RegisterMask<OSPEEDR, (0x3u << 0x18u)>; + using OSPEED13 = RegisterMask<OSPEEDR, (0x3u << 0x1au)>; + using OSPEED14 = RegisterMask<OSPEEDR, (0x3u << 0x1cu)>; + using OSPEED15 = RegisterMask<OSPEEDR, (0x3u << 0x1eu)>; + }; + struct PUPDR : public MemRegister<uint32_t, 0x5000140c> { + using PUPD0 = RegisterMask<PUPDR, (0x3u << 0x0u)>; + using PUPD1 = RegisterMask<PUPDR, (0x3u << 0x2u)>; + using PUPD2 = RegisterMask<PUPDR, (0x3u << 0x4u)>; + using PUPD3 = RegisterMask<PUPDR, (0x3u << 0x6u)>; + using PUPD4 = RegisterMask<PUPDR, (0x3u << 0x8u)>; + using PUPD5 = RegisterMask<PUPDR, (0x3u << 0xau)>; + using PUPD6 = RegisterMask<PUPDR, (0x3u << 0xcu)>; + using PUPD7 = RegisterMask<PUPDR, (0x3u << 0xeu)>; + using PUPD8 = RegisterMask<PUPDR, (0x3u << 0x10u)>; + using PUPD9 = RegisterMask<PUPDR, (0x3u << 0x12u)>; + using PUPD10 = RegisterMask<PUPDR, (0x3u << 0x14u)>; + using PUPD11 = RegisterMask<PUPDR, (0x3u << 0x16u)>; + using PUPD12 = RegisterMask<PUPDR, (0x3u << 0x18u)>; + using PUPD13 = RegisterMask<PUPDR, (0x3u << 0x1au)>; + using PUPD14 = RegisterMask<PUPDR, (0x3u << 0x1cu)>; + using PUPD15 = RegisterMask<PUPDR, (0x3u << 0x1eu)>; + }; + struct IDR : public MemRegister<uint32_t, 0x50001410> { + using ID0 = RegisterMask<IDR, (0x1u << 0x0u)>; + using ID1 = RegisterMask<IDR, (0x1u << 0x1u)>; + using ID2 = RegisterMask<IDR, (0x1u << 0x2u)>; + using ID3 = RegisterMask<IDR, (0x1u << 0x3u)>; + using ID4 = RegisterMask<IDR, (0x1u << 0x4u)>; + using ID5 = RegisterMask<IDR, (0x1u << 0x5u)>; + using ID6 = RegisterMask<IDR, (0x1u << 0x6u)>; + using ID7 = RegisterMask<IDR, (0x1u << 0x7u)>; + using ID8 = RegisterMask<IDR, (0x1u << 0x8u)>; + using ID9 = RegisterMask<IDR, (0x1u << 0x9u)>; + using ID10 = RegisterMask<IDR, (0x1u << 0xau)>; + using ID11 = RegisterMask<IDR, (0x1u << 0xbu)>; + using ID12 = RegisterMask<IDR, (0x1u << 0xcu)>; + using ID13 = RegisterMask<IDR, (0x1u << 0xdu)>; + using ID14 = RegisterMask<IDR, (0x1u << 0xeu)>; + using ID15 = RegisterMask<IDR, (0x1u << 0xfu)>; + }; + struct ODR : public MemRegister<uint32_t, 0x50001414> { + using OD0 = RegisterMask<ODR, (0x1u << 0x0u)>; + using OD1 = RegisterMask<ODR, (0x1u << 0x1u)>; + using OD2 = RegisterMask<ODR, (0x1u << 0x2u)>; + using OD3 = RegisterMask<ODR, (0x1u << 0x3u)>; + using OD4 = RegisterMask<ODR, (0x1u << 0x4u)>; + using OD5 = RegisterMask<ODR, (0x1u << 0x5u)>; + using OD6 = RegisterMask<ODR, (0x1u << 0x6u)>; + using OD7 = RegisterMask<ODR, (0x1u << 0x7u)>; + using OD8 = RegisterMask<ODR, (0x1u << 0x8u)>; + using OD9 = RegisterMask<ODR, (0x1u << 0x9u)>; + using OD10 = RegisterMask<ODR, (0x1u << 0xau)>; + using OD11 = RegisterMask<ODR, (0x1u << 0xbu)>; + using OD12 = RegisterMask<ODR, (0x1u << 0xcu)>; + using OD13 = RegisterMask<ODR, (0x1u << 0xdu)>; + using OD14 = RegisterMask<ODR, (0x1u << 0xeu)>; + using OD15 = RegisterMask<ODR, (0x1u << 0xfu)>; + }; + struct BSRR : public MemRegister<uint32_t, 0x50001418> { + using BS0 = RegisterMask<BSRR, (0x1u << 0x0u)>; + using BS1 = RegisterMask<BSRR, (0x1u << 0x1u)>; + using BS2 = RegisterMask<BSRR, (0x1u << 0x2u)>; + using BS3 = RegisterMask<BSRR, (0x1u << 0x3u)>; + using BS4 = RegisterMask<BSRR, (0x1u << 0x4u)>; + using BS5 = RegisterMask<BSRR, (0x1u << 0x5u)>; + using BS6 = RegisterMask<BSRR, (0x1u << 0x6u)>; + using BS7 = RegisterMask<BSRR, (0x1u << 0x7u)>; + using BS8 = RegisterMask<BSRR, (0x1u << 0x8u)>; + using BS9 = RegisterMask<BSRR, (0x1u << 0x9u)>; + using BS10 = RegisterMask<BSRR, (0x1u << 0xau)>; + using BS11 = RegisterMask<BSRR, (0x1u << 0xbu)>; + using BS12 = RegisterMask<BSRR, (0x1u << 0xcu)>; + using BS13 = RegisterMask<BSRR, (0x1u << 0xdu)>; + using BS14 = RegisterMask<BSRR, (0x1u << 0xeu)>; + using BS15 = RegisterMask<BSRR, (0x1u << 0xfu)>; + using BR0 = RegisterMask<BSRR, (0x1u << 0x10u)>; + using BR1 = RegisterMask<BSRR, (0x1u << 0x11u)>; + using BR2 = RegisterMask<BSRR, (0x1u << 0x12u)>; + using BR3 = RegisterMask<BSRR, (0x1u << 0x13u)>; + using BR4 = RegisterMask<BSRR, (0x1u << 0x14u)>; + using BR5 = RegisterMask<BSRR, (0x1u << 0x15u)>; + using BR6 = RegisterMask<BSRR, (0x1u << 0x16u)>; + using BR7 = RegisterMask<BSRR, (0x1u << 0x17u)>; + using BR8 = RegisterMask<BSRR, (0x1u << 0x18u)>; + using BR9 = RegisterMask<BSRR, (0x1u << 0x19u)>; + using BR10 = RegisterMask<BSRR, (0x1u << 0x1au)>; + using BR11 = RegisterMask<BSRR, (0x1u << 0x1bu)>; + using BR12 = RegisterMask<BSRR, (0x1u << 0x1cu)>; + using BR13 = RegisterMask<BSRR, (0x1u << 0x1du)>; + using BR14 = RegisterMask<BSRR, (0x1u << 0x1eu)>; + using BR15 = RegisterMask<BSRR, (0x1u << 0x1fu)>; + }; + struct LCKR : public MemRegister<uint32_t, 0x5000141c> { + using LCK0 = RegisterMask<LCKR, (0x1u << 0x0u)>; + using LCK1 = RegisterMask<LCKR, (0x1u << 0x1u)>; + using LCK2 = RegisterMask<LCKR, (0x1u << 0x2u)>; + using LCK3 = RegisterMask<LCKR, (0x1u << 0x3u)>; + using LCK4 = RegisterMask<LCKR, (0x1u << 0x4u)>; + using LCK5 = RegisterMask<LCKR, (0x1u << 0x5u)>; + using LCK6 = RegisterMask<LCKR, (0x1u << 0x6u)>; + using LCK7 = RegisterMask<LCKR, (0x1u << 0x7u)>; + using LCK8 = RegisterMask<LCKR, (0x1u << 0x8u)>; + using LCK9 = RegisterMask<LCKR, (0x1u << 0x9u)>; + using LCK10 = RegisterMask<LCKR, (0x1u << 0xau)>; + using LCK11 = RegisterMask<LCKR, (0x1u << 0xbu)>; + using LCK12 = RegisterMask<LCKR, (0x1u << 0xcu)>; + using LCK13 = RegisterMask<LCKR, (0x1u << 0xdu)>; + using LCK14 = RegisterMask<LCKR, (0x1u << 0xeu)>; + using LCK15 = RegisterMask<LCKR, (0x1u << 0xfu)>; + using LCKK = RegisterMask<LCKR, (0x1u << 0x10u)>; + }; + struct AFRL : public MemRegister<uint32_t, 0x50001420> { + using AFSEL0 = RegisterMask<AFRL, (0xfu << 0x0u)>; + using AFSEL1 = RegisterMask<AFRL, (0xfu << 0x4u)>; + using AFSEL2 = RegisterMask<AFRL, (0xfu << 0x8u)>; + using AFSEL3 = RegisterMask<AFRL, (0xfu << 0xcu)>; + using AFSEL4 = RegisterMask<AFRL, (0xfu << 0x10u)>; + using AFSEL5 = RegisterMask<AFRL, (0xfu << 0x14u)>; + using AFSEL6 = RegisterMask<AFRL, (0xfu << 0x18u)>; + using AFSEL7 = RegisterMask<AFRL, (0xfu << 0x1cu)>; + }; + struct AFRH : public MemRegister<uint32_t, 0x50001424> { + using AFSEL8 = RegisterMask<AFRH, (0xfu << 0x0u)>; + using AFSEL9 = RegisterMask<AFRH, (0xfu << 0x4u)>; + using AFSEL10 = RegisterMask<AFRH, (0xfu << 0x8u)>; + using AFSEL11 = RegisterMask<AFRH, (0xfu << 0xcu)>; + using AFSEL12 = RegisterMask<AFRH, (0xfu << 0x10u)>; + using AFSEL13 = RegisterMask<AFRH, (0xfu << 0x14u)>; + using AFSEL14 = RegisterMask<AFRH, (0xfu << 0x18u)>; + using AFSEL15 = RegisterMask<AFRH, (0xfu << 0x1cu)>; + }; + struct BRR : public MemRegister<uint32_t, 0x50001428> { + using BR0 = RegisterMask<BRR, (0x1u << 0x0u)>; + using BR1 = RegisterMask<BRR, (0x1u << 0x1u)>; + using BR2 = RegisterMask<BRR, (0x1u << 0x2u)>; + using BR3 = RegisterMask<BRR, (0x1u << 0x3u)>; + using BR4 = RegisterMask<BRR, (0x1u << 0x4u)>; + using BR5 = RegisterMask<BRR, (0x1u << 0x5u)>; + using BR6 = RegisterMask<BRR, (0x1u << 0x6u)>; + using BR7 = RegisterMask<BRR, (0x1u << 0x7u)>; + using BR8 = RegisterMask<BRR, (0x1u << 0x8u)>; + using BR9 = RegisterMask<BRR, (0x1u << 0x9u)>; + using BR10 = RegisterMask<BRR, (0x1u << 0xau)>; + using BR11 = RegisterMask<BRR, (0x1u << 0xbu)>; + using BR12 = RegisterMask<BRR, (0x1u << 0xcu)>; + using BR13 = RegisterMask<BRR, (0x1u << 0xdu)>; + using BR14 = RegisterMask<BRR, (0x1u << 0xeu)>; + using BR15 = RegisterMask<BRR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFRL, AFRH, BRR>; + } + namespace I2C1 { + struct CR1 : public MemRegister<uint32_t, 0x40005400> { + using PE = RegisterMask<CR1, (0x1u << 0x0u)>; + using TXIE = RegisterMask<CR1, (0x1u << 0x1u)>; + using RXIE = RegisterMask<CR1, (0x1u << 0x2u)>; + using ADDRIE = RegisterMask<CR1, (0x1u << 0x3u)>; + using NACKIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using STOPIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using ERRIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using DNF = RegisterMask<CR1, (0xfu << 0x8u)>; + using ANFOFF = RegisterMask<CR1, (0x1u << 0xcu)>; + using TXDMAEN = RegisterMask<CR1, (0x1u << 0xeu)>; + using RXDMAEN = RegisterMask<CR1, (0x1u << 0xfu)>; + using SBC = RegisterMask<CR1, (0x1u << 0x10u)>; + using NOSTRETCH = RegisterMask<CR1, (0x1u << 0x11u)>; + using WUPEN = RegisterMask<CR1, (0x1u << 0x12u)>; + using GCEN = RegisterMask<CR1, (0x1u << 0x13u)>; + using FMP = RegisterMask<CR1, (0x1u << 0x18u)>; + using ADDRACLR = RegisterMask<CR1, (0x1u << 0x1eu)>; + using STOPFACLR = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40005404> { + using SADD = RegisterMask<CR2, (0x3ffu << 0x0u)>; + using RD_WRN = RegisterMask<CR2, (0x1u << 0xau)>; + using ADD10 = RegisterMask<CR2, (0x1u << 0xbu)>; + using HEAD10R = RegisterMask<CR2, (0x1u << 0xcu)>; + using START = RegisterMask<CR2, (0x1u << 0xdu)>; + using STOP = RegisterMask<CR2, (0x1u << 0xeu)>; + using NACK = RegisterMask<CR2, (0x1u << 0xfu)>; + using NBYTES = RegisterMask<CR2, (0xffu << 0x10u)>; + using RELOAD = RegisterMask<CR2, (0x1u << 0x18u)>; + using AUTOEND = RegisterMask<CR2, (0x1u << 0x19u)>; + }; + struct OAR1 : public MemRegister<uint32_t, 0x40005408> { + using OA1 = RegisterMask<OAR1, (0x3ffu << 0x0u)>; + using OA1MODE = RegisterMask<OAR1, (0x1u << 0xau)>; + using OA1EN = RegisterMask<OAR1, (0x1u << 0xfu)>; + }; + struct OAR2 : public MemRegister<uint32_t, 0x4000540c> { + using OA2 = RegisterMask<OAR2, (0x7fu << 0x1u)>; + using OA2MSK = RegisterMask<OAR2, (0x7u << 0x8u)>; + using OA2EN = RegisterMask<OAR2, (0x1u << 0xfu)>; + }; + struct TIMINGR : public MemRegister<uint32_t, 0x40005410> { + using SCLL = RegisterMask<TIMINGR, (0xffu << 0x0u)>; + using SCLH = RegisterMask<TIMINGR, (0xffu << 0x8u)>; + using SDADEL = RegisterMask<TIMINGR, (0xfu << 0x10u)>; + using SCLDEL = RegisterMask<TIMINGR, (0xfu << 0x14u)>; + using PRESC = RegisterMask<TIMINGR, (0xfu << 0x1cu)>; + }; + struct TIMEOUTR : public MemRegister<uint32_t, 0x40005414> { + using TIMEOUTA = RegisterMask<TIMEOUTR, (0xfffu << 0x0u)>; + using TIDLE = RegisterMask<TIMEOUTR, (0x1u << 0xcu)>; + using TIMOUTEN = RegisterMask<TIMEOUTR, (0x1u << 0xfu)>; + using TIMEOUTB = RegisterMask<TIMEOUTR, (0xfffu << 0x10u)>; + using TEXTEN = RegisterMask<TIMEOUTR, (0x1u << 0x1fu)>; + }; + struct ISR : public MemRegister<uint32_t, 0x40005418> { + using TXE = RegisterMask<ISR, (0x1u << 0x0u)>; + using TXIS = RegisterMask<ISR, (0x1u << 0x1u)>; + using RXNE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ADDR = RegisterMask<ISR, (0x1u << 0x3u)>; + using NACKF = RegisterMask<ISR, (0x1u << 0x4u)>; + using STOPF = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TCR = RegisterMask<ISR, (0x1u << 0x7u)>; + using BERR = RegisterMask<ISR, (0x1u << 0x8u)>; + using ARLO = RegisterMask<ISR, (0x1u << 0x9u)>; + using OVR = RegisterMask<ISR, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR, (0x1u << 0xfu)>; + using DIR = RegisterMask<ISR, (0x1u << 0x10u)>; + using ADDCODE = RegisterMask<ISR, (0x7fu << 0x11u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x4000541c> { + using ADDRCF = RegisterMask<ICR, (0x1u << 0x3u)>; + using NACKCF = RegisterMask<ICR, (0x1u << 0x4u)>; + using STOPCF = RegisterMask<ICR, (0x1u << 0x5u)>; + using BERRCF = RegisterMask<ICR, (0x1u << 0x8u)>; + using ARLOCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using OVRCF = RegisterMask<ICR, (0x1u << 0xau)>; + }; + struct PECR : public MemRegister<uint32_t, 0x40005420> { + using PEC = RegisterMask<PECR, (0xffu << 0x0u)>; + }; + struct RXDR : public MemRegister<uint32_t, 0x40005424> { + using RXDATA = RegisterMask<RXDR, (0xffu << 0x0u)>; + }; + struct TXDR : public MemRegister<uint32_t, 0x40005428> { + using TXDATA = RegisterMask<TXDR, (0xffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR2, OAR1, OAR2, TIMINGR, TIMEOUTR, ISR, ICR, PECR, RXDR, TXDR>; + } + namespace I2C2 { + struct CR1 : public MemRegister<uint32_t, 0x40005800> { + using PE = RegisterMask<CR1, (0x1u << 0x0u)>; + using TXIE = RegisterMask<CR1, (0x1u << 0x1u)>; + using RXIE = RegisterMask<CR1, (0x1u << 0x2u)>; + using ADDRIE = RegisterMask<CR1, (0x1u << 0x3u)>; + using NACKIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using STOPIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using ERRIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using DNF = RegisterMask<CR1, (0xfu << 0x8u)>; + using ANFOFF = RegisterMask<CR1, (0x1u << 0xcu)>; + using TXDMAEN = RegisterMask<CR1, (0x1u << 0xeu)>; + using RXDMAEN = RegisterMask<CR1, (0x1u << 0xfu)>; + using SBC = RegisterMask<CR1, (0x1u << 0x10u)>; + using NOSTRETCH = RegisterMask<CR1, (0x1u << 0x11u)>; + using WUPEN = RegisterMask<CR1, (0x1u << 0x12u)>; + using GCEN = RegisterMask<CR1, (0x1u << 0x13u)>; + using FMP = RegisterMask<CR1, (0x1u << 0x18u)>; + using ADDRACLR = RegisterMask<CR1, (0x1u << 0x1eu)>; + using STOPFACLR = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40005804> { + using SADD = RegisterMask<CR2, (0x3ffu << 0x0u)>; + using RD_WRN = RegisterMask<CR2, (0x1u << 0xau)>; + using ADD10 = RegisterMask<CR2, (0x1u << 0xbu)>; + using HEAD10R = RegisterMask<CR2, (0x1u << 0xcu)>; + using START = RegisterMask<CR2, (0x1u << 0xdu)>; + using STOP = RegisterMask<CR2, (0x1u << 0xeu)>; + using NACK = RegisterMask<CR2, (0x1u << 0xfu)>; + using NBYTES = RegisterMask<CR2, (0xffu << 0x10u)>; + using RELOAD = RegisterMask<CR2, (0x1u << 0x18u)>; + using AUTOEND = RegisterMask<CR2, (0x1u << 0x19u)>; + }; + struct OAR1 : public MemRegister<uint32_t, 0x40005808> { + using OA1 = RegisterMask<OAR1, (0x3ffu << 0x0u)>; + using OA1MODE = RegisterMask<OAR1, (0x1u << 0xau)>; + using OA1EN = RegisterMask<OAR1, (0x1u << 0xfu)>; + }; + struct OAR2 : public MemRegister<uint32_t, 0x4000580c> { + using OA2 = RegisterMask<OAR2, (0x7fu << 0x1u)>; + using OA2MSK = RegisterMask<OAR2, (0x7u << 0x8u)>; + using OA2EN = RegisterMask<OAR2, (0x1u << 0xfu)>; + }; + struct TIMINGR : public MemRegister<uint32_t, 0x40005810> { + using SCLL = RegisterMask<TIMINGR, (0xffu << 0x0u)>; + using SCLH = RegisterMask<TIMINGR, (0xffu << 0x8u)>; + using SDADEL = RegisterMask<TIMINGR, (0xfu << 0x10u)>; + using SCLDEL = RegisterMask<TIMINGR, (0xfu << 0x14u)>; + using PRESC = RegisterMask<TIMINGR, (0xfu << 0x1cu)>; + }; + struct TIMEOUTR : public MemRegister<uint32_t, 0x40005814> { + using TIMEOUTA = RegisterMask<TIMEOUTR, (0xfffu << 0x0u)>; + using TIDLE = RegisterMask<TIMEOUTR, (0x1u << 0xcu)>; + using TIMOUTEN = RegisterMask<TIMEOUTR, (0x1u << 0xfu)>; + using TIMEOUTB = RegisterMask<TIMEOUTR, (0xfffu << 0x10u)>; + using TEXTEN = RegisterMask<TIMEOUTR, (0x1u << 0x1fu)>; + }; + struct ISR : public MemRegister<uint32_t, 0x40005818> { + using TXE = RegisterMask<ISR, (0x1u << 0x0u)>; + using TXIS = RegisterMask<ISR, (0x1u << 0x1u)>; + using RXNE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ADDR = RegisterMask<ISR, (0x1u << 0x3u)>; + using NACKF = RegisterMask<ISR, (0x1u << 0x4u)>; + using STOPF = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TCR = RegisterMask<ISR, (0x1u << 0x7u)>; + using BERR = RegisterMask<ISR, (0x1u << 0x8u)>; + using ARLO = RegisterMask<ISR, (0x1u << 0x9u)>; + using OVR = RegisterMask<ISR, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR, (0x1u << 0xfu)>; + using DIR = RegisterMask<ISR, (0x1u << 0x10u)>; + using ADDCODE = RegisterMask<ISR, (0x7fu << 0x11u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x4000581c> { + using ADDRCF = RegisterMask<ICR, (0x1u << 0x3u)>; + using NACKCF = RegisterMask<ICR, (0x1u << 0x4u)>; + using STOPCF = RegisterMask<ICR, (0x1u << 0x5u)>; + using BERRCF = RegisterMask<ICR, (0x1u << 0x8u)>; + using ARLOCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using OVRCF = RegisterMask<ICR, (0x1u << 0xau)>; + }; + struct PECR : public MemRegister<uint32_t, 0x40005820> { + using PEC = RegisterMask<PECR, (0xffu << 0x0u)>; + }; + struct RXDR : public MemRegister<uint32_t, 0x40005824> { + using RXDATA = RegisterMask<RXDR, (0xffu << 0x0u)>; + }; + struct TXDR : public MemRegister<uint32_t, 0x40005828> { + using TXDATA = RegisterMask<TXDR, (0xffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR2, OAR1, OAR2, TIMINGR, TIMEOUTR, ISR, ICR, PECR, RXDR, TXDR>; + } + namespace I2C3 { + struct CR1 : public MemRegister<uint32_t, 0x40008800> { + using PE = RegisterMask<CR1, (0x1u << 0x0u)>; + using TXIE = RegisterMask<CR1, (0x1u << 0x1u)>; + using RXIE = RegisterMask<CR1, (0x1u << 0x2u)>; + using ADDRIE = RegisterMask<CR1, (0x1u << 0x3u)>; + using NACKIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using STOPIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using ERRIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using DNF = RegisterMask<CR1, (0xfu << 0x8u)>; + using ANFOFF = RegisterMask<CR1, (0x1u << 0xcu)>; + using TXDMAEN = RegisterMask<CR1, (0x1u << 0xeu)>; + using RXDMAEN = RegisterMask<CR1, (0x1u << 0xfu)>; + using SBC = RegisterMask<CR1, (0x1u << 0x10u)>; + using NOSTRETCH = RegisterMask<CR1, (0x1u << 0x11u)>; + using WUPEN = RegisterMask<CR1, (0x1u << 0x12u)>; + using GCEN = RegisterMask<CR1, (0x1u << 0x13u)>; + using FMP = RegisterMask<CR1, (0x1u << 0x18u)>; + using ADDRACLR = RegisterMask<CR1, (0x1u << 0x1eu)>; + using STOPFACLR = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40008804> { + using SADD = RegisterMask<CR2, (0x3ffu << 0x0u)>; + using RD_WRN = RegisterMask<CR2, (0x1u << 0xau)>; + using ADD10 = RegisterMask<CR2, (0x1u << 0xbu)>; + using HEAD10R = RegisterMask<CR2, (0x1u << 0xcu)>; + using START = RegisterMask<CR2, (0x1u << 0xdu)>; + using STOP = RegisterMask<CR2, (0x1u << 0xeu)>; + using NACK = RegisterMask<CR2, (0x1u << 0xfu)>; + using NBYTES = RegisterMask<CR2, (0xffu << 0x10u)>; + using RELOAD = RegisterMask<CR2, (0x1u << 0x18u)>; + using AUTOEND = RegisterMask<CR2, (0x1u << 0x19u)>; + }; + struct OAR1 : public MemRegister<uint32_t, 0x40008808> { + using OA1 = RegisterMask<OAR1, (0x3ffu << 0x0u)>; + using OA1MODE = RegisterMask<OAR1, (0x1u << 0xau)>; + using OA1EN = RegisterMask<OAR1, (0x1u << 0xfu)>; + }; + struct OAR2 : public MemRegister<uint32_t, 0x4000880c> { + using OA2 = RegisterMask<OAR2, (0x7fu << 0x1u)>; + using OA2MSK = RegisterMask<OAR2, (0x7u << 0x8u)>; + using OA2EN = RegisterMask<OAR2, (0x1u << 0xfu)>; + }; + struct TIMINGR : public MemRegister<uint32_t, 0x40008810> { + using SCLL = RegisterMask<TIMINGR, (0xffu << 0x0u)>; + using SCLH = RegisterMask<TIMINGR, (0xffu << 0x8u)>; + using SDADEL = RegisterMask<TIMINGR, (0xfu << 0x10u)>; + using SCLDEL = RegisterMask<TIMINGR, (0xfu << 0x14u)>; + using PRESC = RegisterMask<TIMINGR, (0xfu << 0x1cu)>; + }; + struct TIMEOUTR : public MemRegister<uint32_t, 0x40008814> { + using TIMEOUTA = RegisterMask<TIMEOUTR, (0xfffu << 0x0u)>; + using TIDLE = RegisterMask<TIMEOUTR, (0x1u << 0xcu)>; + using TIMOUTEN = RegisterMask<TIMEOUTR, (0x1u << 0xfu)>; + using TIMEOUTB = RegisterMask<TIMEOUTR, (0xfffu << 0x10u)>; + using TEXTEN = RegisterMask<TIMEOUTR, (0x1u << 0x1fu)>; + }; + struct ISR : public MemRegister<uint32_t, 0x40008818> { + using TXE = RegisterMask<ISR, (0x1u << 0x0u)>; + using TXIS = RegisterMask<ISR, (0x1u << 0x1u)>; + using RXNE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ADDR = RegisterMask<ISR, (0x1u << 0x3u)>; + using NACKF = RegisterMask<ISR, (0x1u << 0x4u)>; + using STOPF = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TCR = RegisterMask<ISR, (0x1u << 0x7u)>; + using BERR = RegisterMask<ISR, (0x1u << 0x8u)>; + using ARLO = RegisterMask<ISR, (0x1u << 0x9u)>; + using OVR = RegisterMask<ISR, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR, (0x1u << 0xfu)>; + using DIR = RegisterMask<ISR, (0x1u << 0x10u)>; + using ADDCODE = RegisterMask<ISR, (0x7fu << 0x11u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x4000881c> { + using ADDRCF = RegisterMask<ICR, (0x1u << 0x3u)>; + using NACKCF = RegisterMask<ICR, (0x1u << 0x4u)>; + using STOPCF = RegisterMask<ICR, (0x1u << 0x5u)>; + using BERRCF = RegisterMask<ICR, (0x1u << 0x8u)>; + using ARLOCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using OVRCF = RegisterMask<ICR, (0x1u << 0xau)>; + }; + struct PECR : public MemRegister<uint32_t, 0x40008820> { + using PEC = RegisterMask<PECR, (0xffu << 0x0u)>; + }; + struct RXDR : public MemRegister<uint32_t, 0x40008824> { + using RXDATA = RegisterMask<RXDR, (0xffu << 0x0u)>; + }; + struct TXDR : public MemRegister<uint32_t, 0x40008828> { + using TXDATA = RegisterMask<TXDR, (0xffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR2, OAR1, OAR2, TIMINGR, TIMEOUTR, ISR, ICR, PECR, RXDR, TXDR>; + } + namespace IWDG { + struct KR : public MemRegister<uint32_t, 0x40003000> { + using KEY = RegisterMask<KR, (0xffffu << 0x0u)>; + }; + struct PR : public MemRegister<uint32_t, 0x40003004> { + using val = RegisterMask<PR, (0xfu << 0x0u)>; + }; + struct RLR : public MemRegister<uint32_t, 0x40003008> { + using RL = RegisterMask<RLR, (0xfffu << 0x0u)>; + }; + struct SR : public MemRegister<uint32_t, 0x4000300c> { + using PVU = RegisterMask<SR, (0x1u << 0x0u)>; + using RVU = RegisterMask<SR, (0x1u << 0x1u)>; + using WVU = RegisterMask<SR, (0x1u << 0x2u)>; + using EWU = RegisterMask<SR, (0x1u << 0x3u)>; + using ONF = RegisterMask<SR, (0x1u << 0x8u)>; + using EWIF = RegisterMask<SR, (0x1u << 0xeu)>; + }; + struct WINR : public MemRegister<uint32_t, 0x40003010> { + using WIN = RegisterMask<WINR, (0xfffu << 0x0u)>; + }; + struct EWCR : public MemRegister<uint32_t, 0x40003014> { + using EWIT = RegisterMask<EWCR, (0xfffu << 0x0u)>; + using EWIC = RegisterMask<EWCR, (0x1u << 0xeu)>; + using EWIE = RegisterMask<EWCR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<KR, PR, RLR, SR, WINR, EWCR>; + } + namespace LCD { + struct CR : public MemRegister<uint32_t, 0x40002400> { + using LCDEN = RegisterMask<CR, (0x1u << 0x0u)>; + using VSEL = RegisterMask<CR, (0x1u << 0x1u)>; + using DUTY = RegisterMask<CR, (0x7u << 0x2u)>; + using BIAS = RegisterMask<CR, (0x3u << 0x5u)>; + using MUX_SEG = RegisterMask<CR, (0x1u << 0x7u)>; + using BUFEN = RegisterMask<CR, (0x1u << 0x8u)>; + }; + struct FCR : public MemRegister<uint32_t, 0x40002404> { + using HD = RegisterMask<FCR, (0x1u << 0x0u)>; + using SOFIE = RegisterMask<FCR, (0x1u << 0x1u)>; + using UDDIE = RegisterMask<FCR, (0x1u << 0x3u)>; + using PON = RegisterMask<FCR, (0x7u << 0x4u)>; + using DEAD = RegisterMask<FCR, (0x7u << 0x7u)>; + using CC = RegisterMask<FCR, (0x7u << 0xau)>; + using BLINKF = RegisterMask<FCR, (0x7u << 0xdu)>; + using BLINK = RegisterMask<FCR, (0x3u << 0x10u)>; + using DIV = RegisterMask<FCR, (0xfu << 0x12u)>; + using PS = RegisterMask<FCR, (0xfu << 0x16u)>; + }; + struct SR : public MemRegister<uint32_t, 0x40002408> { + using ENS = RegisterMask<SR, (0x1u << 0x0u)>; + using SOF = RegisterMask<SR, (0x1u << 0x1u)>; + using UDR = RegisterMask<SR, (0x1u << 0x2u)>; + using UDD = RegisterMask<SR, (0x1u << 0x3u)>; + using RDY = RegisterMask<SR, (0x1u << 0x4u)>; + using FCRSF = RegisterMask<SR, (0x1u << 0x5u)>; + }; + struct CLR : public MemRegister<uint32_t, 0x4000240c> { + using SOFC = RegisterMask<CLR, (0x1u << 0x1u)>; + using UDDC = RegisterMask<CLR, (0x1u << 0x3u)>; + }; + struct RAM0 : public MemRegister<uint32_t, 0x40002414> { + using SEGMENT_DATA = RegisterMask<RAM0, (0x0u << 0x0u)>; + }; + struct RAM1 : public MemRegister<uint32_t, 0x40002418> { + using SEGMENT_DATA = RegisterMask<RAM1, (0xfffffu << 0x0u)>; + }; + struct RAM2 : public MemRegister<uint32_t, 0x4000241c> { + using SEGMENT_DATA = RegisterMask<RAM2, (0x0u << 0x0u)>; + }; + struct RAM3 : public MemRegister<uint32_t, 0x40002420> { + using SEGMENT_DATA = RegisterMask<RAM3, (0xfffffu << 0x0u)>; + }; + struct RAM4 : public MemRegister<uint32_t, 0x40002424> { + using SEGMENT_DATA = RegisterMask<RAM4, (0x0u << 0x0u)>; + }; + struct RAM5 : public MemRegister<uint32_t, 0x40002428> { + using SEGMENT_DATA = RegisterMask<RAM5, (0xfffffu << 0x0u)>; + }; + struct RAM6 : public MemRegister<uint32_t, 0x4000242c> { + using SEGMENT_DATA = RegisterMask<RAM6, (0x0u << 0x0u)>; + }; + struct RAM7 : public MemRegister<uint32_t, 0x40002430> { + using SEGMENT_DATA = RegisterMask<RAM7, (0xfffffu << 0x0u)>; + }; + struct RAM8 : public MemRegister<uint32_t, 0x40002434> { + using SEGMENT_DATA = RegisterMask<RAM8, (0x0u << 0x0u)>; + }; + struct RAM9 : public MemRegister<uint32_t, 0x40002438> { + using SEGMENT_DATA = RegisterMask<RAM9, (0xffffu << 0x0u)>; + }; + struct RAM10 : public MemRegister<uint32_t, 0x4000243c> { + using SEGMENT_DATA = RegisterMask<RAM10, (0x0u << 0x0u)>; + }; + struct RAM11 : public MemRegister<uint32_t, 0x40002440> { + using SEGMENT_DATA = RegisterMask<RAM11, (0xffffu << 0x0u)>; + }; + struct RAM12 : public MemRegister<uint32_t, 0x40002444> { + using SEGMENT_DATA = RegisterMask<RAM12, (0x0u << 0x0u)>; + }; + struct RAM13 : public MemRegister<uint32_t, 0x40002448> { + using SEGMENT_DATA = RegisterMask<RAM13, (0xffffu << 0x0u)>; + }; + struct RAM14 : public MemRegister<uint32_t, 0x4000244c> { + using SEGMENT_DATA = RegisterMask<RAM14, (0x0u << 0x0u)>; + }; + struct RAM15 : public MemRegister<uint32_t, 0x40002450> { + using SEGMENT_DATA = RegisterMask<RAM15, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR, FCR, SR, CLR, RAM0, RAM1, RAM2, RAM3, RAM4, RAM5, RAM6, RAM7, RAM8, RAM9, RAM10, RAM11, RAM12, RAM13, RAM14, RAM15>; + } + namespace LPTIM1 { + struct LPTIM1_ISR_OUTPUT : public MemRegister<uint32_t, 0x40007c00> { + using CC1IF = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x0u)>; + using ARRM = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIG = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x2u)>; + using CMP1OK = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x3u)>; + using ARROK = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x4u)>; + using UP = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x5u)>; + using DOWN = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x6u)>; + using UE = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x7u)>; + using REPOK = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x8u)>; + using CC2IF = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x9u)>; + using CC3IF = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0xau)>; + using CC4IF = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0xbu)>; + using CMP2OK = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x13u)>; + using CMP3OK = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x14u)>; + using CMP4OK = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x15u)>; + using DIEROK = RegisterMask<LPTIM1_ISR_OUTPUT, (0x1u << 0x18u)>; + }; + struct LPTIM1_ISR_INPUT : public MemRegister<uint32_t, 0x40007c00> { + using CC1IF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x0u)>; + using ARRM = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x1u)>; + using EXTTRIG = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x2u)>; + using ARROK = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x4u)>; + using UP = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x5u)>; + using DOWN = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x6u)>; + using UE = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x7u)>; + using REPOK = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x8u)>; + using CC2IF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x9u)>; + using CC3IF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0xau)>; + using CC4IF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0xbu)>; + using CC1OF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0xcu)>; + using CC2OF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0xdu)>; + using CC3OF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0xeu)>; + using CC4OF = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0xfu)>; + using DIEROK = RegisterMask<LPTIM1_ISR_INPUT, (0x1u << 0x18u)>; + }; + struct LPTIM1_ICR_OUTPUT : public MemRegister<uint32_t, 0x40007c04> { + using CC1CF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x0u)>; + using ARRMCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIGCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x2u)>; + using CMP1OKCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x3u)>; + using ARROKCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x4u)>; + using UPCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x5u)>; + using DOWNCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x6u)>; + using UECF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x7u)>; + using REPOKCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x8u)>; + using CC2CF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x9u)>; + using CC3CF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0xau)>; + using CC4CF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0xbu)>; + using CMP2OKCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x13u)>; + using CMP3OKCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x14u)>; + using CMP4OKCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x15u)>; + using DIEROKCF = RegisterMask<LPTIM1_ICR_OUTPUT, (0x1u << 0x18u)>; + }; + struct LPTIM1_ICR_INPUT : public MemRegister<uint32_t, 0x40007c04> { + using CC1CF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x0u)>; + using ARRMCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x1u)>; + using EXTTRIGCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x2u)>; + using ARROKCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x4u)>; + using UPCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x5u)>; + using DOWNCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x6u)>; + using UECF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x7u)>; + using REPOKCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x8u)>; + using CC2CF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x9u)>; + using CC3CF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0xau)>; + using CC4CF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0xbu)>; + using CC1OCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0xcu)>; + using CC2OCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0xdu)>; + using CC3OCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0xeu)>; + using CC4OCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0xfu)>; + using DIEROKCF = RegisterMask<LPTIM1_ICR_INPUT, (0x1u << 0x18u)>; + }; + struct LPTIM1_DIER_OUTPUT : public MemRegister<uint32_t, 0x40007c08> { + using CC1IE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x0u)>; + using ARRMIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIGIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x2u)>; + using CMP1OKIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x3u)>; + using ARROKIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x4u)>; + using UPIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x5u)>; + using DOWNIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x6u)>; + using UEIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x7u)>; + using REPOKIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x8u)>; + using CC2IE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x9u)>; + using CC3IE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0xau)>; + using CC4IE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0xbu)>; + using CMP2OKIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x13u)>; + using CMP3OKIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x14u)>; + using CMP4OKIE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x15u)>; + using UEDE = RegisterMask<LPTIM1_DIER_OUTPUT, (0x1u << 0x17u)>; + }; + struct LPTIM1_DIER_INPUT : public MemRegister<uint32_t, 0x40007c08> { + using CC1IE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x0u)>; + using ARRMIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x1u)>; + using EXTTRIGIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x2u)>; + using ARROKIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x4u)>; + using UPIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x5u)>; + using DOWNIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x6u)>; + using UEIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x7u)>; + using REPOKIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x8u)>; + using CC2IE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x9u)>; + using CC3IE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0xau)>; + using CC4IE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0xbu)>; + using CC1OIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0xcu)>; + using CC2OIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0xdu)>; + using CC3OIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0xeu)>; + using CC4OIE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0xfu)>; + using CC1DE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x10u)>; + using UEDE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x17u)>; + using CC2DE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x19u)>; + using CC3DE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x1au)>; + using CC4DE = RegisterMask<LPTIM1_DIER_INPUT, (0x1u << 0x1bu)>; + }; + struct LPTIM1_CFGR : public MemRegister<uint32_t, 0x40007c0c> { + using CKSEL = RegisterMask<LPTIM1_CFGR, (0x1u << 0x0u)>; + using CKPOL = RegisterMask<LPTIM1_CFGR, (0x3u << 0x1u)>; + using CKFLT = RegisterMask<LPTIM1_CFGR, (0x3u << 0x3u)>; + using TRGFLT = RegisterMask<LPTIM1_CFGR, (0x3u << 0x6u)>; + using PRESC = RegisterMask<LPTIM1_CFGR, (0x7u << 0x9u)>; + using TRIGSEL = RegisterMask<LPTIM1_CFGR, (0x7u << 0xdu)>; + using TRIGEN = RegisterMask<LPTIM1_CFGR, (0x3u << 0x11u)>; + using TIMOUT = RegisterMask<LPTIM1_CFGR, (0x1u << 0x13u)>; + using WAVE = RegisterMask<LPTIM1_CFGR, (0x1u << 0x14u)>; + using PRELOAD = RegisterMask<LPTIM1_CFGR, (0x1u << 0x16u)>; + using COUNTMODE = RegisterMask<LPTIM1_CFGR, (0x1u << 0x17u)>; + using ENC = RegisterMask<LPTIM1_CFGR, (0x1u << 0x18u)>; + }; + struct LPTIM1_CR : public MemRegister<uint32_t, 0x40007c10> { + using ENABLE = RegisterMask<LPTIM1_CR, (0x1u << 0x0u)>; + using SNGSTRT = RegisterMask<LPTIM1_CR, (0x1u << 0x1u)>; + using CNTSTRT = RegisterMask<LPTIM1_CR, (0x1u << 0x2u)>; + using COUNTRST = RegisterMask<LPTIM1_CR, (0x1u << 0x3u)>; + using RSTARE = RegisterMask<LPTIM1_CR, (0x1u << 0x4u)>; + }; + struct LPTIM1_CCR1 : public MemRegister<uint32_t, 0x40007c14> { + using CCR1 = RegisterMask<LPTIM1_CCR1, (0xffffu << 0x0u)>; + }; + struct LPTIM1_ARR : public MemRegister<uint32_t, 0x40007c18> { + using ARR = RegisterMask<LPTIM1_ARR, (0xffffu << 0x0u)>; + }; + struct LPTIM1_CNT : public MemRegister<uint32_t, 0x40007c1c> { + using CNT = RegisterMask<LPTIM1_CNT, (0xffffu << 0x0u)>; + }; + struct LPTIM1_CFGR2 : public MemRegister<uint32_t, 0x40007c24> { + using IN1SEL = RegisterMask<LPTIM1_CFGR2, (0x3u << 0x0u)>; + using IN2SEL = RegisterMask<LPTIM1_CFGR2, (0x3u << 0x4u)>; + using IC1SEL = RegisterMask<LPTIM1_CFGR2, (0x3u << 0x10u)>; + using IC2SEL = RegisterMask<LPTIM1_CFGR2, (0x3u << 0x14u)>; + }; + struct LPTIM1_RCR : public MemRegister<uint32_t, 0x40007c28> { + using REP = RegisterMask<LPTIM1_RCR, (0xffu << 0x0u)>; + }; + struct LPTIM1_CCMR1 : public MemRegister<uint32_t, 0x40007c2c> { + using CC1SEL = RegisterMask<LPTIM1_CCMR1, (0x1u << 0x0u)>; + using CC1E = RegisterMask<LPTIM1_CCMR1, (0x1u << 0x1u)>; + using CC1P = RegisterMask<LPTIM1_CCMR1, (0x3u << 0x2u)>; + using IC1PSC = RegisterMask<LPTIM1_CCMR1, (0x3u << 0x8u)>; + using IC1F = RegisterMask<LPTIM1_CCMR1, (0x3u << 0xcu)>; + using CC2SEL = RegisterMask<LPTIM1_CCMR1, (0x1u << 0x10u)>; + using CC2E = RegisterMask<LPTIM1_CCMR1, (0x1u << 0x11u)>; + using CC2P = RegisterMask<LPTIM1_CCMR1, (0x3u << 0x12u)>; + using IC2PSC = RegisterMask<LPTIM1_CCMR1, (0x3u << 0x18u)>; + using IC2F = RegisterMask<LPTIM1_CCMR1, (0x3u << 0x1cu)>; + }; + struct LPTIM1_CCMR2 : public MemRegister<uint32_t, 0x40007c30> { + using CC3SEL = RegisterMask<LPTIM1_CCMR2, (0x1u << 0x0u)>; + using CC3E = RegisterMask<LPTIM1_CCMR2, (0x1u << 0x1u)>; + using CC3P = RegisterMask<LPTIM1_CCMR2, (0x3u << 0x2u)>; + using IC3PSC = RegisterMask<LPTIM1_CCMR2, (0x3u << 0x8u)>; + using IC3F = RegisterMask<LPTIM1_CCMR2, (0x3u << 0xcu)>; + using CC4SEL = RegisterMask<LPTIM1_CCMR2, (0x1u << 0x10u)>; + using CC4E = RegisterMask<LPTIM1_CCMR2, (0x1u << 0x11u)>; + using CC4P = RegisterMask<LPTIM1_CCMR2, (0x3u << 0x12u)>; + using IC4PSC = RegisterMask<LPTIM1_CCMR2, (0x3u << 0x18u)>; + using IC4F = RegisterMask<LPTIM1_CCMR2, (0x3u << 0x1cu)>; + }; + struct LPTIM1_CCR2 : public MemRegister<uint32_t, 0x40007c34> { + using CCR2 = RegisterMask<LPTIM1_CCR2, (0xffffu << 0x0u)>; + }; + struct LPTIM1_CCR3 : public MemRegister<uint32_t, 0x40007c38> { + using CCR3 = RegisterMask<LPTIM1_CCR3, (0xffffu << 0x0u)>; + }; + struct LPTIM1_CCR4 : public MemRegister<uint32_t, 0x40007c3c> { + using CCR4 = RegisterMask<LPTIM1_CCR4, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<LPTIM1_ISR_OUTPUT, LPTIM1_ISR_INPUT, LPTIM1_ICR_OUTPUT, LPTIM1_ICR_INPUT, LPTIM1_DIER_OUTPUT, LPTIM1_DIER_INPUT, LPTIM1_CFGR, LPTIM1_CR, LPTIM1_CCR1, LPTIM1_ARR, LPTIM1_CNT, LPTIM1_CFGR2, LPTIM1_RCR, LPTIM1_CCMR1, LPTIM1_CCMR2, LPTIM1_CCR2, LPTIM1_CCR3, LPTIM1_CCR4>; + } + namespace LPTIM2 { + struct LPTIM2_ISR_OUTPUT : public MemRegister<uint32_t, 0x40009400> { + using CC1IF = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x0u)>; + using ARRM = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIG = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x2u)>; + using CMP1OK = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x3u)>; + using ARROK = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x4u)>; + using UP = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x5u)>; + using DOWN = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x6u)>; + using UE = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x7u)>; + using REPOK = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x8u)>; + using CC2IF = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x9u)>; + using CC3IF = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0xau)>; + using CC4IF = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0xbu)>; + using CMP2OK = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x13u)>; + using CMP3OK = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x14u)>; + using CMP4OK = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x15u)>; + using DIEROK = RegisterMask<LPTIM2_ISR_OUTPUT, (0x1u << 0x18u)>; + }; + struct LPTIM2_ISR_INPUT : public MemRegister<uint32_t, 0x40009400> { + using CC1IF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x0u)>; + using ARRM = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x1u)>; + using EXTTRIG = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x2u)>; + using ARROK = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x4u)>; + using UP = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x5u)>; + using DOWN = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x6u)>; + using UE = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x7u)>; + using REPOK = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x8u)>; + using CC2IF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x9u)>; + using CC3IF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0xau)>; + using CC4IF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0xbu)>; + using CC1OF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0xcu)>; + using CC2OF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0xdu)>; + using CC3OF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0xeu)>; + using CC4OF = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0xfu)>; + using DIEROK = RegisterMask<LPTIM2_ISR_INPUT, (0x1u << 0x18u)>; + }; + struct LPTIM2_ICR_OUTPUT : public MemRegister<uint32_t, 0x40009404> { + using CC1CF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x0u)>; + using ARRMCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIGCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x2u)>; + using CMP1OKCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x3u)>; + using ARROKCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x4u)>; + using UPCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x5u)>; + using DOWNCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x6u)>; + using UECF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x7u)>; + using REPOKCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x8u)>; + using CC2CF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x9u)>; + using CC3CF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0xau)>; + using CC4CF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0xbu)>; + using CMP2OKCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x13u)>; + using CMP3OKCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x14u)>; + using CMP4OKCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x15u)>; + using DIEROKCF = RegisterMask<LPTIM2_ICR_OUTPUT, (0x1u << 0x18u)>; + }; + struct LPTIM2_ICR_INPUT : public MemRegister<uint32_t, 0x40009404> { + using CC1CF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x0u)>; + using ARRMCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x1u)>; + using EXTTRIGCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x2u)>; + using ARROKCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x4u)>; + using UPCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x5u)>; + using DOWNCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x6u)>; + using UECF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x7u)>; + using REPOKCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x8u)>; + using CC2CF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x9u)>; + using CC3CF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0xau)>; + using CC4CF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0xbu)>; + using CC1OCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0xcu)>; + using CC2OCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0xdu)>; + using CC3OCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0xeu)>; + using CC4OCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0xfu)>; + using DIEROKCF = RegisterMask<LPTIM2_ICR_INPUT, (0x1u << 0x18u)>; + }; + struct LPTIM2_DIER_OUTPUT : public MemRegister<uint32_t, 0x40009408> { + using CC1IE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x0u)>; + using ARRMIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIGIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x2u)>; + using CMP1OKIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x3u)>; + using ARROKIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x4u)>; + using UPIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x5u)>; + using DOWNIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x6u)>; + using UEIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x7u)>; + using REPOKIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x8u)>; + using CC2IE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x9u)>; + using CC3IE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0xau)>; + using CC4IE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0xbu)>; + using CMP2OKIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x13u)>; + using CMP3OKIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x14u)>; + using CMP4OKIE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x15u)>; + using UEDE = RegisterMask<LPTIM2_DIER_OUTPUT, (0x1u << 0x17u)>; + }; + struct LPTIM2_DIER_INPUT : public MemRegister<uint32_t, 0x40009408> { + using CC1IE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x0u)>; + using ARRMIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x1u)>; + using EXTTRIGIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x2u)>; + using ARROKIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x4u)>; + using UPIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x5u)>; + using DOWNIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x6u)>; + using UEIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x7u)>; + using REPOKIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x8u)>; + using CC2IE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x9u)>; + using CC3IE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0xau)>; + using CC4IE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0xbu)>; + using CC1OIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0xcu)>; + using CC2OIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0xdu)>; + using CC3OIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0xeu)>; + using CC4OIE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0xfu)>; + using CC1DE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x10u)>; + using UEDE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x17u)>; + using CC2DE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x19u)>; + using CC3DE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x1au)>; + using CC4DE = RegisterMask<LPTIM2_DIER_INPUT, (0x1u << 0x1bu)>; + }; + struct LPTIM2_CFGR : public MemRegister<uint32_t, 0x4000940c> { + using CKSEL = RegisterMask<LPTIM2_CFGR, (0x1u << 0x0u)>; + using CKPOL = RegisterMask<LPTIM2_CFGR, (0x3u << 0x1u)>; + using CKFLT = RegisterMask<LPTIM2_CFGR, (0x3u << 0x3u)>; + using TRGFLT = RegisterMask<LPTIM2_CFGR, (0x3u << 0x6u)>; + using PRESC = RegisterMask<LPTIM2_CFGR, (0x7u << 0x9u)>; + using TRIGSEL = RegisterMask<LPTIM2_CFGR, (0x7u << 0xdu)>; + using TRIGEN = RegisterMask<LPTIM2_CFGR, (0x3u << 0x11u)>; + using TIMOUT = RegisterMask<LPTIM2_CFGR, (0x1u << 0x13u)>; + using WAVE = RegisterMask<LPTIM2_CFGR, (0x1u << 0x14u)>; + using PRELOAD = RegisterMask<LPTIM2_CFGR, (0x1u << 0x16u)>; + using COUNTMODE = RegisterMask<LPTIM2_CFGR, (0x1u << 0x17u)>; + using ENC = RegisterMask<LPTIM2_CFGR, (0x1u << 0x18u)>; + }; + struct LPTIM2_CR : public MemRegister<uint32_t, 0x40009410> { + using ENABLE = RegisterMask<LPTIM2_CR, (0x1u << 0x0u)>; + using SNGSTRT = RegisterMask<LPTIM2_CR, (0x1u << 0x1u)>; + using CNTSTRT = RegisterMask<LPTIM2_CR, (0x1u << 0x2u)>; + using COUNTRST = RegisterMask<LPTIM2_CR, (0x1u << 0x3u)>; + using RSTARE = RegisterMask<LPTIM2_CR, (0x1u << 0x4u)>; + }; + struct LPTIM2_CCR1 : public MemRegister<uint32_t, 0x40009414> { + using CCR1 = RegisterMask<LPTIM2_CCR1, (0xffffu << 0x0u)>; + }; + struct LPTIM2_ARR : public MemRegister<uint32_t, 0x40009418> { + using ARR = RegisterMask<LPTIM2_ARR, (0xffffu << 0x0u)>; + }; + struct LPTIM2_CNT : public MemRegister<uint32_t, 0x4000941c> { + using CNT = RegisterMask<LPTIM2_CNT, (0xffffu << 0x0u)>; + }; + struct LPTIM2_CFGR2 : public MemRegister<uint32_t, 0x40009424> { + using IN1SEL = RegisterMask<LPTIM2_CFGR2, (0x3u << 0x0u)>; + using IN2SEL = RegisterMask<LPTIM2_CFGR2, (0x3u << 0x4u)>; + using IC1SEL = RegisterMask<LPTIM2_CFGR2, (0x3u << 0x10u)>; + using IC2SEL = RegisterMask<LPTIM2_CFGR2, (0x3u << 0x14u)>; + }; + struct LPTIM2_RCR : public MemRegister<uint32_t, 0x40009428> { + using REP = RegisterMask<LPTIM2_RCR, (0xffu << 0x0u)>; + }; + struct LPTIM2_CCMR1 : public MemRegister<uint32_t, 0x4000942c> { + using CC1SEL = RegisterMask<LPTIM2_CCMR1, (0x1u << 0x0u)>; + using CC1E = RegisterMask<LPTIM2_CCMR1, (0x1u << 0x1u)>; + using CC1P = RegisterMask<LPTIM2_CCMR1, (0x3u << 0x2u)>; + using IC1PSC = RegisterMask<LPTIM2_CCMR1, (0x3u << 0x8u)>; + using IC1F = RegisterMask<LPTIM2_CCMR1, (0x3u << 0xcu)>; + using CC2SEL = RegisterMask<LPTIM2_CCMR1, (0x1u << 0x10u)>; + using CC2E = RegisterMask<LPTIM2_CCMR1, (0x1u << 0x11u)>; + using CC2P = RegisterMask<LPTIM2_CCMR1, (0x3u << 0x12u)>; + using IC2PSC = RegisterMask<LPTIM2_CCMR1, (0x3u << 0x18u)>; + using IC2F = RegisterMask<LPTIM2_CCMR1, (0x3u << 0x1cu)>; + }; + struct LPTIM2_CCMR2 : public MemRegister<uint32_t, 0x40009430> { + using CC3SEL = RegisterMask<LPTIM2_CCMR2, (0x1u << 0x0u)>; + using CC3E = RegisterMask<LPTIM2_CCMR2, (0x1u << 0x1u)>; + using CC3P = RegisterMask<LPTIM2_CCMR2, (0x3u << 0x2u)>; + using IC3PSC = RegisterMask<LPTIM2_CCMR2, (0x3u << 0x8u)>; + using IC3F = RegisterMask<LPTIM2_CCMR2, (0x3u << 0xcu)>; + using CC4SEL = RegisterMask<LPTIM2_CCMR2, (0x1u << 0x10u)>; + using CC4E = RegisterMask<LPTIM2_CCMR2, (0x1u << 0x11u)>; + using CC4P = RegisterMask<LPTIM2_CCMR2, (0x3u << 0x12u)>; + using IC4PSC = RegisterMask<LPTIM2_CCMR2, (0x3u << 0x18u)>; + using IC4F = RegisterMask<LPTIM2_CCMR2, (0x3u << 0x1cu)>; + }; + struct LPTIM2_CCR2 : public MemRegister<uint32_t, 0x40009434> { + using CCR2 = RegisterMask<LPTIM2_CCR2, (0xffffu << 0x0u)>; + }; + struct LPTIM2_CCR3 : public MemRegister<uint32_t, 0x40009438> { + using CCR3 = RegisterMask<LPTIM2_CCR3, (0xffffu << 0x0u)>; + }; + struct LPTIM2_CCR4 : public MemRegister<uint32_t, 0x4000943c> { + using CCR4 = RegisterMask<LPTIM2_CCR4, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<LPTIM2_ISR_OUTPUT, LPTIM2_ISR_INPUT, LPTIM2_ICR_OUTPUT, LPTIM2_ICR_INPUT, LPTIM2_DIER_OUTPUT, LPTIM2_DIER_INPUT, LPTIM2_CFGR, LPTIM2_CR, LPTIM2_CCR1, LPTIM2_ARR, LPTIM2_CNT, LPTIM2_CFGR2, LPTIM2_RCR, LPTIM2_CCMR1, LPTIM2_CCMR2, LPTIM2_CCR2, LPTIM2_CCR3, LPTIM2_CCR4>; + } + namespace LPTIM3 { + struct LPTIM3_ISR_OUTPUT : public MemRegister<uint32_t, 0x40009000> { + using CC1IF = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x0u)>; + using ARRM = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIG = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x2u)>; + using CMP1OK = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x3u)>; + using ARROK = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x4u)>; + using UP = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x5u)>; + using DOWN = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x6u)>; + using UE = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x7u)>; + using REPOK = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x8u)>; + using CC2IF = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x9u)>; + using CC3IF = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0xau)>; + using CC4IF = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0xbu)>; + using CMP2OK = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x13u)>; + using CMP3OK = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x14u)>; + using CMP4OK = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x15u)>; + using DIEROK = RegisterMask<LPTIM3_ISR_OUTPUT, (0x1u << 0x18u)>; + }; + struct LPTIM3_ISR_INPUT : public MemRegister<uint32_t, 0x40009000> { + using CC1IF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x0u)>; + using ARRM = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x1u)>; + using EXTTRIG = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x2u)>; + using ARROK = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x4u)>; + using UP = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x5u)>; + using DOWN = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x6u)>; + using UE = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x7u)>; + using REPOK = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x8u)>; + using CC2IF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x9u)>; + using CC3IF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0xau)>; + using CC4IF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0xbu)>; + using CC1OF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0xcu)>; + using CC2OF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0xdu)>; + using CC3OF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0xeu)>; + using CC4OF = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0xfu)>; + using DIEROK = RegisterMask<LPTIM3_ISR_INPUT, (0x1u << 0x18u)>; + }; + struct LPTIM3_ICR_OUTPUT : public MemRegister<uint32_t, 0x40009004> { + using CC1CF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x0u)>; + using ARRMCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIGCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x2u)>; + using CMP1OKCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x3u)>; + using ARROKCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x4u)>; + using UPCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x5u)>; + using DOWNCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x6u)>; + using UECF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x7u)>; + using REPOKCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x8u)>; + using CC2CF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x9u)>; + using CC3CF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0xau)>; + using CC4CF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0xbu)>; + using CMP2OKCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x13u)>; + using CMP3OKCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x14u)>; + using CMP4OKCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x15u)>; + using DIEROKCF = RegisterMask<LPTIM3_ICR_OUTPUT, (0x1u << 0x18u)>; + }; + struct LPTIM3_ICR_INPUT : public MemRegister<uint32_t, 0x40009004> { + using CC1CF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x0u)>; + using ARRMCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x1u)>; + using EXTTRIGCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x2u)>; + using ARROKCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x4u)>; + using UPCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x5u)>; + using DOWNCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x6u)>; + using UECF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x7u)>; + using REPOKCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x8u)>; + using CC2CF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x9u)>; + using CC3CF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0xau)>; + using CC4CF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0xbu)>; + using CC1OCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0xcu)>; + using CC2OCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0xdu)>; + using CC3OCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0xeu)>; + using CC4OCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0xfu)>; + using DIEROKCF = RegisterMask<LPTIM3_ICR_INPUT, (0x1u << 0x18u)>; + }; + struct LPTIM3_DIER_OUTPUT : public MemRegister<uint32_t, 0x40009008> { + using CC1IE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x0u)>; + using ARRMIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x1u)>; + using EXTTRIGIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x2u)>; + using CMP1OKIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x3u)>; + using ARROKIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x4u)>; + using UPIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x5u)>; + using DOWNIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x6u)>; + using UEIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x7u)>; + using REPOKIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x8u)>; + using CC2IE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x9u)>; + using CC3IE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0xau)>; + using CC4IE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0xbu)>; + using CMP2OKIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x13u)>; + using CMP3OKIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x14u)>; + using CMP4OKIE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x15u)>; + using UEDE = RegisterMask<LPTIM3_DIER_OUTPUT, (0x1u << 0x17u)>; + }; + struct LPTIM3_DIER_INPUT : public MemRegister<uint32_t, 0x40009008> { + using CC1IE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x0u)>; + using ARRMIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x1u)>; + using EXTTRIGIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x2u)>; + using ARROKIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x4u)>; + using UPIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x5u)>; + using DOWNIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x6u)>; + using UEIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x7u)>; + using REPOKIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x8u)>; + using CC2IE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x9u)>; + using CC3IE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0xau)>; + using CC4IE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0xbu)>; + using CC1OIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0xcu)>; + using CC2OIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0xdu)>; + using CC3OIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0xeu)>; + using CC4OIE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0xfu)>; + using CC1DE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x10u)>; + using UEDE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x17u)>; + using CC2DE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x19u)>; + using CC3DE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x1au)>; + using CC4DE = RegisterMask<LPTIM3_DIER_INPUT, (0x1u << 0x1bu)>; + }; + struct LPTIM3_CFGR : public MemRegister<uint32_t, 0x4000900c> { + using CKSEL = RegisterMask<LPTIM3_CFGR, (0x1u << 0x0u)>; + using CKPOL = RegisterMask<LPTIM3_CFGR, (0x3u << 0x1u)>; + using CKFLT = RegisterMask<LPTIM3_CFGR, (0x3u << 0x3u)>; + using TRGFLT = RegisterMask<LPTIM3_CFGR, (0x3u << 0x6u)>; + using PRESC = RegisterMask<LPTIM3_CFGR, (0x7u << 0x9u)>; + using TRIGSEL = RegisterMask<LPTIM3_CFGR, (0x7u << 0xdu)>; + using TRIGEN = RegisterMask<LPTIM3_CFGR, (0x3u << 0x11u)>; + using TIMOUT = RegisterMask<LPTIM3_CFGR, (0x1u << 0x13u)>; + using WAVE = RegisterMask<LPTIM3_CFGR, (0x1u << 0x14u)>; + using PRELOAD = RegisterMask<LPTIM3_CFGR, (0x1u << 0x16u)>; + using COUNTMODE = RegisterMask<LPTIM3_CFGR, (0x1u << 0x17u)>; + using ENC = RegisterMask<LPTIM3_CFGR, (0x1u << 0x18u)>; + }; + struct LPTIM3_CR : public MemRegister<uint32_t, 0x40009010> { + using ENABLE = RegisterMask<LPTIM3_CR, (0x1u << 0x0u)>; + using SNGSTRT = RegisterMask<LPTIM3_CR, (0x1u << 0x1u)>; + using CNTSTRT = RegisterMask<LPTIM3_CR, (0x1u << 0x2u)>; + using COUNTRST = RegisterMask<LPTIM3_CR, (0x1u << 0x3u)>; + using RSTARE = RegisterMask<LPTIM3_CR, (0x1u << 0x4u)>; + }; + struct LPTIM3_CCR1 : public MemRegister<uint32_t, 0x40009014> { + using CCR1 = RegisterMask<LPTIM3_CCR1, (0xffffu << 0x0u)>; + }; + struct LPTIM3_ARR : public MemRegister<uint32_t, 0x40009018> { + using ARR = RegisterMask<LPTIM3_ARR, (0xffffu << 0x0u)>; + }; + struct LPTIM3_CNT : public MemRegister<uint32_t, 0x4000901c> { + using CNT = RegisterMask<LPTIM3_CNT, (0xffffu << 0x0u)>; + }; + struct LPTIM3_CFGR2 : public MemRegister<uint32_t, 0x40009024> { + using IN1SEL = RegisterMask<LPTIM3_CFGR2, (0x3u << 0x0u)>; + using IN2SEL = RegisterMask<LPTIM3_CFGR2, (0x3u << 0x4u)>; + using IC1SEL = RegisterMask<LPTIM3_CFGR2, (0x3u << 0x10u)>; + using IC2SEL = RegisterMask<LPTIM3_CFGR2, (0x3u << 0x14u)>; + }; + struct LPTIM3_RCR : public MemRegister<uint32_t, 0x40009028> { + using REP = RegisterMask<LPTIM3_RCR, (0xffu << 0x0u)>; + }; + struct LPTIM3_CCMR1 : public MemRegister<uint32_t, 0x4000902c> { + using CC1SEL = RegisterMask<LPTIM3_CCMR1, (0x1u << 0x0u)>; + using CC1E = RegisterMask<LPTIM3_CCMR1, (0x1u << 0x1u)>; + using CC1P = RegisterMask<LPTIM3_CCMR1, (0x3u << 0x2u)>; + using IC1PSC = RegisterMask<LPTIM3_CCMR1, (0x3u << 0x8u)>; + using IC1F = RegisterMask<LPTIM3_CCMR1, (0x3u << 0xcu)>; + using CC2SEL = RegisterMask<LPTIM3_CCMR1, (0x1u << 0x10u)>; + using CC2E = RegisterMask<LPTIM3_CCMR1, (0x1u << 0x11u)>; + using CC2P = RegisterMask<LPTIM3_CCMR1, (0x3u << 0x12u)>; + using IC2PSC = RegisterMask<LPTIM3_CCMR1, (0x3u << 0x18u)>; + using IC2F = RegisterMask<LPTIM3_CCMR1, (0x3u << 0x1cu)>; + }; + struct LPTIM3_CCMR2 : public MemRegister<uint32_t, 0x40009030> { + using CC3SEL = RegisterMask<LPTIM3_CCMR2, (0x1u << 0x0u)>; + using CC3E = RegisterMask<LPTIM3_CCMR2, (0x1u << 0x1u)>; + using CC3P = RegisterMask<LPTIM3_CCMR2, (0x3u << 0x2u)>; + using IC3PSC = RegisterMask<LPTIM3_CCMR2, (0x3u << 0x8u)>; + using IC3F = RegisterMask<LPTIM3_CCMR2, (0x3u << 0xcu)>; + using CC4SEL = RegisterMask<LPTIM3_CCMR2, (0x1u << 0x10u)>; + using CC4E = RegisterMask<LPTIM3_CCMR2, (0x1u << 0x11u)>; + using CC4P = RegisterMask<LPTIM3_CCMR2, (0x3u << 0x12u)>; + using IC4PSC = RegisterMask<LPTIM3_CCMR2, (0x3u << 0x18u)>; + using IC4F = RegisterMask<LPTIM3_CCMR2, (0x3u << 0x1cu)>; + }; + struct LPTIM3_CCR2 : public MemRegister<uint32_t, 0x40009034> { + using CCR2 = RegisterMask<LPTIM3_CCR2, (0xffffu << 0x0u)>; + }; + struct LPTIM3_CCR3 : public MemRegister<uint32_t, 0x40009038> { + using CCR3 = RegisterMask<LPTIM3_CCR3, (0xffffu << 0x0u)>; + }; + struct LPTIM3_CCR4 : public MemRegister<uint32_t, 0x4000903c> { + using CCR4 = RegisterMask<LPTIM3_CCR4, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<LPTIM3_ISR_OUTPUT, LPTIM3_ISR_INPUT, LPTIM3_ICR_OUTPUT, LPTIM3_ICR_INPUT, LPTIM3_DIER_OUTPUT, LPTIM3_DIER_INPUT, LPTIM3_CFGR, LPTIM3_CR, LPTIM3_CCR1, LPTIM3_ARR, LPTIM3_CNT, LPTIM3_CFGR2, LPTIM3_RCR, LPTIM3_CCMR1, LPTIM3_CCMR2, LPTIM3_CCR2, LPTIM3_CCR3, LPTIM3_CCR4>; + } + namespace LPUART1 { + struct CR1 : public MemRegister<uint32_t, 0x40008000> { + using UE = RegisterMask<CR1, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using RXFNEIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using TXFNFIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1, (0x1u << 0xeu)>; + using DEDT = RegisterMask<CR1, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1, (0x1fu << 0x15u)>; + using M1 = RegisterMask<CR1, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1, (0x1u << 0x1du)>; + using TXFEIE = RegisterMask<CR1, (0x1u << 0x1eu)>; + using RXFFIE = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR1_ALTERNATE : public MemRegister<uint32_t, 0x40008000> { + using UE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x4u)>; + using RXNEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1_ALTERNATE, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1_ALTERNATE, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xeu)>; + using DEDT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x15u)>; + using M1 = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1du)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40008004> { + using ADDM7 = RegisterMask<CR2, (0x1u << 0x4u)>; + using STOP = RegisterMask<CR2, (0x3u << 0xcu)>; + using SWAP = RegisterMask<CR2, (0x1u << 0xfu)>; + using RXINV = RegisterMask<CR2, (0x1u << 0x10u)>; + using TXINV = RegisterMask<CR2, (0x1u << 0x11u)>; + using DATAINV = RegisterMask<CR2, (0x1u << 0x12u)>; + using MSBFIRST = RegisterMask<CR2, (0x1u << 0x13u)>; + using ADD = RegisterMask<CR2, (0xffu << 0x18u)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40008008> { + using EIE = RegisterMask<CR3, (0x1u << 0x0u)>; + using HDSEL = RegisterMask<CR3, (0x1u << 0x3u)>; + using DMAR = RegisterMask<CR3, (0x1u << 0x6u)>; + using DMAT = RegisterMask<CR3, (0x1u << 0x7u)>; + using RTSE = RegisterMask<CR3, (0x1u << 0x8u)>; + using CTSE = RegisterMask<CR3, (0x1u << 0x9u)>; + using CTSIE = RegisterMask<CR3, (0x1u << 0xau)>; + using OVRDIS = RegisterMask<CR3, (0x1u << 0xcu)>; + using DDRE = RegisterMask<CR3, (0x1u << 0xdu)>; + using DEM = RegisterMask<CR3, (0x1u << 0xeu)>; + using DEP = RegisterMask<CR3, (0x1u << 0xfu)>; + using WUS0 = RegisterMask<CR3, (0x1u << 0x14u)>; + using WUS1 = RegisterMask<CR3, (0x1u << 0x15u)>; + using WUFIE = RegisterMask<CR3, (0x1u << 0x16u)>; + using TXFTIE = RegisterMask<CR3, (0x1u << 0x17u)>; + using RXFTCFG = RegisterMask<CR3, (0x7u << 0x19u)>; + using RXFTIE = RegisterMask<CR3, (0x1u << 0x1cu)>; + using TXFTCFG = RegisterMask<CR3, (0x7u << 0x1du)>; + }; + struct BRR : public MemRegister<uint32_t, 0x4000800c> { + using val = RegisterMask<BRR, (0xfffffu << 0x0u)>; + }; + struct RQR : public MemRegister<uint32_t, 0x40008018> { + using SBKRQ = RegisterMask<RQR, (0x1u << 0x1u)>; + using MMRQ = RegisterMask<RQR, (0x1u << 0x2u)>; + using RXFRQ = RegisterMask<RQR, (0x1u << 0x3u)>; + using TXFRQ = RegisterMask<RQR, (0x1u << 0x4u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x4000801c> { + using PE = RegisterMask<ISR, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR, (0x1u << 0x4u)>; + using RXFNE = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TXFNF = RegisterMask<ISR, (0x1u << 0x7u)>; + using CTSIF = RegisterMask<ISR, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR, (0x1u << 0x16u)>; + using TXFE = RegisterMask<ISR, (0x1u << 0x17u)>; + using RXFF = RegisterMask<ISR, (0x1u << 0x18u)>; + using RXFT = RegisterMask<ISR, (0x1u << 0x1au)>; + using TXFT = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct ISR_ALTERNATE : public MemRegister<uint32_t, 0x4000801c> { + using PE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x4u)>; + using RXNE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR_ALTERNATE, (0x1u << 0x6u)>; + using TXE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x7u)>; + using CTSIF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR_ALTERNATE, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR_ALTERNATE, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR_ALTERNATE, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x16u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40008020> { + using PECF = RegisterMask<ICR, (0x1u << 0x0u)>; + using FECF = RegisterMask<ICR, (0x1u << 0x1u)>; + using NECF = RegisterMask<ICR, (0x1u << 0x2u)>; + using ORECF = RegisterMask<ICR, (0x1u << 0x3u)>; + using IDLECF = RegisterMask<ICR, (0x1u << 0x4u)>; + using TCCF = RegisterMask<ICR, (0x1u << 0x6u)>; + using CTSCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using CMCF = RegisterMask<ICR, (0x1u << 0x11u)>; + using WUCF = RegisterMask<ICR, (0x1u << 0x14u)>; + }; + struct RDR : public MemRegister<uint32_t, 0x40008024> { + using val = RegisterMask<RDR, (0x1ffu << 0x0u)>; + }; + struct TDR : public MemRegister<uint32_t, 0x40008028> { + using val = RegisterMask<TDR, (0x1ffu << 0x0u)>; + }; + struct PRESC : public MemRegister<uint32_t, 0x4000802c> { + using PRESCALER = RegisterMask<PRESC, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR1_ALTERNATE, CR2, CR3, BRR, RQR, ISR, ISR_ALTERNATE, ICR, RDR, TDR, PRESC>; + } + namespace LPUART2 { + struct CR1 : public MemRegister<uint32_t, 0x40008400> { + using UE = RegisterMask<CR1, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using RXFNEIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using TXFNFIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1, (0x1u << 0xeu)>; + using DEDT = RegisterMask<CR1, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1, (0x1fu << 0x15u)>; + using M1 = RegisterMask<CR1, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1, (0x1u << 0x1du)>; + using TXFEIE = RegisterMask<CR1, (0x1u << 0x1eu)>; + using RXFFIE = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR1_ALTERNATE : public MemRegister<uint32_t, 0x40008400> { + using UE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x4u)>; + using RXNEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1_ALTERNATE, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1_ALTERNATE, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xeu)>; + using DEDT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x15u)>; + using M1 = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1du)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40008404> { + using ADDM7 = RegisterMask<CR2, (0x1u << 0x4u)>; + using STOP = RegisterMask<CR2, (0x3u << 0xcu)>; + using SWAP = RegisterMask<CR2, (0x1u << 0xfu)>; + using RXINV = RegisterMask<CR2, (0x1u << 0x10u)>; + using TXINV = RegisterMask<CR2, (0x1u << 0x11u)>; + using DATAINV = RegisterMask<CR2, (0x1u << 0x12u)>; + using MSBFIRST = RegisterMask<CR2, (0x1u << 0x13u)>; + using ADD = RegisterMask<CR2, (0xffu << 0x18u)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40008408> { + using EIE = RegisterMask<CR3, (0x1u << 0x0u)>; + using HDSEL = RegisterMask<CR3, (0x1u << 0x3u)>; + using DMAR = RegisterMask<CR3, (0x1u << 0x6u)>; + using DMAT = RegisterMask<CR3, (0x1u << 0x7u)>; + using RTSE = RegisterMask<CR3, (0x1u << 0x8u)>; + using CTSE = RegisterMask<CR3, (0x1u << 0x9u)>; + using CTSIE = RegisterMask<CR3, (0x1u << 0xau)>; + using OVRDIS = RegisterMask<CR3, (0x1u << 0xcu)>; + using DDRE = RegisterMask<CR3, (0x1u << 0xdu)>; + using DEM = RegisterMask<CR3, (0x1u << 0xeu)>; + using DEP = RegisterMask<CR3, (0x1u << 0xfu)>; + using WUS0 = RegisterMask<CR3, (0x1u << 0x14u)>; + using WUS1 = RegisterMask<CR3, (0x1u << 0x15u)>; + using WUFIE = RegisterMask<CR3, (0x1u << 0x16u)>; + using TXFTIE = RegisterMask<CR3, (0x1u << 0x17u)>; + using RXFTCFG = RegisterMask<CR3, (0x7u << 0x19u)>; + using RXFTIE = RegisterMask<CR3, (0x1u << 0x1cu)>; + using TXFTCFG = RegisterMask<CR3, (0x7u << 0x1du)>; + }; + struct BRR : public MemRegister<uint32_t, 0x4000840c> { + using val = RegisterMask<BRR, (0xfffffu << 0x0u)>; + }; + struct RQR : public MemRegister<uint32_t, 0x40008418> { + using SBKRQ = RegisterMask<RQR, (0x1u << 0x1u)>; + using MMRQ = RegisterMask<RQR, (0x1u << 0x2u)>; + using RXFRQ = RegisterMask<RQR, (0x1u << 0x3u)>; + using TXFRQ = RegisterMask<RQR, (0x1u << 0x4u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x4000841c> { + using PE = RegisterMask<ISR, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR, (0x1u << 0x4u)>; + using RXFNE = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TXFNF = RegisterMask<ISR, (0x1u << 0x7u)>; + using CTSIF = RegisterMask<ISR, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR, (0x1u << 0x16u)>; + using TXFE = RegisterMask<ISR, (0x1u << 0x17u)>; + using RXFF = RegisterMask<ISR, (0x1u << 0x18u)>; + using RXFT = RegisterMask<ISR, (0x1u << 0x1au)>; + using TXFT = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct ISR_ALTERNATE : public MemRegister<uint32_t, 0x4000841c> { + using PE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x4u)>; + using RXNE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR_ALTERNATE, (0x1u << 0x6u)>; + using TXE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x7u)>; + using CTSIF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR_ALTERNATE, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR_ALTERNATE, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR_ALTERNATE, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x16u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40008420> { + using PECF = RegisterMask<ICR, (0x1u << 0x0u)>; + using FECF = RegisterMask<ICR, (0x1u << 0x1u)>; + using NECF = RegisterMask<ICR, (0x1u << 0x2u)>; + using ORECF = RegisterMask<ICR, (0x1u << 0x3u)>; + using IDLECF = RegisterMask<ICR, (0x1u << 0x4u)>; + using TCCF = RegisterMask<ICR, (0x1u << 0x6u)>; + using CTSCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using CMCF = RegisterMask<ICR, (0x1u << 0x11u)>; + using WUCF = RegisterMask<ICR, (0x1u << 0x14u)>; + }; + struct RDR : public MemRegister<uint32_t, 0x40008424> { + using val = RegisterMask<RDR, (0x1ffu << 0x0u)>; + }; + struct TDR : public MemRegister<uint32_t, 0x40008428> { + using val = RegisterMask<TDR, (0x1ffu << 0x0u)>; + }; + struct PRESC : public MemRegister<uint32_t, 0x4000842c> { + using PRESCALER = RegisterMask<PRESC, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR1_ALTERNATE, CR2, CR3, BRR, RQR, ISR, ISR_ALTERNATE, ICR, RDR, TDR, PRESC>; + } + namespace LPUART3 { + struct CR1 : public MemRegister<uint32_t, 0x40008c00> { + using UE = RegisterMask<CR1, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using RXFNEIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using TXFNFIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1, (0x1u << 0xeu)>; + using DEDT = RegisterMask<CR1, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1, (0x1fu << 0x15u)>; + using M1 = RegisterMask<CR1, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1, (0x1u << 0x1du)>; + using TXFEIE = RegisterMask<CR1, (0x1u << 0x1eu)>; + using RXFFIE = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR1_ALTERNATE : public MemRegister<uint32_t, 0x40008c00> { + using UE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x4u)>; + using RXNEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1_ALTERNATE, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1_ALTERNATE, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xeu)>; + using DEDT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x15u)>; + using M1 = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1du)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40008c04> { + using ADDM7 = RegisterMask<CR2, (0x1u << 0x4u)>; + using STOP = RegisterMask<CR2, (0x3u << 0xcu)>; + using SWAP = RegisterMask<CR2, (0x1u << 0xfu)>; + using RXINV = RegisterMask<CR2, (0x1u << 0x10u)>; + using TXINV = RegisterMask<CR2, (0x1u << 0x11u)>; + using DATAINV = RegisterMask<CR2, (0x1u << 0x12u)>; + using MSBFIRST = RegisterMask<CR2, (0x1u << 0x13u)>; + using ADD = RegisterMask<CR2, (0xffu << 0x18u)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40008c08> { + using EIE = RegisterMask<CR3, (0x1u << 0x0u)>; + using HDSEL = RegisterMask<CR3, (0x1u << 0x3u)>; + using DMAR = RegisterMask<CR3, (0x1u << 0x6u)>; + using DMAT = RegisterMask<CR3, (0x1u << 0x7u)>; + using RTSE = RegisterMask<CR3, (0x1u << 0x8u)>; + using CTSE = RegisterMask<CR3, (0x1u << 0x9u)>; + using CTSIE = RegisterMask<CR3, (0x1u << 0xau)>; + using OVRDIS = RegisterMask<CR3, (0x1u << 0xcu)>; + using DDRE = RegisterMask<CR3, (0x1u << 0xdu)>; + using DEM = RegisterMask<CR3, (0x1u << 0xeu)>; + using DEP = RegisterMask<CR3, (0x1u << 0xfu)>; + using WUS0 = RegisterMask<CR3, (0x1u << 0x14u)>; + using WUS1 = RegisterMask<CR3, (0x1u << 0x15u)>; + using WUFIE = RegisterMask<CR3, (0x1u << 0x16u)>; + using TXFTIE = RegisterMask<CR3, (0x1u << 0x17u)>; + using RXFTCFG = RegisterMask<CR3, (0x7u << 0x19u)>; + using RXFTIE = RegisterMask<CR3, (0x1u << 0x1cu)>; + using TXFTCFG = RegisterMask<CR3, (0x7u << 0x1du)>; + }; + struct BRR : public MemRegister<uint32_t, 0x40008c0c> { + using val = RegisterMask<BRR, (0xfffffu << 0x0u)>; + }; + struct RQR : public MemRegister<uint32_t, 0x40008c18> { + using SBKRQ = RegisterMask<RQR, (0x1u << 0x1u)>; + using MMRQ = RegisterMask<RQR, (0x1u << 0x2u)>; + using RXFRQ = RegisterMask<RQR, (0x1u << 0x3u)>; + using TXFRQ = RegisterMask<RQR, (0x1u << 0x4u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x40008c1c> { + using PE = RegisterMask<ISR, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR, (0x1u << 0x4u)>; + using RXFNE = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TXFNF = RegisterMask<ISR, (0x1u << 0x7u)>; + using CTSIF = RegisterMask<ISR, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR, (0x1u << 0x16u)>; + using TXFE = RegisterMask<ISR, (0x1u << 0x17u)>; + using RXFF = RegisterMask<ISR, (0x1u << 0x18u)>; + using RXFT = RegisterMask<ISR, (0x1u << 0x1au)>; + using TXFT = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct ISR_ALTERNATE : public MemRegister<uint32_t, 0x40008c1c> { + using PE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x4u)>; + using RXNE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR_ALTERNATE, (0x1u << 0x6u)>; + using TXE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x7u)>; + using CTSIF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR_ALTERNATE, (0x1u << 0xau)>; + using BUSY = RegisterMask<ISR_ALTERNATE, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR_ALTERNATE, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x16u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40008c20> { + using PECF = RegisterMask<ICR, (0x1u << 0x0u)>; + using FECF = RegisterMask<ICR, (0x1u << 0x1u)>; + using NECF = RegisterMask<ICR, (0x1u << 0x2u)>; + using ORECF = RegisterMask<ICR, (0x1u << 0x3u)>; + using IDLECF = RegisterMask<ICR, (0x1u << 0x4u)>; + using TCCF = RegisterMask<ICR, (0x1u << 0x6u)>; + using CTSCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using CMCF = RegisterMask<ICR, (0x1u << 0x11u)>; + using WUCF = RegisterMask<ICR, (0x1u << 0x14u)>; + }; + struct RDR : public MemRegister<uint32_t, 0x40008c24> { + using val = RegisterMask<RDR, (0x1ffu << 0x0u)>; + }; + struct TDR : public MemRegister<uint32_t, 0x40008c28> { + using val = RegisterMask<TDR, (0x1ffu << 0x0u)>; + }; + struct PRESC : public MemRegister<uint32_t, 0x40008c2c> { + using PRESCALER = RegisterMask<PRESC, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR1_ALTERNATE, CR2, CR3, BRR, RQR, ISR, ISR_ALTERNATE, ICR, RDR, TDR, PRESC>; + } + namespace OPAMP { + struct CSR : public MemRegister<uint32_t, 0x40007800> { + using OPAEN = RegisterMask<CSR, (0x1u << 0x0u)>; + using OPALPM = RegisterMask<CSR, (0x1u << 0x1u)>; + using OPAMODE = RegisterMask<CSR, (0x3u << 0x2u)>; + using PGA_GAIN = RegisterMask<CSR, (0x3u << 0x4u)>; + using VM_SEL = RegisterMask<CSR, (0x3u << 0x8u)>; + using VP_SEL = RegisterMask<CSR, (0x1u << 0xau)>; + using CALON = RegisterMask<CSR, (0x1u << 0xcu)>; + using CALSEL = RegisterMask<CSR, (0x1u << 0xdu)>; + using USERTRIM = RegisterMask<CSR, (0x1u << 0xeu)>; + using CALOUT = RegisterMask<CSR, (0x1u << 0xfu)>; + using OPA_RANGE = RegisterMask<CSR, (0x1u << 0x1fu)>; + }; + struct OTR : public MemRegister<uint32_t, 0x40007804> { + using TRIMOFFSETN = RegisterMask<OTR, (0x1fu << 0x0u)>; + using TRIMOFFSETP = RegisterMask<OTR, (0x1fu << 0x8u)>; + }; + struct LPOTR : public MemRegister<uint32_t, 0x40007808> { + using TRIMLPOFFSETN = RegisterMask<LPOTR, (0x1fu << 0x0u)>; + using TRIMLPOFFSETP = RegisterMask<LPOTR, (0x1fu << 0x8u)>; + }; + using ALL = RegisterGroup<CSR, OTR, LPOTR>; + } + namespace PWR { + struct CR1 : public MemRegister<uint32_t, 0x40007000> { + using LPMS = RegisterMask<CR1, (0x7u << 0x0u)>; + using FPD_STOP = RegisterMask<CR1, (0x1u << 0x3u)>; + using FPD_LPRUN = RegisterMask<CR1, (0x1u << 0x4u)>; + using FPD_LPSLP = RegisterMask<CR1, (0x1u << 0x5u)>; + using DBP = RegisterMask<CR1, (0x1u << 0x8u)>; + using VOS = RegisterMask<CR1, (0x3u << 0x9u)>; + using LPR = RegisterMask<CR1, (0x1u << 0xeu)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40007004> { + using PVDE = RegisterMask<CR2, (0x1u << 0x0u)>; + using PLS = RegisterMask<CR2, (0x7u << 0x1u)>; + using PVME1 = RegisterMask<CR2, (0x1u << 0x4u)>; + using PVME3 = RegisterMask<CR2, (0x1u << 0x5u)>; + using PVME4 = RegisterMask<CR2, (0x1u << 0x6u)>; + using USV = RegisterMask<CR2, (0x1u << 0xau)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40007008> { + using EWUP1 = RegisterMask<CR3, (0x1u << 0x0u)>; + using EWUP2 = RegisterMask<CR3, (0x1u << 0x1u)>; + using EWUP3 = RegisterMask<CR3, (0x1u << 0x2u)>; + using EWUP4 = RegisterMask<CR3, (0x1u << 0x3u)>; + using EWUP5 = RegisterMask<CR3, (0x1u << 0x4u)>; + using EWUP7 = RegisterMask<CR3, (0x1u << 0x6u)>; + using RRS = RegisterMask<CR3, (0x1u << 0x8u)>; + using ENULP = RegisterMask<CR3, (0x1u << 0x9u)>; + using APC = RegisterMask<CR3, (0x1u << 0xau)>; + using EIWUL = RegisterMask<CR3, (0x1u << 0xfu)>; + }; + struct CR4 : public MemRegister<uint32_t, 0x4000700c> { + using WP1 = RegisterMask<CR4, (0x1u << 0x0u)>; + using WP2 = RegisterMask<CR4, (0x1u << 0x1u)>; + using WP3 = RegisterMask<CR4, (0x1u << 0x2u)>; + using WP4 = RegisterMask<CR4, (0x1u << 0x3u)>; + using WP5 = RegisterMask<CR4, (0x1u << 0x4u)>; + using WP7 = RegisterMask<CR4, (0x1u << 0x6u)>; + using VBE = RegisterMask<CR4, (0x1u << 0x8u)>; + using VBRS = RegisterMask<CR4, (0x1u << 0x9u)>; + }; + struct SR1 : public MemRegister<uint32_t, 0x40007010> { + using WUF1 = RegisterMask<SR1, (0x1u << 0x0u)>; + using WUF2 = RegisterMask<SR1, (0x1u << 0x1u)>; + using WUF3 = RegisterMask<SR1, (0x1u << 0x2u)>; + using WUF4 = RegisterMask<SR1, (0x1u << 0x3u)>; + using WUF5 = RegisterMask<SR1, (0x1u << 0x4u)>; + using WUF7 = RegisterMask<SR1, (0x1u << 0x6u)>; + using SBF = RegisterMask<SR1, (0x1u << 0x8u)>; + using STOPF = RegisterMask<SR1, (0x7u << 0x9u)>; + using WUFI = RegisterMask<SR1, (0x1u << 0xfu)>; + }; + struct SR2 : public MemRegister<uint32_t, 0x40007014> { + using FLASH_RDY = RegisterMask<SR2, (0x1u << 0x7u)>; + using REGLPS = RegisterMask<SR2, (0x1u << 0x8u)>; + using REGLPF = RegisterMask<SR2, (0x1u << 0x9u)>; + using VOSF = RegisterMask<SR2, (0x1u << 0xau)>; + using PVDO = RegisterMask<SR2, (0x1u << 0xbu)>; + using PVMO1 = RegisterMask<SR2, (0x1u << 0xcu)>; + using PVMO3 = RegisterMask<SR2, (0x1u << 0xeu)>; + using PVMO4 = RegisterMask<SR2, (0x1u << 0xfu)>; + }; + struct SCR : public MemRegister<uint32_t, 0x40007018> { + using CWUF1 = RegisterMask<SCR, (0x1u << 0x0u)>; + using CWUF2 = RegisterMask<SCR, (0x1u << 0x1u)>; + using CWUF3 = RegisterMask<SCR, (0x1u << 0x2u)>; + using CWUF4 = RegisterMask<SCR, (0x1u << 0x3u)>; + using CWUF5 = RegisterMask<SCR, (0x1u << 0x4u)>; + using CWUF7 = RegisterMask<SCR, (0x1u << 0x6u)>; + using CSBF = RegisterMask<SCR, (0x1u << 0x8u)>; + }; + struct PUCRA : public MemRegister<uint32_t, 0x40007020> { + using PU0 = RegisterMask<PUCRA, (0x1u << 0x0u)>; + using PU1 = RegisterMask<PUCRA, (0x1u << 0x1u)>; + using PU2 = RegisterMask<PUCRA, (0x1u << 0x2u)>; + using PU3 = RegisterMask<PUCRA, (0x1u << 0x3u)>; + using PU4 = RegisterMask<PUCRA, (0x1u << 0x4u)>; + using PU5 = RegisterMask<PUCRA, (0x1u << 0x5u)>; + using PU6 = RegisterMask<PUCRA, (0x1u << 0x6u)>; + using PU7 = RegisterMask<PUCRA, (0x1u << 0x7u)>; + using PU8 = RegisterMask<PUCRA, (0x1u << 0x8u)>; + using PU9 = RegisterMask<PUCRA, (0x1u << 0x9u)>; + using PU10 = RegisterMask<PUCRA, (0x1u << 0xau)>; + using PU11 = RegisterMask<PUCRA, (0x1u << 0xbu)>; + using PU12 = RegisterMask<PUCRA, (0x1u << 0xcu)>; + using PU13 = RegisterMask<PUCRA, (0x1u << 0xdu)>; + using PU14 = RegisterMask<PUCRA, (0x1u << 0xeu)>; + using PU15 = RegisterMask<PUCRA, (0x1u << 0xfu)>; + }; + struct PDCRA : public MemRegister<uint32_t, 0x40007024> { + using PD0 = RegisterMask<PDCRA, (0x1u << 0x0u)>; + using PD1 = RegisterMask<PDCRA, (0x1u << 0x1u)>; + using PD2 = RegisterMask<PDCRA, (0x1u << 0x2u)>; + using PD3 = RegisterMask<PDCRA, (0x1u << 0x3u)>; + using PD4 = RegisterMask<PDCRA, (0x1u << 0x4u)>; + using PD5 = RegisterMask<PDCRA, (0x1u << 0x5u)>; + using PD6 = RegisterMask<PDCRA, (0x1u << 0x6u)>; + using PD7 = RegisterMask<PDCRA, (0x1u << 0x7u)>; + using PD8 = RegisterMask<PDCRA, (0x1u << 0x8u)>; + using PD9 = RegisterMask<PDCRA, (0x1u << 0x9u)>; + using PD10 = RegisterMask<PDCRA, (0x1u << 0xau)>; + using PD11 = RegisterMask<PDCRA, (0x1u << 0xbu)>; + using PD12 = RegisterMask<PDCRA, (0x1u << 0xcu)>; + using PD13 = RegisterMask<PDCRA, (0x1u << 0xdu)>; + using PD14 = RegisterMask<PDCRA, (0x1u << 0xeu)>; + using PD15 = RegisterMask<PDCRA, (0x1u << 0xfu)>; + }; + struct PUCRB : public MemRegister<uint32_t, 0x40007028> { + using PU0 = RegisterMask<PUCRB, (0x1u << 0x0u)>; + using PU1 = RegisterMask<PUCRB, (0x1u << 0x1u)>; + using PU2 = RegisterMask<PUCRB, (0x1u << 0x2u)>; + using PU3 = RegisterMask<PUCRB, (0x1u << 0x3u)>; + using PU4 = RegisterMask<PUCRB, (0x1u << 0x4u)>; + using PU5 = RegisterMask<PUCRB, (0x1u << 0x5u)>; + using PU6 = RegisterMask<PUCRB, (0x1u << 0x6u)>; + using PU7 = RegisterMask<PUCRB, (0x1u << 0x7u)>; + using PU8 = RegisterMask<PUCRB, (0x1u << 0x8u)>; + using PU9 = RegisterMask<PUCRB, (0x1u << 0x9u)>; + using PU10 = RegisterMask<PUCRB, (0x1u << 0xau)>; + using PU11 = RegisterMask<PUCRB, (0x1u << 0xbu)>; + using PU12 = RegisterMask<PUCRB, (0x1u << 0xcu)>; + using PU13 = RegisterMask<PUCRB, (0x1u << 0xdu)>; + using PU14 = RegisterMask<PUCRB, (0x1u << 0xeu)>; + using PU15 = RegisterMask<PUCRB, (0x1u << 0xfu)>; + }; + struct PDCRB : public MemRegister<uint32_t, 0x4000702c> { + using PD0 = RegisterMask<PDCRB, (0x1u << 0x0u)>; + using PD1 = RegisterMask<PDCRB, (0x1u << 0x1u)>; + using PD2 = RegisterMask<PDCRB, (0x1u << 0x2u)>; + using PD3 = RegisterMask<PDCRB, (0x1u << 0x3u)>; + using PD4 = RegisterMask<PDCRB, (0x1u << 0x4u)>; + using PD5 = RegisterMask<PDCRB, (0x1u << 0x5u)>; + using PD6 = RegisterMask<PDCRB, (0x1u << 0x6u)>; + using PD7 = RegisterMask<PDCRB, (0x1u << 0x7u)>; + using PD8 = RegisterMask<PDCRB, (0x1u << 0x8u)>; + using PD9 = RegisterMask<PDCRB, (0x1u << 0x9u)>; + using PD10 = RegisterMask<PDCRB, (0x1u << 0xau)>; + using PD11 = RegisterMask<PDCRB, (0x1u << 0xbu)>; + using PD12 = RegisterMask<PDCRB, (0x1u << 0xcu)>; + using PD13 = RegisterMask<PDCRB, (0x1u << 0xdu)>; + using PD14 = RegisterMask<PDCRB, (0x1u << 0xeu)>; + using PD15 = RegisterMask<PDCRB, (0x1u << 0xfu)>; + }; + struct PUCRC : public MemRegister<uint32_t, 0x40007030> { + using PU0 = RegisterMask<PUCRC, (0x1u << 0x0u)>; + using PU1 = RegisterMask<PUCRC, (0x1u << 0x1u)>; + using PU2 = RegisterMask<PUCRC, (0x1u << 0x2u)>; + using PU3 = RegisterMask<PUCRC, (0x1u << 0x3u)>; + using PU4 = RegisterMask<PUCRC, (0x1u << 0x4u)>; + using PU5 = RegisterMask<PUCRC, (0x1u << 0x5u)>; + using PU6 = RegisterMask<PUCRC, (0x1u << 0x6u)>; + using PU7 = RegisterMask<PUCRC, (0x1u << 0x7u)>; + using PU8 = RegisterMask<PUCRC, (0x1u << 0x8u)>; + using PU9 = RegisterMask<PUCRC, (0x1u << 0x9u)>; + using PU10 = RegisterMask<PUCRC, (0x1u << 0xau)>; + using PU11 = RegisterMask<PUCRC, (0x1u << 0xbu)>; + using PU12 = RegisterMask<PUCRC, (0x1u << 0xcu)>; + using PU13 = RegisterMask<PUCRC, (0x1u << 0xdu)>; + using PU14 = RegisterMask<PUCRC, (0x1u << 0xeu)>; + using PU15 = RegisterMask<PUCRC, (0x1u << 0xfu)>; + }; + struct PDCRC : public MemRegister<uint32_t, 0x40007034> { + using PD0 = RegisterMask<PDCRC, (0x1u << 0x0u)>; + using PD1 = RegisterMask<PDCRC, (0x1u << 0x1u)>; + using PD2 = RegisterMask<PDCRC, (0x1u << 0x2u)>; + using PD3 = RegisterMask<PDCRC, (0x1u << 0x3u)>; + using PD4 = RegisterMask<PDCRC, (0x1u << 0x4u)>; + using PD5 = RegisterMask<PDCRC, (0x1u << 0x5u)>; + using PD6 = RegisterMask<PDCRC, (0x1u << 0x6u)>; + using PD7 = RegisterMask<PDCRC, (0x1u << 0x7u)>; + using PD8 = RegisterMask<PDCRC, (0x1u << 0x8u)>; + using PD9 = RegisterMask<PDCRC, (0x1u << 0x9u)>; + using PD10 = RegisterMask<PDCRC, (0x1u << 0xau)>; + using PD11 = RegisterMask<PDCRC, (0x1u << 0xbu)>; + using PD12 = RegisterMask<PDCRC, (0x1u << 0xcu)>; + using PD13 = RegisterMask<PDCRC, (0x1u << 0xdu)>; + using PD14 = RegisterMask<PDCRC, (0x1u << 0xeu)>; + using PD15 = RegisterMask<PDCRC, (0x1u << 0xfu)>; + }; + struct PUCRD : public MemRegister<uint32_t, 0x40007038> { + using PU0 = RegisterMask<PUCRD, (0x1u << 0x0u)>; + using PU1 = RegisterMask<PUCRD, (0x1u << 0x1u)>; + using PU2 = RegisterMask<PUCRD, (0x1u << 0x2u)>; + using PU3 = RegisterMask<PUCRD, (0x1u << 0x3u)>; + using PU4 = RegisterMask<PUCRD, (0x1u << 0x4u)>; + using PU5 = RegisterMask<PUCRD, (0x1u << 0x5u)>; + using PU6 = RegisterMask<PUCRD, (0x1u << 0x6u)>; + using PU8 = RegisterMask<PUCRD, (0x1u << 0x8u)>; + using PU9 = RegisterMask<PUCRD, (0x1u << 0x9u)>; + using PU10 = RegisterMask<PUCRD, (0x1u << 0xau)>; + using PU11 = RegisterMask<PUCRD, (0x1u << 0xbu)>; + using PU12 = RegisterMask<PUCRD, (0x1u << 0xcu)>; + using PU13 = RegisterMask<PUCRD, (0x1u << 0xdu)>; + }; + struct PDCRD : public MemRegister<uint32_t, 0x4000703c> { + using PD0 = RegisterMask<PDCRD, (0x1u << 0x0u)>; + using PD1 = RegisterMask<PDCRD, (0x1u << 0x1u)>; + using PD2 = RegisterMask<PDCRD, (0x1u << 0x2u)>; + using PD3 = RegisterMask<PDCRD, (0x1u << 0x3u)>; + using PD4 = RegisterMask<PDCRD, (0x1u << 0x4u)>; + using PD5 = RegisterMask<PDCRD, (0x1u << 0x5u)>; + using PD6 = RegisterMask<PDCRD, (0x1u << 0x6u)>; + using PD8 = RegisterMask<PDCRD, (0x1u << 0x8u)>; + using PD9 = RegisterMask<PDCRD, (0x1u << 0x9u)>; + using PD10 = RegisterMask<PDCRD, (0x1u << 0xau)>; + using PD11 = RegisterMask<PDCRD, (0x1u << 0xbu)>; + using PD12 = RegisterMask<PDCRD, (0x1u << 0xcu)>; + using PD13 = RegisterMask<PDCRD, (0x1u << 0xdu)>; + }; + struct PUCRE : public MemRegister<uint32_t, 0x40007040> { + using PU3 = RegisterMask<PUCRE, (0x1u << 0x3u)>; + using PU7 = RegisterMask<PUCRE, (0x1u << 0x7u)>; + using PU8 = RegisterMask<PUCRE, (0x1u << 0x8u)>; + using PU9 = RegisterMask<PUCRE, (0x1u << 0x9u)>; + }; + struct PDCRE : public MemRegister<uint32_t, 0x40007044> { + using PD3 = RegisterMask<PDCRE, (0x1u << 0x3u)>; + using PD7 = RegisterMask<PDCRE, (0x1u << 0x7u)>; + using PD8 = RegisterMask<PDCRE, (0x1u << 0x8u)>; + using PD9 = RegisterMask<PDCRE, (0x1u << 0x9u)>; + }; + struct PUCRF : public MemRegister<uint32_t, 0x40007048> { + using PU0 = RegisterMask<PUCRF, (0x1u << 0x0u)>; + using PU1 = RegisterMask<PUCRF, (0x1u << 0x1u)>; + using PU2 = RegisterMask<PUCRF, (0x1u << 0x2u)>; + using PU3 = RegisterMask<PUCRF, (0x1u << 0x3u)>; + }; + struct PDCRF : public MemRegister<uint32_t, 0x4000704c> { + using PD0 = RegisterMask<PDCRF, (0x1u << 0x0u)>; + using PD1 = RegisterMask<PDCRF, (0x1u << 0x1u)>; + using PD2 = RegisterMask<PDCRF, (0x1u << 0x2u)>; + using PD3 = RegisterMask<PDCRF, (0x1u << 0x3u)>; + }; + using ALL = RegisterGroup<CR1, CR2, CR3, CR4, SR1, SR2, SCR, PUCRA, PDCRA, PUCRB, PDCRB, PUCRC, PDCRC, PUCRD, PDCRD, PUCRE, PDCRE, PUCRF, PDCRF>; + } + namespace RCC { + struct CR : public MemRegister<uint32_t, 0x40021000> { + using MSION = RegisterMask<CR, (0x1u << 0x0u)>; + using MSIRDY = RegisterMask<CR, (0x1u << 0x1u)>; + using MSIPLLEN = RegisterMask<CR, (0x1u << 0x2u)>; + using MSIRGSEL = RegisterMask<CR, (0x1u << 0x3u)>; + using MSIRANGE = RegisterMask<CR, (0xfu << 0x4u)>; + using HSION = RegisterMask<CR, (0x1u << 0x8u)>; + using HSIKERON = RegisterMask<CR, (0x1u << 0x9u)>; + using HSIRDY = RegisterMask<CR, (0x1u << 0xau)>; + using HSIASFS = RegisterMask<CR, (0x1u << 0xbu)>; + using HSEON = RegisterMask<CR, (0x1u << 0x10u)>; + using HSERDY = RegisterMask<CR, (0x1u << 0x11u)>; + using HSEBYP = RegisterMask<CR, (0x1u << 0x12u)>; + using CSSON = RegisterMask<CR, (0x1u << 0x13u)>; + using PLLON = RegisterMask<CR, (0x1u << 0x18u)>; + using PLLRDY = RegisterMask<CR, (0x1u << 0x19u)>; + }; + struct ICSCR : public MemRegister<uint32_t, 0x40021004> { + using MSICAL = RegisterMask<ICSCR, (0xffu << 0x0u)>; + using MSITRIM = RegisterMask<ICSCR, (0xffu << 0x8u)>; + using HSICAL = RegisterMask<ICSCR, (0xffu << 0x10u)>; + using HSITRIM = RegisterMask<ICSCR, (0x7fu << 0x18u)>; + }; + struct CFGR : public MemRegister<uint32_t, 0x40021008> { + using SW = RegisterMask<CFGR, (0x7u << 0x0u)>; + using SWS = RegisterMask<CFGR, (0x7u << 0x3u)>; + using HPRE = RegisterMask<CFGR, (0xfu << 0x8u)>; + using PPRE = RegisterMask<CFGR, (0x7u << 0xcu)>; + using STOPWUCK = RegisterMask<CFGR, (0x1u << 0xfu)>; + using MCO2SEL = RegisterMask<CFGR, (0xfu << 0x10u)>; + using MCO2PRE = RegisterMask<CFGR, (0xfu << 0x14u)>; + using MCOSEL = RegisterMask<CFGR, (0xfu << 0x18u)>; + using MCOPRE = RegisterMask<CFGR, (0xfu << 0x1cu)>; + }; + struct PLLCFGR : public MemRegister<uint32_t, 0x4002100c> { + using PLLSRC = RegisterMask<PLLCFGR, (0x3u << 0x0u)>; + using PLLM = RegisterMask<PLLCFGR, (0x7u << 0x4u)>; + using PLLN = RegisterMask<PLLCFGR, (0x7fu << 0x8u)>; + using PLLPEN = RegisterMask<PLLCFGR, (0x1u << 0x10u)>; + using PLLP = RegisterMask<PLLCFGR, (0x1fu << 0x11u)>; + using PLLQEN = RegisterMask<PLLCFGR, (0x1u << 0x18u)>; + using PLLQ = RegisterMask<PLLCFGR, (0x7u << 0x19u)>; + using PLLREN = RegisterMask<PLLCFGR, (0x1u << 0x1cu)>; + using PLLR = RegisterMask<PLLCFGR, (0x7u << 0x1du)>; + }; + struct CIER : public MemRegister<uint32_t, 0x40021018> { + using LSIRDYIE = RegisterMask<CIER, (0x1u << 0x0u)>; + using LSERDYIE = RegisterMask<CIER, (0x1u << 0x1u)>; + using MSIRDYIE = RegisterMask<CIER, (0x1u << 0x2u)>; + using HSIRDYIE = RegisterMask<CIER, (0x1u << 0x3u)>; + using HSERDYIE = RegisterMask<CIER, (0x1u << 0x4u)>; + using PLLRDYIE = RegisterMask<CIER, (0x1u << 0x5u)>; + using LSECSSIE = RegisterMask<CIER, (0x1u << 0x9u)>; + using HSI48RDYIE = RegisterMask<CIER, (0x1u << 0xau)>; + }; + struct CIFR : public MemRegister<uint32_t, 0x4002101c> { + using LSIRDYF = RegisterMask<CIFR, (0x1u << 0x0u)>; + using LSERDYF = RegisterMask<CIFR, (0x1u << 0x1u)>; + using MSIRDYF = RegisterMask<CIFR, (0x1u << 0x2u)>; + using HSIRDYF = RegisterMask<CIFR, (0x1u << 0x3u)>; + using HSERDYF = RegisterMask<CIFR, (0x1u << 0x4u)>; + using PLLRDYF = RegisterMask<CIFR, (0x1u << 0x5u)>; + using CSSF = RegisterMask<CIFR, (0x1u << 0x8u)>; + using LSECSSF = RegisterMask<CIFR, (0x1u << 0x9u)>; + using HSI48RDYF = RegisterMask<CIFR, (0x1u << 0xau)>; + }; + struct CICR : public MemRegister<uint32_t, 0x40021020> { + using LSIRDYC = RegisterMask<CICR, (0x1u << 0x0u)>; + using LSERDYC = RegisterMask<CICR, (0x1u << 0x1u)>; + using MSIRDYC = RegisterMask<CICR, (0x1u << 0x2u)>; + using HSIRDYC = RegisterMask<CICR, (0x1u << 0x3u)>; + using HSERDYC = RegisterMask<CICR, (0x1u << 0x4u)>; + using PLLRDYC = RegisterMask<CICR, (0x1u << 0x5u)>; + using CSSC = RegisterMask<CICR, (0x1u << 0x8u)>; + using LSECSSC = RegisterMask<CICR, (0x1u << 0x9u)>; + using HSI48RDYC = RegisterMask<CICR, (0x1u << 0xau)>; + }; + struct AHBRSTR : public MemRegister<uint32_t, 0x40021028> { + using DMA1RST = RegisterMask<AHBRSTR, (0x1u << 0x0u)>; + using DMA2RST = RegisterMask<AHBRSTR, (0x1u << 0x1u)>; + using FLASHRST = RegisterMask<AHBRSTR, (0x1u << 0x8u)>; + using CRCRST = RegisterMask<AHBRSTR, (0x1u << 0xcu)>; + using AESRST = RegisterMask<AHBRSTR, (0x1u << 0x10u)>; + using RNGRST = RegisterMask<AHBRSTR, (0x1u << 0x12u)>; + using TSCRST = RegisterMask<AHBRSTR, (0x1u << 0x18u)>; + }; + struct IOPRSTR : public MemRegister<uint32_t, 0x4002102c> { + using GPIOARST = RegisterMask<IOPRSTR, (0x1u << 0x0u)>; + using GPIOBRST = RegisterMask<IOPRSTR, (0x1u << 0x1u)>; + using GPIOCRST = RegisterMask<IOPRSTR, (0x1u << 0x2u)>; + using GPIODRST = RegisterMask<IOPRSTR, (0x1u << 0x3u)>; + using GPIOERST = RegisterMask<IOPRSTR, (0x1u << 0x4u)>; + using GPIOFRST = RegisterMask<IOPRSTR, (0x1u << 0x5u)>; + }; + struct APBRSTR1 : public MemRegister<uint32_t, 0x40021038> { + using TIM2RST = RegisterMask<APBRSTR1, (0x1u << 0x0u)>; + using TIM3RST = RegisterMask<APBRSTR1, (0x1u << 0x1u)>; + using TIM6RST = RegisterMask<APBRSTR1, (0x1u << 0x4u)>; + using TIM7RST = RegisterMask<APBRSTR1, (0x1u << 0x5u)>; + using LPUART2RST = RegisterMask<APBRSTR1, (0x1u << 0x7u)>; + using LCDRST = RegisterMask<APBRSTR1, (0x1u << 0x9u)>; + using LPUART3RST = RegisterMask<APBRSTR1, (0x1u << 0xcu)>; + using USBRST = RegisterMask<APBRSTR1, (0x1u << 0xdu)>; + using SPI2RST = RegisterMask<APBRSTR1, (0x1u << 0xeu)>; + using SPI3RST = RegisterMask<APBRSTR1, (0x1u << 0xfu)>; + using CRSRST = RegisterMask<APBRSTR1, (0x1u << 0x10u)>; + using USART2RST = RegisterMask<APBRSTR1, (0x1u << 0x11u)>; + using USART3RST = RegisterMask<APBRSTR1, (0x1u << 0x12u)>; + using USART4RST = RegisterMask<APBRSTR1, (0x1u << 0x13u)>; + using LPUART1RST = RegisterMask<APBRSTR1, (0x1u << 0x14u)>; + using I2C1RST = RegisterMask<APBRSTR1, (0x1u << 0x15u)>; + using I2C2RST = RegisterMask<APBRSTR1, (0x1u << 0x16u)>; + using I2C3RST = RegisterMask<APBRSTR1, (0x1u << 0x17u)>; + using OPAMPRST = RegisterMask<APBRSTR1, (0x1u << 0x18u)>; + using I2C4RST = RegisterMask<APBRSTR1, (0x1u << 0x19u)>; + using LPTIM3RST = RegisterMask<APBRSTR1, (0x1u << 0x1au)>; + using PWRRST = RegisterMask<APBRSTR1, (0x1u << 0x1cu)>; + using DAC1RST = RegisterMask<APBRSTR1, (0x1u << 0x1du)>; + using LPTIM2RST = RegisterMask<APBRSTR1, (0x1u << 0x1eu)>; + using LPTIM1RST = RegisterMask<APBRSTR1, (0x1u << 0x1fu)>; + }; + struct APBRSTR2 : public MemRegister<uint32_t, 0x40021040> { + using SYSCFGRST = RegisterMask<APBRSTR2, (0x1u << 0x0u)>; + using TIM1RST = RegisterMask<APBRSTR2, (0x1u << 0xbu)>; + using SPI1RST = RegisterMask<APBRSTR2, (0x1u << 0xcu)>; + using USART1RST = RegisterMask<APBRSTR2, (0x1u << 0xeu)>; + using TIM15RST = RegisterMask<APBRSTR2, (0x1u << 0x10u)>; + using TIM16RST = RegisterMask<APBRSTR2, (0x1u << 0x11u)>; + using ADCRST = RegisterMask<APBRSTR2, (0x1u << 0x14u)>; + }; + struct AHBENR : public MemRegister<uint32_t, 0x40021048> { + using DMA1EN = RegisterMask<AHBENR, (0x1u << 0x0u)>; + using DMA2EN = RegisterMask<AHBENR, (0x1u << 0x1u)>; + using FLASHEN = RegisterMask<AHBENR, (0x1u << 0x8u)>; + using CRCEN = RegisterMask<AHBENR, (0x1u << 0xcu)>; + using AESEN = RegisterMask<AHBENR, (0x1u << 0x10u)>; + using RNGEN = RegisterMask<AHBENR, (0x1u << 0x12u)>; + using TSCEN = RegisterMask<AHBENR, (0x1u << 0x18u)>; + }; + struct IOPENR : public MemRegister<uint32_t, 0x4002104c> { + using GPIOAEN = RegisterMask<IOPENR, (0x1u << 0x0u)>; + using GPIOBEN = RegisterMask<IOPENR, (0x1u << 0x1u)>; + using GPIOCEN = RegisterMask<IOPENR, (0x1u << 0x2u)>; + using GPIODEN = RegisterMask<IOPENR, (0x1u << 0x3u)>; + using GPIOEEN = RegisterMask<IOPENR, (0x1u << 0x4u)>; + using GPIOFEN = RegisterMask<IOPENR, (0x1u << 0x5u)>; + }; + struct DBGCFGR : public MemRegister<uint32_t, 0x40021050> { + using DBGEN = RegisterMask<DBGCFGR, (0x1u << 0x0u)>; + using DBGRST = RegisterMask<DBGCFGR, (0x1u << 0x1u)>; + }; + struct APBENR1 : public MemRegister<uint32_t, 0x40021058> { + using TIM2EN = RegisterMask<APBENR1, (0x1u << 0x0u)>; + using TIM3EN = RegisterMask<APBENR1, (0x1u << 0x1u)>; + using TIM6EN = RegisterMask<APBENR1, (0x1u << 0x4u)>; + using TIM7EN = RegisterMask<APBENR1, (0x1u << 0x5u)>; + using LPUART2EN = RegisterMask<APBENR1, (0x1u << 0x7u)>; + using LCDEN = RegisterMask<APBENR1, (0x1u << 0x9u)>; + using RTCAPBEN = RegisterMask<APBENR1, (0x1u << 0xau)>; + using WWDGEN = RegisterMask<APBENR1, (0x1u << 0xbu)>; + using LPUART3EN = RegisterMask<APBENR1, (0x1u << 0xcu)>; + using USBEN = RegisterMask<APBENR1, (0x1u << 0xdu)>; + using SPI2EN = RegisterMask<APBENR1, (0x1u << 0xeu)>; + using SPI3EN = RegisterMask<APBENR1, (0x1u << 0xfu)>; + using CRSEN = RegisterMask<APBENR1, (0x1u << 0x10u)>; + using USART2EN = RegisterMask<APBENR1, (0x1u << 0x11u)>; + using USART3EN = RegisterMask<APBENR1, (0x1u << 0x12u)>; + using USART4EN = RegisterMask<APBENR1, (0x1u << 0x13u)>; + using LPUART1EN = RegisterMask<APBENR1, (0x1u << 0x14u)>; + using I2C1EN = RegisterMask<APBENR1, (0x1u << 0x15u)>; + using I2C2EN = RegisterMask<APBENR1, (0x1u << 0x16u)>; + using I2C3EN = RegisterMask<APBENR1, (0x1u << 0x17u)>; + using OPAMPEN = RegisterMask<APBENR1, (0x1u << 0x18u)>; + using I2C4EN = RegisterMask<APBENR1, (0x1u << 0x19u)>; + using LPTIM3EN = RegisterMask<APBENR1, (0x1u << 0x1au)>; + using PWREN = RegisterMask<APBENR1, (0x1u << 0x1cu)>; + using DAC1EN = RegisterMask<APBENR1, (0x1u << 0x1du)>; + using LPTIM2EN = RegisterMask<APBENR1, (0x1u << 0x1eu)>; + using LPTIM1EN = RegisterMask<APBENR1, (0x1u << 0x1fu)>; + }; + struct APBENR2 : public MemRegister<uint32_t, 0x40021060> { + using SYSCFGEN = RegisterMask<APBENR2, (0x1u << 0x0u)>; + using TIM1EN = RegisterMask<APBENR2, (0x1u << 0xbu)>; + using SPI1EN = RegisterMask<APBENR2, (0x1u << 0xcu)>; + using USART1EN = RegisterMask<APBENR2, (0x1u << 0xeu)>; + using TIM15EN = RegisterMask<APBENR2, (0x1u << 0x10u)>; + using TIM16EN = RegisterMask<APBENR2, (0x1u << 0x11u)>; + using ADCEN = RegisterMask<APBENR2, (0x1u << 0x14u)>; + }; + struct AHBSMENR : public MemRegister<uint32_t, 0x40021068> { + using DMA1SMEN = RegisterMask<AHBSMENR, (0x1u << 0x0u)>; + using DMA2SMEN = RegisterMask<AHBSMENR, (0x1u << 0x1u)>; + using FLASHSMEN = RegisterMask<AHBSMENR, (0x1u << 0x8u)>; + using SRAMSMEN = RegisterMask<AHBSMENR, (0x1u << 0x9u)>; + using CRCSMEN = RegisterMask<AHBSMENR, (0x1u << 0xcu)>; + using AESSMEN = RegisterMask<AHBSMENR, (0x1u << 0x10u)>; + using RNGSMEN = RegisterMask<AHBSMENR, (0x1u << 0x12u)>; + using TSCSMEN = RegisterMask<AHBSMENR, (0x1u << 0x18u)>; + }; + struct IOPSMENR : public MemRegister<uint32_t, 0x4002106c> { + using GPIOASMEN = RegisterMask<IOPSMENR, (0x1u << 0x0u)>; + using GPIOBSMEN = RegisterMask<IOPSMENR, (0x1u << 0x1u)>; + using GPIOCSMEN = RegisterMask<IOPSMENR, (0x1u << 0x2u)>; + using GPIODSMEN = RegisterMask<IOPSMENR, (0x1u << 0x3u)>; + using GPIOESMEN = RegisterMask<IOPSMENR, (0x1u << 0x4u)>; + using GPIOFSMEN = RegisterMask<IOPSMENR, (0x1u << 0x5u)>; + }; + struct APBSMENR1 : public MemRegister<uint32_t, 0x40021078> { + using TIM2SMEN = RegisterMask<APBSMENR1, (0x1u << 0x0u)>; + using TIM3SMEN = RegisterMask<APBSMENR1, (0x1u << 0x1u)>; + using TIM6SMEN = RegisterMask<APBSMENR1, (0x1u << 0x4u)>; + using TIM7SMEN = RegisterMask<APBSMENR1, (0x1u << 0x5u)>; + using LPUART2SMEN = RegisterMask<APBSMENR1, (0x1u << 0x7u)>; + using LCDSMEN = RegisterMask<APBSMENR1, (0x1u << 0x9u)>; + using RTCAPBSMEN = RegisterMask<APBSMENR1, (0x1u << 0xau)>; + using WWDGSMEN = RegisterMask<APBSMENR1, (0x1u << 0xbu)>; + using LPUART3SMEN = RegisterMask<APBSMENR1, (0x1u << 0xcu)>; + using USBSMEN = RegisterMask<APBSMENR1, (0x1u << 0xdu)>; + using SPI2SMEN = RegisterMask<APBSMENR1, (0x1u << 0xeu)>; + using SPI3SMEN = RegisterMask<APBSMENR1, (0x1u << 0xfu)>; + using CRSSMEN = RegisterMask<APBSMENR1, (0x1u << 0x10u)>; + using USART2SMEN = RegisterMask<APBSMENR1, (0x1u << 0x11u)>; + using USART3SMEN = RegisterMask<APBSMENR1, (0x1u << 0x12u)>; + using USART4SMEN = RegisterMask<APBSMENR1, (0x1u << 0x13u)>; + using LPUART1SMEN = RegisterMask<APBSMENR1, (0x1u << 0x14u)>; + using I2C1SMEN = RegisterMask<APBSMENR1, (0x1u << 0x15u)>; + using I2C2SMEN = RegisterMask<APBSMENR1, (0x1u << 0x16u)>; + using I2C3SMEN = RegisterMask<APBSMENR1, (0x1u << 0x17u)>; + using OPAMPSMEN = RegisterMask<APBSMENR1, (0x1u << 0x18u)>; + using I2C4SMEN = RegisterMask<APBSMENR1, (0x1u << 0x19u)>; + using LPTIM3SMEN = RegisterMask<APBSMENR1, (0x1u << 0x1au)>; + using PWRSMEN = RegisterMask<APBSMENR1, (0x1u << 0x1cu)>; + using DAC1SMEN = RegisterMask<APBSMENR1, (0x1u << 0x1du)>; + using LPTIM2SMEN = RegisterMask<APBSMENR1, (0x1u << 0x1eu)>; + using LPTIM1SMEN = RegisterMask<APBSMENR1, (0x1u << 0x1fu)>; + }; + struct APBSMENR2 : public MemRegister<uint32_t, 0x40021080> { + using SYSCFGSMEN = RegisterMask<APBSMENR2, (0x1u << 0x0u)>; + using TIM1SMEN = RegisterMask<APBSMENR2, (0x1u << 0xbu)>; + using SPI1SMEN = RegisterMask<APBSMENR2, (0x1u << 0xcu)>; + using USART1SMEN = RegisterMask<APBSMENR2, (0x1u << 0xeu)>; + using TIM15SMEN = RegisterMask<APBSMENR2, (0x1u << 0x10u)>; + using TIM16SMEN = RegisterMask<APBSMENR2, (0x1u << 0x11u)>; + using ADCSMEN = RegisterMask<APBSMENR2, (0x1u << 0x14u)>; + }; + struct CCIPR : public MemRegister<uint32_t, 0x40021088> { + using USART1SEL = RegisterMask<CCIPR, (0x3u << 0x0u)>; + using USART2SEL = RegisterMask<CCIPR, (0x3u << 0x2u)>; + using LPUART3SEL = RegisterMask<CCIPR, (0x3u << 0x6u)>; + using LPUART2SEL = RegisterMask<CCIPR, (0x3u << 0x8u)>; + using LPUART1SEL = RegisterMask<CCIPR, (0x3u << 0xau)>; + using I2C1SEL = RegisterMask<CCIPR, (0x3u << 0xcu)>; + using I2C3SEL = RegisterMask<CCIPR, (0x3u << 0x10u)>; + using LPTIM1SEL = RegisterMask<CCIPR, (0x3u << 0x12u)>; + using LPTIM2SEL = RegisterMask<CCIPR, (0x3u << 0x14u)>; + using LPTIM3SEL = RegisterMask<CCIPR, (0x3u << 0x16u)>; + using TIM1SEL = RegisterMask<CCIPR, (0x1u << 0x18u)>; + using TIM15SEL = RegisterMask<CCIPR, (0x1u << 0x19u)>; + using CLK48SEL = RegisterMask<CCIPR, (0x3u << 0x1au)>; + using ADCSEL = RegisterMask<CCIPR, (0x3u << 0x1cu)>; + }; + struct BDCR : public MemRegister<uint32_t, 0x40021090> { + using LSEON = RegisterMask<BDCR, (0x1u << 0x0u)>; + using LSERDY = RegisterMask<BDCR, (0x1u << 0x1u)>; + using LSEBYP = RegisterMask<BDCR, (0x1u << 0x2u)>; + using LSEDRV = RegisterMask<BDCR, (0x3u << 0x3u)>; + using LSECSSON = RegisterMask<BDCR, (0x1u << 0x5u)>; + using LSECSSD = RegisterMask<BDCR, (0x1u << 0x6u)>; + using LSESYSEN = RegisterMask<BDCR, (0x1u << 0x7u)>; + using RTCSEL = RegisterMask<BDCR, (0x3u << 0x8u)>; + using LSESYSRDY = RegisterMask<BDCR, (0x1u << 0xbu)>; + using RTCEN = RegisterMask<BDCR, (0x1u << 0xfu)>; + using BDRST = RegisterMask<BDCR, (0x1u << 0x10u)>; + using LSCOEN = RegisterMask<BDCR, (0x1u << 0x18u)>; + using LSCOSEL = RegisterMask<BDCR, (0x1u << 0x19u)>; + }; + struct CSR : public MemRegister<uint32_t, 0x40021094> { + using LSION = RegisterMask<CSR, (0x1u << 0x0u)>; + using LSIRDY = RegisterMask<CSR, (0x1u << 0x1u)>; + using LSIPREDIV = RegisterMask<CSR, (0x1u << 0x2u)>; + using MSISRANGE = RegisterMask<CSR, (0xfu << 0x8u)>; + using RMVF = RegisterMask<CSR, (0x1u << 0x17u)>; + using OBLRSTF = RegisterMask<CSR, (0x1u << 0x19u)>; + using PINRSTF = RegisterMask<CSR, (0x1u << 0x1au)>; + using PWRRSTF = RegisterMask<CSR, (0x1u << 0x1bu)>; + using SFTRSTF = RegisterMask<CSR, (0x1u << 0x1cu)>; + using IWDGRSTF = RegisterMask<CSR, (0x1u << 0x1du)>; + using WWDGRSTF = RegisterMask<CSR, (0x1u << 0x1eu)>; + using LPWRRSTF = RegisterMask<CSR, (0x1u << 0x1fu)>; + }; + struct CRRCR : public MemRegister<uint32_t, 0x40021098> { + using HSI48ON = RegisterMask<CRRCR, (0x1u << 0x0u)>; + using HSI48RDY = RegisterMask<CRRCR, (0x1u << 0x1u)>; + using HSI48CAL = RegisterMask<CRRCR, (0x1ffu << 0x7u)>; + }; + using ALL = RegisterGroup<CR, ICSCR, CFGR, PLLCFGR, CIER, CIFR, CICR, AHBRSTR, IOPRSTR, APBRSTR1, APBRSTR2, AHBENR, IOPENR, DBGCFGR, APBENR1, APBENR2, AHBSMENR, IOPSMENR, APBSMENR1, APBSMENR2, CCIPR, BDCR, CSR, CRRCR>; + } + namespace RNG { + struct CR : public MemRegister<uint32_t, 0x40025000> { + using RNGEN = RegisterMask<CR, (0x1u << 0x2u)>; + using IE = RegisterMask<CR, (0x1u << 0x3u)>; + using CED = RegisterMask<CR, (0x1u << 0x5u)>; + using ARDIS = RegisterMask<CR, (0x1u << 0x7u)>; + using RNG_CONFIG3 = RegisterMask<CR, (0xfu << 0x8u)>; + using NISTC = RegisterMask<CR, (0x1u << 0xcu)>; + using RNG_CONFIG2 = RegisterMask<CR, (0x7u << 0xdu)>; + using CLKDIV = RegisterMask<CR, (0xfu << 0x10u)>; + using RNG_CONFIG1 = RegisterMask<CR, (0x3fu << 0x14u)>; + using CONDRST = RegisterMask<CR, (0x1u << 0x1eu)>; + using CONFIGLOCK = RegisterMask<CR, (0x1u << 0x1fu)>; + }; + struct SR : public MemRegister<uint32_t, 0x40025004> { + using DRDY = RegisterMask<SR, (0x1u << 0x0u)>; + using CECS = RegisterMask<SR, (0x1u << 0x1u)>; + using SECS = RegisterMask<SR, (0x1u << 0x2u)>; + using CEIS = RegisterMask<SR, (0x1u << 0x5u)>; + using SEIS = RegisterMask<SR, (0x1u << 0x6u)>; + }; + struct DR : public MemRegister<uint32_t, 0x40025008> { + using RNDATA = RegisterMask<DR, (0x0u << 0x0u)>; + }; + struct HTCR : public MemRegister<uint32_t, 0x40025010> { + using HTCFG = RegisterMask<HTCR, (0x0u << 0x0u)>; + }; + using ALL = RegisterGroup<CR, SR, DR, HTCR>; + } + namespace RTC { + struct TR : public MemRegister<uint32_t, 0x40002800> { + using SU = RegisterMask<TR, (0xfu << 0x0u)>; + using ST = RegisterMask<TR, (0x7u << 0x4u)>; + using MNU = RegisterMask<TR, (0xfu << 0x8u)>; + using MNT = RegisterMask<TR, (0x7u << 0xcu)>; + using HU = RegisterMask<TR, (0xfu << 0x10u)>; + using HT = RegisterMask<TR, (0x3u << 0x14u)>; + using PM = RegisterMask<TR, (0x1u << 0x16u)>; + }; + struct DR : public MemRegister<uint32_t, 0x40002804> { + using DU = RegisterMask<DR, (0xfu << 0x0u)>; + using DT = RegisterMask<DR, (0x3u << 0x4u)>; + using MU = RegisterMask<DR, (0xfu << 0x8u)>; + using MT = RegisterMask<DR, (0x1u << 0xcu)>; + using WDU = RegisterMask<DR, (0x7u << 0xdu)>; + using YU = RegisterMask<DR, (0xfu << 0x10u)>; + using YT = RegisterMask<DR, (0xfu << 0x14u)>; + }; + struct SSR : public MemRegister<uint32_t, 0x40002808> { + using SS = RegisterMask<SSR, (0x0u << 0x0u)>; + }; + struct ICSR : public MemRegister<uint32_t, 0x4000280c> { + using WUTWF = RegisterMask<ICSR, (0x1u << 0x2u)>; + using SHPF = RegisterMask<ICSR, (0x1u << 0x3u)>; + using INITS = RegisterMask<ICSR, (0x1u << 0x4u)>; + using RSF = RegisterMask<ICSR, (0x1u << 0x5u)>; + using INITF = RegisterMask<ICSR, (0x1u << 0x6u)>; + using INIT = RegisterMask<ICSR, (0x1u << 0x7u)>; + using BIN = RegisterMask<ICSR, (0x3u << 0x8u)>; + using BCDU = RegisterMask<ICSR, (0x7u << 0xau)>; + using RECALPF = RegisterMask<ICSR, (0x1u << 0x10u)>; + }; + struct PRER : public MemRegister<uint32_t, 0x40002810> { + using PREDIV_S = RegisterMask<PRER, (0x7fffu << 0x0u)>; + using PREDIV_A = RegisterMask<PRER, (0x7fu << 0x10u)>; + }; + struct WUTR : public MemRegister<uint32_t, 0x40002814> { + using WUT = RegisterMask<WUTR, (0xffffu << 0x0u)>; + using WUTOCLR = RegisterMask<WUTR, (0xffffu << 0x10u)>; + }; + struct CR : public MemRegister<uint32_t, 0x40002818> { + using WUCKSEL = RegisterMask<CR, (0x7u << 0x0u)>; + using TSEDGE = RegisterMask<CR, (0x1u << 0x3u)>; + using REFCKON = RegisterMask<CR, (0x1u << 0x4u)>; + using BYPSHAD = RegisterMask<CR, (0x1u << 0x5u)>; + using FMT = RegisterMask<CR, (0x1u << 0x6u)>; + using SSRUIE = RegisterMask<CR, (0x1u << 0x7u)>; + using ALRAE = RegisterMask<CR, (0x1u << 0x8u)>; + using ALRBE = RegisterMask<CR, (0x1u << 0x9u)>; + using WUTE = RegisterMask<CR, (0x1u << 0xau)>; + using TSE = RegisterMask<CR, (0x1u << 0xbu)>; + using ALRAIE = RegisterMask<CR, (0x1u << 0xcu)>; + using ALRBIE = RegisterMask<CR, (0x1u << 0xdu)>; + using WUTIE = RegisterMask<CR, (0x1u << 0xeu)>; + using TSIE = RegisterMask<CR, (0x1u << 0xfu)>; + using ADD1H = RegisterMask<CR, (0x1u << 0x10u)>; + using SUB1H = RegisterMask<CR, (0x1u << 0x11u)>; + using BKP = RegisterMask<CR, (0x1u << 0x12u)>; + using COSEL = RegisterMask<CR, (0x1u << 0x13u)>; + using POL = RegisterMask<CR, (0x1u << 0x14u)>; + using OSEL = RegisterMask<CR, (0x3u << 0x15u)>; + using COE = RegisterMask<CR, (0x1u << 0x17u)>; + using ITSE = RegisterMask<CR, (0x1u << 0x18u)>; + using TAMPTS = RegisterMask<CR, (0x1u << 0x19u)>; + using TAMPOE = RegisterMask<CR, (0x1u << 0x1au)>; + using ALRAFCLR = RegisterMask<CR, (0x1u << 0x1bu)>; + using ALRBFCLR = RegisterMask<CR, (0x1u << 0x1cu)>; + using TAMPALRM_PU = RegisterMask<CR, (0x1u << 0x1du)>; + using TAMPALRM_TYPE = RegisterMask<CR, (0x1u << 0x1eu)>; + using OUT2EN = RegisterMask<CR, (0x1u << 0x1fu)>; + }; + struct WPR : public MemRegister<uint32_t, 0x40002824> { + using KEY = RegisterMask<WPR, (0xffu << 0x0u)>; + }; + struct CALR : public MemRegister<uint32_t, 0x40002828> { + using CALM = RegisterMask<CALR, (0x1ffu << 0x0u)>; + using LPCAL = RegisterMask<CALR, (0x1u << 0xcu)>; + using CALW16 = RegisterMask<CALR, (0x1u << 0xdu)>; + using CALW8 = RegisterMask<CALR, (0x1u << 0xeu)>; + using CALP = RegisterMask<CALR, (0x1u << 0xfu)>; + }; + struct SHIFTR : public MemRegister<uint32_t, 0x4000282c> { + using SUBFS = RegisterMask<SHIFTR, (0x7fffu << 0x0u)>; + using ADD1S = RegisterMask<SHIFTR, (0x1u << 0x1fu)>; + }; + struct TSTR : public MemRegister<uint32_t, 0x40002830> { + using SU = RegisterMask<TSTR, (0xfu << 0x0u)>; + using ST = RegisterMask<TSTR, (0x7u << 0x4u)>; + using MNU = RegisterMask<TSTR, (0xfu << 0x8u)>; + using MNT = RegisterMask<TSTR, (0x7u << 0xcu)>; + using HU = RegisterMask<TSTR, (0xfu << 0x10u)>; + using HT = RegisterMask<TSTR, (0x3u << 0x14u)>; + using PM = RegisterMask<TSTR, (0x1u << 0x16u)>; + }; + struct TSDR : public MemRegister<uint32_t, 0x40002834> { + using DU = RegisterMask<TSDR, (0xfu << 0x0u)>; + using DT = RegisterMask<TSDR, (0x3u << 0x4u)>; + using MU = RegisterMask<TSDR, (0xfu << 0x8u)>; + using MT = RegisterMask<TSDR, (0x1u << 0xcu)>; + using WDU = RegisterMask<TSDR, (0x7u << 0xdu)>; + }; + struct TSSSR : public MemRegister<uint32_t, 0x40002838> { + using SS = RegisterMask<TSSSR, (0x0u << 0x0u)>; + }; + struct ALRMAR : public MemRegister<uint32_t, 0x40002840> { + using SU = RegisterMask<ALRMAR, (0xfu << 0x0u)>; + using ST = RegisterMask<ALRMAR, (0x7u << 0x4u)>; + using MSK1 = RegisterMask<ALRMAR, (0x1u << 0x7u)>; + using MNU = RegisterMask<ALRMAR, (0xfu << 0x8u)>; + using MNT = RegisterMask<ALRMAR, (0x7u << 0xcu)>; + using MSK2 = RegisterMask<ALRMAR, (0x1u << 0xfu)>; + using HU = RegisterMask<ALRMAR, (0xfu << 0x10u)>; + using HT = RegisterMask<ALRMAR, (0x3u << 0x14u)>; + using PM = RegisterMask<ALRMAR, (0x1u << 0x16u)>; + using MSK3 = RegisterMask<ALRMAR, (0x1u << 0x17u)>; + using DU = RegisterMask<ALRMAR, (0xfu << 0x18u)>; + using DT = RegisterMask<ALRMAR, (0x3u << 0x1cu)>; + using WDSEL = RegisterMask<ALRMAR, (0x1u << 0x1eu)>; + using MSK4 = RegisterMask<ALRMAR, (0x1u << 0x1fu)>; + }; + struct ALRMASSR : public MemRegister<uint32_t, 0x40002844> { + using SS = RegisterMask<ALRMASSR, (0x7fffu << 0x0u)>; + using MASKSS = RegisterMask<ALRMASSR, (0x3fu << 0x18u)>; + using SSCLR = RegisterMask<ALRMASSR, (0x1u << 0x1fu)>; + }; + struct ALRMBR : public MemRegister<uint32_t, 0x40002848> { + using SU = RegisterMask<ALRMBR, (0xfu << 0x0u)>; + using ST = RegisterMask<ALRMBR, (0x7u << 0x4u)>; + using MSK1 = RegisterMask<ALRMBR, (0x1u << 0x7u)>; + using MNU = RegisterMask<ALRMBR, (0xfu << 0x8u)>; + using MNT = RegisterMask<ALRMBR, (0x7u << 0xcu)>; + using MSK2 = RegisterMask<ALRMBR, (0x1u << 0xfu)>; + using HU = RegisterMask<ALRMBR, (0xfu << 0x10u)>; + using HT = RegisterMask<ALRMBR, (0x3u << 0x14u)>; + using PM = RegisterMask<ALRMBR, (0x1u << 0x16u)>; + using MSK3 = RegisterMask<ALRMBR, (0x1u << 0x17u)>; + using DU = RegisterMask<ALRMBR, (0xfu << 0x18u)>; + using DT = RegisterMask<ALRMBR, (0x3u << 0x1cu)>; + using WDSEL = RegisterMask<ALRMBR, (0x1u << 0x1eu)>; + using MSK4 = RegisterMask<ALRMBR, (0x1u << 0x1fu)>; + }; + struct ALRMBSSR : public MemRegister<uint32_t, 0x4000284c> { + using SS = RegisterMask<ALRMBSSR, (0x7fffu << 0x0u)>; + using MASKSS = RegisterMask<ALRMBSSR, (0x3fu << 0x18u)>; + using SSCLR = RegisterMask<ALRMBSSR, (0x1u << 0x1fu)>; + }; + struct SR : public MemRegister<uint32_t, 0x40002850> { + using ALRAF = RegisterMask<SR, (0x1u << 0x0u)>; + using ALRBF = RegisterMask<SR, (0x1u << 0x1u)>; + using WUTF = RegisterMask<SR, (0x1u << 0x2u)>; + using TSF = RegisterMask<SR, (0x1u << 0x3u)>; + using TSOVF = RegisterMask<SR, (0x1u << 0x4u)>; + using ITSF = RegisterMask<SR, (0x1u << 0x5u)>; + using SSRUF = RegisterMask<SR, (0x1u << 0x6u)>; + }; + struct MISR : public MemRegister<uint32_t, 0x40002854> { + using ALRAMF = RegisterMask<MISR, (0x1u << 0x0u)>; + using ALRBMF = RegisterMask<MISR, (0x1u << 0x1u)>; + using WUTMF = RegisterMask<MISR, (0x1u << 0x2u)>; + using TSMF = RegisterMask<MISR, (0x1u << 0x3u)>; + using TSOVMF = RegisterMask<MISR, (0x1u << 0x4u)>; + using ITSMF = RegisterMask<MISR, (0x1u << 0x5u)>; + using SSRUMF = RegisterMask<MISR, (0x1u << 0x6u)>; + }; + struct SCR : public MemRegister<uint32_t, 0x4000285c> { + using CALRAF = RegisterMask<SCR, (0x1u << 0x0u)>; + using CALRBF = RegisterMask<SCR, (0x1u << 0x1u)>; + using CWUTF = RegisterMask<SCR, (0x1u << 0x2u)>; + using CTSF = RegisterMask<SCR, (0x1u << 0x3u)>; + using CTSOVF = RegisterMask<SCR, (0x1u << 0x4u)>; + using CITSF = RegisterMask<SCR, (0x1u << 0x5u)>; + using CSSRUF = RegisterMask<SCR, (0x1u << 0x6u)>; + }; + struct ALRABINR : public MemRegister<uint32_t, 0x40002870> { + using SS = RegisterMask<ALRABINR, (0x0u << 0x0u)>; + }; + struct ALRBBINR : public MemRegister<uint32_t, 0x40002874> { + using SS = RegisterMask<ALRBBINR, (0x0u << 0x0u)>; + }; + using ALL = RegisterGroup<TR, DR, SSR, ICSR, PRER, WUTR, CR, WPR, CALR, SHIFTR, TSTR, TSDR, TSSSR, ALRMAR, ALRMASSR, ALRMBR, ALRMBSSR, SR, MISR, SCR, ALRABINR, ALRBBINR>; + } + namespace SPI1 { + struct CR1 : public MemRegister<uint16_t, 0x40013000> { + using CPHA = RegisterMask<CR1, (0x1u << 0x0u)>; + using CPOL = RegisterMask<CR1, (0x1u << 0x1u)>; + using MSTR = RegisterMask<CR1, (0x1u << 0x2u)>; + using BR = RegisterMask<CR1, (0x7u << 0x3u)>; + using SPE = RegisterMask<CR1, (0x1u << 0x6u)>; + using LSBFIRST = RegisterMask<CR1, (0x1u << 0x7u)>; + using SSI = RegisterMask<CR1, (0x1u << 0x8u)>; + using SSM = RegisterMask<CR1, (0x1u << 0x9u)>; + using RXONLY = RegisterMask<CR1, (0x1u << 0xau)>; + using CRCL = RegisterMask<CR1, (0x1u << 0xbu)>; + using CRCNEXT = RegisterMask<CR1, (0x1u << 0xcu)>; + using CRCEN = RegisterMask<CR1, (0x1u << 0xdu)>; + using BIDIOE = RegisterMask<CR1, (0x1u << 0xeu)>; + using BIDIMODE = RegisterMask<CR1, (0x1u << 0xfu)>; + }; + struct CR2 : public MemRegister<uint16_t, 0x40013004> { + using RXDMAEN = RegisterMask<CR2, (0x1u << 0x0u)>; + using TXDMAEN = RegisterMask<CR2, (0x1u << 0x1u)>; + using SSOE = RegisterMask<CR2, (0x1u << 0x2u)>; + using NSSP = RegisterMask<CR2, (0x1u << 0x3u)>; + using FRF = RegisterMask<CR2, (0x1u << 0x4u)>; + using ERRIE = RegisterMask<CR2, (0x1u << 0x5u)>; + using RXNEIE = RegisterMask<CR2, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR2, (0x1u << 0x7u)>; + using DS = RegisterMask<CR2, (0xfu << 0x8u)>; + using FRXTH = RegisterMask<CR2, (0x1u << 0xcu)>; + using LDMA_RX = RegisterMask<CR2, (0x1u << 0xdu)>; + using LDMA_TX = RegisterMask<CR2, (0x1u << 0xeu)>; + }; + struct SR : public MemRegister<uint16_t, 0x40013008> { + using RXNE = RegisterMask<SR, (0x1u << 0x0u)>; + using TXE = RegisterMask<SR, (0x1u << 0x1u)>; + using CRCERR = RegisterMask<SR, (0x1u << 0x4u)>; + using MODF = RegisterMask<SR, (0x1u << 0x5u)>; + using OVR = RegisterMask<SR, (0x1u << 0x6u)>; + using BSY = RegisterMask<SR, (0x1u << 0x7u)>; + using FRE = RegisterMask<SR, (0x1u << 0x8u)>; + using FRLVL = RegisterMask<SR, (0x3u << 0x9u)>; + using FTLVL = RegisterMask<SR, (0x3u << 0xbu)>; + }; + struct DR : public MemRegister<uint16_t, 0x4001300c> { + using val = RegisterMask<DR, (0xffffu << 0x0u)>; + }; + struct CRCPR : public MemRegister<uint16_t, 0x40013010> { + using CRCPOLY = RegisterMask<CRCPR, (0xffffu << 0x0u)>; + }; + struct RXCRCR : public MemRegister<uint16_t, 0x40013014> { + using RXCRC = RegisterMask<RXCRCR, (0xffffu << 0x0u)>; + }; + struct TXCRCR : public MemRegister<uint16_t, 0x40013018> { + using TXCRC = RegisterMask<TXCRCR, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR2, SR, DR, CRCPR, RXCRCR, TXCRCR>; + } + namespace SPI2 { + struct CR1 : public MemRegister<uint16_t, 0x40003800> { + using CPHA = RegisterMask<CR1, (0x1u << 0x0u)>; + using CPOL = RegisterMask<CR1, (0x1u << 0x1u)>; + using MSTR = RegisterMask<CR1, (0x1u << 0x2u)>; + using BR = RegisterMask<CR1, (0x7u << 0x3u)>; + using SPE = RegisterMask<CR1, (0x1u << 0x6u)>; + using LSBFIRST = RegisterMask<CR1, (0x1u << 0x7u)>; + using SSI = RegisterMask<CR1, (0x1u << 0x8u)>; + using SSM = RegisterMask<CR1, (0x1u << 0x9u)>; + using RXONLY = RegisterMask<CR1, (0x1u << 0xau)>; + using CRCL = RegisterMask<CR1, (0x1u << 0xbu)>; + using CRCNEXT = RegisterMask<CR1, (0x1u << 0xcu)>; + using CRCEN = RegisterMask<CR1, (0x1u << 0xdu)>; + using BIDIOE = RegisterMask<CR1, (0x1u << 0xeu)>; + using BIDIMODE = RegisterMask<CR1, (0x1u << 0xfu)>; + }; + struct CR2 : public MemRegister<uint16_t, 0x40003804> { + using RXDMAEN = RegisterMask<CR2, (0x1u << 0x0u)>; + using TXDMAEN = RegisterMask<CR2, (0x1u << 0x1u)>; + using SSOE = RegisterMask<CR2, (0x1u << 0x2u)>; + using NSSP = RegisterMask<CR2, (0x1u << 0x3u)>; + using FRF = RegisterMask<CR2, (0x1u << 0x4u)>; + using ERRIE = RegisterMask<CR2, (0x1u << 0x5u)>; + using RXNEIE = RegisterMask<CR2, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR2, (0x1u << 0x7u)>; + using DS = RegisterMask<CR2, (0xfu << 0x8u)>; + using FRXTH = RegisterMask<CR2, (0x1u << 0xcu)>; + using LDMA_RX = RegisterMask<CR2, (0x1u << 0xdu)>; + using LDMA_TX = RegisterMask<CR2, (0x1u << 0xeu)>; + }; + struct SR : public MemRegister<uint16_t, 0x40003808> { + using RXNE = RegisterMask<SR, (0x1u << 0x0u)>; + using TXE = RegisterMask<SR, (0x1u << 0x1u)>; + using CRCERR = RegisterMask<SR, (0x1u << 0x4u)>; + using MODF = RegisterMask<SR, (0x1u << 0x5u)>; + using OVR = RegisterMask<SR, (0x1u << 0x6u)>; + using BSY = RegisterMask<SR, (0x1u << 0x7u)>; + using FRE = RegisterMask<SR, (0x1u << 0x8u)>; + using FRLVL = RegisterMask<SR, (0x3u << 0x9u)>; + using FTLVL = RegisterMask<SR, (0x3u << 0xbu)>; + }; + struct DR : public MemRegister<uint16_t, 0x4000380c> { + using val = RegisterMask<DR, (0xffffu << 0x0u)>; + }; + struct CRCPR : public MemRegister<uint16_t, 0x40003810> { + using CRCPOLY = RegisterMask<CRCPR, (0xffffu << 0x0u)>; + }; + struct RXCRCR : public MemRegister<uint16_t, 0x40003814> { + using RXCRC = RegisterMask<RXCRCR, (0xffffu << 0x0u)>; + }; + struct TXCRCR : public MemRegister<uint16_t, 0x40003818> { + using TXCRC = RegisterMask<TXCRCR, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR2, SR, DR, CRCPR, RXCRCR, TXCRCR>; + } + namespace SPI3 { + struct CR1 : public MemRegister<uint16_t, 0x40003c00> { + using CPHA = RegisterMask<CR1, (0x1u << 0x0u)>; + using CPOL = RegisterMask<CR1, (0x1u << 0x1u)>; + using MSTR = RegisterMask<CR1, (0x1u << 0x2u)>; + using BR = RegisterMask<CR1, (0x7u << 0x3u)>; + using SPE = RegisterMask<CR1, (0x1u << 0x6u)>; + using LSBFIRST = RegisterMask<CR1, (0x1u << 0x7u)>; + using SSI = RegisterMask<CR1, (0x1u << 0x8u)>; + using SSM = RegisterMask<CR1, (0x1u << 0x9u)>; + using RXONLY = RegisterMask<CR1, (0x1u << 0xau)>; + using CRCL = RegisterMask<CR1, (0x1u << 0xbu)>; + using CRCNEXT = RegisterMask<CR1, (0x1u << 0xcu)>; + using CRCEN = RegisterMask<CR1, (0x1u << 0xdu)>; + using BIDIOE = RegisterMask<CR1, (0x1u << 0xeu)>; + using BIDIMODE = RegisterMask<CR1, (0x1u << 0xfu)>; + }; + struct CR2 : public MemRegister<uint16_t, 0x40003c04> { + using RXDMAEN = RegisterMask<CR2, (0x1u << 0x0u)>; + using TXDMAEN = RegisterMask<CR2, (0x1u << 0x1u)>; + using SSOE = RegisterMask<CR2, (0x1u << 0x2u)>; + using NSSP = RegisterMask<CR2, (0x1u << 0x3u)>; + using FRF = RegisterMask<CR2, (0x1u << 0x4u)>; + using ERRIE = RegisterMask<CR2, (0x1u << 0x5u)>; + using RXNEIE = RegisterMask<CR2, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR2, (0x1u << 0x7u)>; + using DS = RegisterMask<CR2, (0xfu << 0x8u)>; + using FRXTH = RegisterMask<CR2, (0x1u << 0xcu)>; + using LDMA_RX = RegisterMask<CR2, (0x1u << 0xdu)>; + using LDMA_TX = RegisterMask<CR2, (0x1u << 0xeu)>; + }; + struct SR : public MemRegister<uint16_t, 0x40003c08> { + using RXNE = RegisterMask<SR, (0x1u << 0x0u)>; + using TXE = RegisterMask<SR, (0x1u << 0x1u)>; + using CRCERR = RegisterMask<SR, (0x1u << 0x4u)>; + using MODF = RegisterMask<SR, (0x1u << 0x5u)>; + using OVR = RegisterMask<SR, (0x1u << 0x6u)>; + using BSY = RegisterMask<SR, (0x1u << 0x7u)>; + using FRE = RegisterMask<SR, (0x1u << 0x8u)>; + using FRLVL = RegisterMask<SR, (0x3u << 0x9u)>; + using FTLVL = RegisterMask<SR, (0x3u << 0xbu)>; + }; + struct DR : public MemRegister<uint16_t, 0x40003c0c> { + using val = RegisterMask<DR, (0xffffu << 0x0u)>; + }; + struct CRCPR : public MemRegister<uint16_t, 0x40003c10> { + using CRCPOLY = RegisterMask<CRCPR, (0xffffu << 0x0u)>; + }; + struct RXCRCR : public MemRegister<uint16_t, 0x40003c14> { + using RXCRC = RegisterMask<RXCRCR, (0xffffu << 0x0u)>; + }; + struct TXCRCR : public MemRegister<uint16_t, 0x40003c18> { + using TXCRC = RegisterMask<TXCRCR, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR2, SR, DR, CRCPR, RXCRCR, TXCRCR>; + } + namespace SYSCFG { + struct CFGR1 : public MemRegister<uint32_t, 0x40010000> { + using MEM_MODE = RegisterMask<CFGR1, (0x3u << 0x0u)>; + using PA11_RMP = RegisterMask<CFGR1, (0x1u << 0x3u)>; + using PA12_RMP = RegisterMask<CFGR1, (0x1u << 0x4u)>; + using IR_POL = RegisterMask<CFGR1, (0x1u << 0x5u)>; + using IR_MOD = RegisterMask<CFGR1, (0x3u << 0x6u)>; + using BOOSTEN = RegisterMask<CFGR1, (0x1u << 0x8u)>; + using I2C_PB6_FMP = RegisterMask<CFGR1, (0x1u << 0x10u)>; + using I2C_PB7_FMP = RegisterMask<CFGR1, (0x1u << 0x11u)>; + using I2C_PB8_FMP = RegisterMask<CFGR1, (0x1u << 0x12u)>; + using I2C_PB9_FMP = RegisterMask<CFGR1, (0x1u << 0x13u)>; + using I2C_PA9_FMP = RegisterMask<CFGR1, (0x1u << 0x16u)>; + using I2C_PA10_FMP = RegisterMask<CFGR1, (0x1u << 0x17u)>; + using I2C3_FMP = RegisterMask<CFGR1, (0x1u << 0x18u)>; + }; + struct CFGR2 : public MemRegister<uint32_t, 0x40010018> { + using CCL = RegisterMask<CFGR2, (0x1u << 0x0u)>; + using SPL = RegisterMask<CFGR2, (0x1u << 0x1u)>; + using PVDL = RegisterMask<CFGR2, (0x1u << 0x2u)>; + using ECCL = RegisterMask<CFGR2, (0x1u << 0x3u)>; + using BKPL = RegisterMask<CFGR2, (0x1u << 0x4u)>; + using BKPF = RegisterMask<CFGR2, (0x1u << 0x7u)>; + using SPF = RegisterMask<CFGR2, (0x1u << 0x8u)>; + }; + struct SCSR : public MemRegister<uint32_t, 0x4001001c> { + using SRAM2ER = RegisterMask<SCSR, (0x1u << 0x0u)>; + using SRAM2BSY = RegisterMask<SCSR, (0x1u << 0x1u)>; + }; + struct SKR : public MemRegister<uint32_t, 0x40010020> { + using KEY = RegisterMask<SKR, (0xffu << 0x0u)>; + }; + struct TSCCR : public MemRegister<uint32_t, 0x40010024> { + using G2_IO1 = RegisterMask<TSCCR, (0x1u << 0x0u)>; + using G2_IO3 = RegisterMask<TSCCR, (0x1u << 0x1u)>; + using G4_IO3 = RegisterMask<TSCCR, (0x1u << 0x2u)>; + using G6_IO1 = RegisterMask<TSCCR, (0x1u << 0x3u)>; + using G7_IO1 = RegisterMask<TSCCR, (0x1u << 0x4u)>; + using TSC_IOCTRL = RegisterMask<TSCCR, (0x1u << 0x5u)>; + }; + struct ITLINE0 : public MemRegister<uint32_t, 0x40010080> { + using WWDG = RegisterMask<ITLINE0, (0x1u << 0x0u)>; + }; + struct ITLINE1 : public MemRegister<uint32_t, 0x40010084> { + using PVDOUT = RegisterMask<ITLINE1, (0x1u << 0x0u)>; + using PVMOUT1 = RegisterMask<ITLINE1, (0x1u << 0x1u)>; + using PVMOUT3 = RegisterMask<ITLINE1, (0x1u << 0x2u)>; + using PVMOUT4 = RegisterMask<ITLINE1, (0x1u << 0x3u)>; + }; + struct ITLINE2 : public MemRegister<uint32_t, 0x40010088> { + using TAMP = RegisterMask<ITLINE2, (0x1u << 0x0u)>; + using RTC = RegisterMask<ITLINE2, (0x1u << 0x1u)>; + }; + struct ITLINE3 : public MemRegister<uint32_t, 0x4001008c> { + using FLASH_ITF = RegisterMask<ITLINE3, (0x1u << 0x0u)>; + using FLASH_ECC = RegisterMask<ITLINE3, (0x1u << 0x1u)>; + }; + struct ITLINE4 : public MemRegister<uint32_t, 0x40010090> { + using RCC = RegisterMask<ITLINE4, (0x1u << 0x0u)>; + using CRS = RegisterMask<ITLINE4, (0x1u << 0x1u)>; + }; + struct ITLINE5 : public MemRegister<uint32_t, 0x40010094> { + using EXTI0 = RegisterMask<ITLINE5, (0x1u << 0x0u)>; + using EXTI1 = RegisterMask<ITLINE5, (0x1u << 0x1u)>; + }; + struct ITLINE6 : public MemRegister<uint32_t, 0x40010098> { + using EXTI2 = RegisterMask<ITLINE6, (0x1u << 0x0u)>; + using EXTI3 = RegisterMask<ITLINE6, (0x1u << 0x1u)>; + }; + struct ITLINE7 : public MemRegister<uint32_t, 0x4001009c> { + using EXTI4 = RegisterMask<ITLINE7, (0x1u << 0x0u)>; + using EXTI5 = RegisterMask<ITLINE7, (0x1u << 0x1u)>; + using EXTI6 = RegisterMask<ITLINE7, (0x1u << 0x2u)>; + using EXTI7 = RegisterMask<ITLINE7, (0x1u << 0x3u)>; + using EXTI8 = RegisterMask<ITLINE7, (0x1u << 0x4u)>; + using EXTI9 = RegisterMask<ITLINE7, (0x1u << 0x5u)>; + using EXTI10 = RegisterMask<ITLINE7, (0x1u << 0x6u)>; + using EXTI11 = RegisterMask<ITLINE7, (0x1u << 0x7u)>; + using EXTI12 = RegisterMask<ITLINE7, (0x1u << 0x8u)>; + using EXTI13 = RegisterMask<ITLINE7, (0x1u << 0x9u)>; + using EXTI14 = RegisterMask<ITLINE7, (0x1u << 0xau)>; + using EXTI15 = RegisterMask<ITLINE7, (0x1u << 0xbu)>; + }; + struct ITLINE8 : public MemRegister<uint32_t, 0x400100a0> { + using USB = RegisterMask<ITLINE8, (0x1u << 0x0u)>; + }; + struct ITLINE9 : public MemRegister<uint32_t, 0x400100a4> { + using DMA1_CH1 = RegisterMask<ITLINE9, (0x1u << 0x0u)>; + }; + struct ITLINE10 : public MemRegister<uint32_t, 0x400100a8> { + using DMA1_CH2 = RegisterMask<ITLINE10, (0x1u << 0x0u)>; + using DMA1_CH3 = RegisterMask<ITLINE10, (0x1u << 0x1u)>; + }; + struct ITLINE11 : public MemRegister<uint32_t, 0x400100ac> { + using DMAMUX = RegisterMask<ITLINE11, (0x1u << 0x0u)>; + using DMA1_CH4 = RegisterMask<ITLINE11, (0x1u << 0x1u)>; + using DMA1_CH5 = RegisterMask<ITLINE11, (0x1u << 0x2u)>; + using DMA1_CH6 = RegisterMask<ITLINE11, (0x1u << 0x3u)>; + using DMA1_CH7 = RegisterMask<ITLINE11, (0x1u << 0x4u)>; + using DMA2_CH1 = RegisterMask<ITLINE11, (0x1u << 0x5u)>; + using DMA2_CH2 = RegisterMask<ITLINE11, (0x1u << 0x6u)>; + using DMA2_CH3 = RegisterMask<ITLINE11, (0x1u << 0x7u)>; + using DMA2_CH4 = RegisterMask<ITLINE11, (0x1u << 0x8u)>; + using DMA2_CH5 = RegisterMask<ITLINE11, (0x1u << 0x9u)>; + }; + struct ITLINE12 : public MemRegister<uint32_t, 0x400100b0> { + using ADC = RegisterMask<ITLINE12, (0x1u << 0x0u)>; + using COMP1 = RegisterMask<ITLINE12, (0x1u << 0x1u)>; + using COMP2 = RegisterMask<ITLINE12, (0x1u << 0x2u)>; + }; + struct ITLINE13 : public MemRegister<uint32_t, 0x400100b4> { + using TIM1_CCU = RegisterMask<ITLINE13, (0x1u << 0x0u)>; + using TIM1_TRG = RegisterMask<ITLINE13, (0x1u << 0x1u)>; + using TIM1_UPD = RegisterMask<ITLINE13, (0x1u << 0x2u)>; + using TIM1_BRK = RegisterMask<ITLINE13, (0x1u << 0x3u)>; + }; + struct ITLINE14 : public MemRegister<uint32_t, 0x400100b8> { + using TIM1_CC1 = RegisterMask<ITLINE14, (0x1u << 0x0u)>; + using TIM1_CC2 = RegisterMask<ITLINE14, (0x1u << 0x1u)>; + using TIM1_CC3 = RegisterMask<ITLINE14, (0x1u << 0x2u)>; + using TIM1_CC4 = RegisterMask<ITLINE14, (0x1u << 0x3u)>; + }; + struct ITLINE15 : public MemRegister<uint32_t, 0x400100bc> { + using TIM2 = RegisterMask<ITLINE15, (0x1u << 0x0u)>; + }; + struct ITLINE16 : public MemRegister<uint32_t, 0x400100c0> { + using TIM3 = RegisterMask<ITLINE16, (0x1u << 0x0u)>; + }; + struct ITLINE17 : public MemRegister<uint32_t, 0x400100c4> { + using TIM6 = RegisterMask<ITLINE17, (0x1u << 0x0u)>; + using DAC = RegisterMask<ITLINE17, (0x1u << 0x1u)>; + using LPTIM1 = RegisterMask<ITLINE17, (0x1u << 0x2u)>; + }; + struct ITLINE18 : public MemRegister<uint32_t, 0x400100c8> { + using TIM7 = RegisterMask<ITLINE18, (0x1u << 0x0u)>; + using LPTIM2 = RegisterMask<ITLINE18, (0x1u << 0x1u)>; + }; + struct ITLINE19 : public MemRegister<uint32_t, 0x400100cc> { + using TIM15 = RegisterMask<ITLINE19, (0x1u << 0x0u)>; + using LPTIM3 = RegisterMask<ITLINE19, (0x1u << 0x1u)>; + }; + struct ITLINE20 : public MemRegister<uint32_t, 0x400100d0> { + using TIM16 = RegisterMask<ITLINE20, (0x1u << 0x0u)>; + }; + struct ITLINE21 : public MemRegister<uint32_t, 0x400100d4> { + using TSC_MCE = RegisterMask<ITLINE21, (0x1u << 0x0u)>; + using TSC_EOA = RegisterMask<ITLINE21, (0x1u << 0x1u)>; + }; + struct ITLINE22 : public MemRegister<uint32_t, 0x400100d8> { + using LCD = RegisterMask<ITLINE22, (0x1u << 0x0u)>; + }; + struct ITLINE23 : public MemRegister<uint32_t, 0x400100dc> { + using I2C1 = RegisterMask<ITLINE23, (0x1u << 0x0u)>; + }; + struct ITLINE24 : public MemRegister<uint32_t, 0x400100e0> { + using I2C2 = RegisterMask<ITLINE24, (0x1u << 0x0u)>; + using I2C4 = RegisterMask<ITLINE24, (0x1u << 0x1u)>; + using I2C3 = RegisterMask<ITLINE24, (0x1u << 0x2u)>; + }; + struct ITLINE25 : public MemRegister<uint32_t, 0x400100e4> { + using SPI1 = RegisterMask<ITLINE25, (0x1u << 0x0u)>; + }; + struct ITLINE26 : public MemRegister<uint32_t, 0x400100e8> { + using SPI2 = RegisterMask<ITLINE26, (0x1u << 0x0u)>; + using SPI3 = RegisterMask<ITLINE26, (0x1u << 0x1u)>; + }; + struct ITLINE27 : public MemRegister<uint32_t, 0x400100ec> { + using USART1 = RegisterMask<ITLINE27, (0x1u << 0x0u)>; + }; + struct ITLINE28 : public MemRegister<uint32_t, 0x400100f0> { + using USART2 = RegisterMask<ITLINE28, (0x1u << 0x0u)>; + using LPUART2 = RegisterMask<ITLINE28, (0x1u << 0x1u)>; + }; + struct ITLINE29 : public MemRegister<uint32_t, 0x400100f4> { + using USART3 = RegisterMask<ITLINE29, (0x1u << 0x0u)>; + using LPUART1 = RegisterMask<ITLINE29, (0x1u << 0x1u)>; + }; + struct ITLINE30 : public MemRegister<uint32_t, 0x400100f8> { + using USART4 = RegisterMask<ITLINE30, (0x1u << 0x0u)>; + using LPUART3 = RegisterMask<ITLINE30, (0x1u << 0x1u)>; + }; + struct ITLINE31 : public MemRegister<uint32_t, 0x400100fc> { + using RNG = RegisterMask<ITLINE31, (0x1u << 0x0u)>; + using AES = RegisterMask<ITLINE31, (0x1u << 0x1u)>; + }; + using ALL = RegisterGroup<CFGR1, CFGR2, SCSR, SKR, TSCCR, ITLINE0, ITLINE1, ITLINE2, ITLINE3, ITLINE4, ITLINE5, ITLINE6, ITLINE7, ITLINE8, ITLINE9, ITLINE10, ITLINE11, ITLINE12, ITLINE13, ITLINE14, ITLINE15, ITLINE16, ITLINE17, ITLINE18, ITLINE19, ITLINE20, ITLINE21, ITLINE22, ITLINE23, ITLINE24, ITLINE25, ITLINE26, ITLINE27, ITLINE28, ITLINE29, ITLINE30, ITLINE31>; + } + namespace TAMP { + struct CR1 : public MemRegister<uint32_t, 0x4000b000> { + using TAMP1E = RegisterMask<CR1, (0x1u << 0x0u)>; + using TAMP2E = RegisterMask<CR1, (0x1u << 0x1u)>; + using TAMP3E = RegisterMask<CR1, (0x1u << 0x2u)>; + using TAMP4E = RegisterMask<CR1, (0x1u << 0x3u)>; + using TAMP5E = RegisterMask<CR1, (0x1u << 0x4u)>; + using ITAMP3E = RegisterMask<CR1, (0x1u << 0x12u)>; + using ITAMP4E = RegisterMask<CR1, (0x1u << 0x13u)>; + using ITAMP5E = RegisterMask<CR1, (0x1u << 0x14u)>; + using ITAMP6E = RegisterMask<CR1, (0x1u << 0x15u)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x4000b004> { + using TAMP1POM = RegisterMask<CR2, (0x1u << 0x0u)>; + using TAMP2POM = RegisterMask<CR2, (0x1u << 0x1u)>; + using TAMP3POM = RegisterMask<CR2, (0x1u << 0x2u)>; + using TAMP4POM = RegisterMask<CR2, (0x1u << 0x3u)>; + using TAMP5POM = RegisterMask<CR2, (0x1u << 0x4u)>; + using TAMP1MSK = RegisterMask<CR2, (0x1u << 0x10u)>; + using TAMP2MSK = RegisterMask<CR2, (0x1u << 0x11u)>; + using TAMP3MSK = RegisterMask<CR2, (0x1u << 0x12u)>; + using BKBLOCK = RegisterMask<CR2, (0x1u << 0x16u)>; + using BKERASE = RegisterMask<CR2, (0x1u << 0x17u)>; + using TAMP1TRG = RegisterMask<CR2, (0x1u << 0x18u)>; + using TAMP2TRG = RegisterMask<CR2, (0x1u << 0x19u)>; + using TAMP3TRG = RegisterMask<CR2, (0x1u << 0x1au)>; + using TAMP4TRG = RegisterMask<CR2, (0x1u << 0x1bu)>; + using TAMP5TRG = RegisterMask<CR2, (0x1u << 0x1cu)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x4000b008> { + using ITAMP3POM = RegisterMask<CR3, (0x1u << 0x2u)>; + using ITAMP4POM = RegisterMask<CR3, (0x1u << 0x3u)>; + using ITAMP5POM = RegisterMask<CR3, (0x1u << 0x4u)>; + using ITAMP6POM = RegisterMask<CR3, (0x1u << 0x5u)>; + }; + struct FLTCR : public MemRegister<uint32_t, 0x4000b00c> { + using TAMPFREQ = RegisterMask<FLTCR, (0x7u << 0x0u)>; + using TAMPFLT = RegisterMask<FLTCR, (0x3u << 0x3u)>; + using TAMPPRCH = RegisterMask<FLTCR, (0x3u << 0x5u)>; + using TAMPPUDIS = RegisterMask<FLTCR, (0x1u << 0x7u)>; + }; + struct IER : public MemRegister<uint32_t, 0x4000b02c> { + using TAMP1IE = RegisterMask<IER, (0x1u << 0x0u)>; + using TAMP2IE = RegisterMask<IER, (0x1u << 0x1u)>; + using TAMP3IE = RegisterMask<IER, (0x1u << 0x2u)>; + using TAMP4IE = RegisterMask<IER, (0x1u << 0x3u)>; + using TAMP5IE = RegisterMask<IER, (0x1u << 0x4u)>; + using ITAMP3IE = RegisterMask<IER, (0x1u << 0x12u)>; + using ITAMP4IE = RegisterMask<IER, (0x1u << 0x13u)>; + using ITAMP5IE = RegisterMask<IER, (0x1u << 0x14u)>; + using ITAMP6IE = RegisterMask<IER, (0x1u << 0x15u)>; + }; + struct SR : public MemRegister<uint32_t, 0x4000b030> { + using TAMP1F = RegisterMask<SR, (0x1u << 0x0u)>; + using TAMP2F = RegisterMask<SR, (0x1u << 0x1u)>; + using TAMP3F = RegisterMask<SR, (0x1u << 0x2u)>; + using TAMP4F = RegisterMask<SR, (0x1u << 0x3u)>; + using TAMP5F = RegisterMask<SR, (0x1u << 0x4u)>; + using ITAMP3F = RegisterMask<SR, (0x1u << 0x12u)>; + using ITAMP4F = RegisterMask<SR, (0x1u << 0x13u)>; + using ITAMP5F = RegisterMask<SR, (0x1u << 0x14u)>; + using ITAMP6F = RegisterMask<SR, (0x1u << 0x15u)>; + }; + struct MISR : public MemRegister<uint32_t, 0x4000b034> { + using TAMP1MF = RegisterMask<MISR, (0x1u << 0x0u)>; + using TAMP2MF = RegisterMask<MISR, (0x1u << 0x1u)>; + using TAMP3MF = RegisterMask<MISR, (0x1u << 0x2u)>; + using TAMP4MF = RegisterMask<MISR, (0x1u << 0x3u)>; + using TAMP5MF = RegisterMask<MISR, (0x1u << 0x4u)>; + using ITAMP3MF = RegisterMask<MISR, (0x1u << 0x12u)>; + using ITAMP4MF = RegisterMask<MISR, (0x1u << 0x13u)>; + using ITAMP5MF = RegisterMask<MISR, (0x1u << 0x14u)>; + using ITAMP6MF = RegisterMask<MISR, (0x1u << 0x15u)>; + }; + struct SCR : public MemRegister<uint32_t, 0x4000b03c> { + using CTAMP1F = RegisterMask<SCR, (0x1u << 0x0u)>; + using CTAMP2F = RegisterMask<SCR, (0x1u << 0x1u)>; + using CTAMP3F = RegisterMask<SCR, (0x1u << 0x2u)>; + using CTAMP4F = RegisterMask<SCR, (0x1u << 0x3u)>; + using CTAMP5F = RegisterMask<SCR, (0x1u << 0x4u)>; + using CITAMP3F = RegisterMask<SCR, (0x1u << 0x12u)>; + using CITAMP4F = RegisterMask<SCR, (0x1u << 0x13u)>; + using CITAMP5F = RegisterMask<SCR, (0x1u << 0x14u)>; + using CITAMP6F = RegisterMask<SCR, (0x1u << 0x15u)>; + }; + struct BKP0R : public MemRegister<uint32_t, 0x4000b100> { + using BKP = RegisterMask<BKP0R, (0x0u << 0x0u)>; + }; + struct BKP1R : public MemRegister<uint32_t, 0x4000b104> { + using BKP = RegisterMask<BKP1R, (0x0u << 0x0u)>; + }; + struct BKP2R : public MemRegister<uint32_t, 0x4000b108> { + using BKP = RegisterMask<BKP2R, (0x0u << 0x0u)>; + }; + struct BKP3R : public MemRegister<uint32_t, 0x4000b10c> { + using BKP = RegisterMask<BKP3R, (0x0u << 0x0u)>; + }; + struct BKP4R : public MemRegister<uint32_t, 0x4000b110> { + using BKP = RegisterMask<BKP4R, (0x0u << 0x0u)>; + }; + struct BKP5R : public MemRegister<uint32_t, 0x4000b114> { + using BKP = RegisterMask<BKP5R, (0x0u << 0x0u)>; + }; + struct BKP6R : public MemRegister<uint32_t, 0x4000b118> { + using BKP = RegisterMask<BKP6R, (0x0u << 0x0u)>; + }; + struct BKP7R : public MemRegister<uint32_t, 0x4000b11c> { + using BKP = RegisterMask<BKP7R, (0x0u << 0x0u)>; + }; + struct BKP8R : public MemRegister<uint32_t, 0x4000b120> { + using BKP = RegisterMask<BKP8R, (0x0u << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR2, CR3, FLTCR, IER, SR, MISR, SCR, BKP0R, BKP1R, BKP2R, BKP3R, BKP4R, BKP5R, BKP6R, BKP7R, BKP8R>; + } + namespace TIM1 { + struct TIM1_CR1 : public MemRegister<uint16_t, 0x40012c00> { + using CEN = RegisterMask<TIM1_CR1, (0x1u << 0x0u)>; + using UDIS = RegisterMask<TIM1_CR1, (0x1u << 0x1u)>; + using URS = RegisterMask<TIM1_CR1, (0x1u << 0x2u)>; + using OPM = RegisterMask<TIM1_CR1, (0x1u << 0x3u)>; + using DIR = RegisterMask<TIM1_CR1, (0x1u << 0x4u)>; + using CMS = RegisterMask<TIM1_CR1, (0x3u << 0x5u)>; + using ARPE = RegisterMask<TIM1_CR1, (0x1u << 0x7u)>; + using CKD = RegisterMask<TIM1_CR1, (0x3u << 0x8u)>; + using UIFREMAP = RegisterMask<TIM1_CR1, (0x1u << 0xbu)>; + }; + struct TIM1_CR2 : public MemRegister<uint32_t, 0x40012c04> { + using CCPC = RegisterMask<TIM1_CR2, (0x1u << 0x0u)>; + using CCUS = RegisterMask<TIM1_CR2, (0x1u << 0x2u)>; + using CCDS = RegisterMask<TIM1_CR2, (0x1u << 0x3u)>; + using MMS = RegisterMask<TIM1_CR2, (0x7u << 0x4u)>; + using TI1S = RegisterMask<TIM1_CR2, (0x1u << 0x7u)>; + using OIS1 = RegisterMask<TIM1_CR2, (0x1u << 0x8u)>; + using OIS1N = RegisterMask<TIM1_CR2, (0x1u << 0x9u)>; + using OIS2 = RegisterMask<TIM1_CR2, (0x1u << 0xau)>; + using OIS2N = RegisterMask<TIM1_CR2, (0x1u << 0xbu)>; + using OIS3 = RegisterMask<TIM1_CR2, (0x1u << 0xcu)>; + using OIS3N = RegisterMask<TIM1_CR2, (0x1u << 0xdu)>; + using OIS4 = RegisterMask<TIM1_CR2, (0x1u << 0xeu)>; + using OIS5 = RegisterMask<TIM1_CR2, (0x1u << 0x10u)>; + using OIS6 = RegisterMask<TIM1_CR2, (0x1u << 0x12u)>; + using MMS2 = RegisterMask<TIM1_CR2, (0xfu << 0x14u)>; + }; + struct TIM1_SMCR : public MemRegister<uint32_t, 0x40012c08> { + using SMS = RegisterMask<TIM1_SMCR, (0x7u << 0x0u)>; + using OCCS = RegisterMask<TIM1_SMCR, (0x1u << 0x3u)>; + using TS = RegisterMask<TIM1_SMCR, (0x7u << 0x4u)>; + using MSM = RegisterMask<TIM1_SMCR, (0x1u << 0x7u)>; + using ETF = RegisterMask<TIM1_SMCR, (0xfu << 0x8u)>; + using ETPS = RegisterMask<TIM1_SMCR, (0x3u << 0xcu)>; + using ECE = RegisterMask<TIM1_SMCR, (0x1u << 0xeu)>; + using ETP = RegisterMask<TIM1_SMCR, (0x1u << 0xfu)>; + using SMS_1 = RegisterMask<TIM1_SMCR, (0x1u << 0x10u)>; + using TS_1 = RegisterMask<TIM1_SMCR, (0x3u << 0x14u)>; + }; + struct TIM1_DIER : public MemRegister<uint16_t, 0x40012c0c> { + using UIE = RegisterMask<TIM1_DIER, (0x1u << 0x0u)>; + using CC1IE = RegisterMask<TIM1_DIER, (0x1u << 0x1u)>; + using CC2IE = RegisterMask<TIM1_DIER, (0x1u << 0x2u)>; + using CC3IE = RegisterMask<TIM1_DIER, (0x1u << 0x3u)>; + using CC4IE = RegisterMask<TIM1_DIER, (0x1u << 0x4u)>; + using COMIE = RegisterMask<TIM1_DIER, (0x1u << 0x5u)>; + using TIE = RegisterMask<TIM1_DIER, (0x1u << 0x6u)>; + using BIE = RegisterMask<TIM1_DIER, (0x1u << 0x7u)>; + using UDE = RegisterMask<TIM1_DIER, (0x1u << 0x8u)>; + using CC1DE = RegisterMask<TIM1_DIER, (0x1u << 0x9u)>; + using CC2DE = RegisterMask<TIM1_DIER, (0x1u << 0xau)>; + using CC3DE = RegisterMask<TIM1_DIER, (0x1u << 0xbu)>; + using CC4DE = RegisterMask<TIM1_DIER, (0x1u << 0xcu)>; + using COMDE = RegisterMask<TIM1_DIER, (0x1u << 0xdu)>; + using TDE = RegisterMask<TIM1_DIER, (0x1u << 0xeu)>; + }; + struct TIM1_SR : public MemRegister<uint32_t, 0x40012c10> { + using UIF = RegisterMask<TIM1_SR, (0x1u << 0x0u)>; + using CC1IF = RegisterMask<TIM1_SR, (0x1u << 0x1u)>; + using CC2IF = RegisterMask<TIM1_SR, (0x1u << 0x2u)>; + using CC3IF = RegisterMask<TIM1_SR, (0x1u << 0x3u)>; + using CC4IF = RegisterMask<TIM1_SR, (0x1u << 0x4u)>; + using COMIF = RegisterMask<TIM1_SR, (0x1u << 0x5u)>; + using TIF = RegisterMask<TIM1_SR, (0x1u << 0x6u)>; + using BIF = RegisterMask<TIM1_SR, (0x1u << 0x7u)>; + using B2IF = RegisterMask<TIM1_SR, (0x1u << 0x8u)>; + using CC1OF = RegisterMask<TIM1_SR, (0x1u << 0x9u)>; + using CC2OF = RegisterMask<TIM1_SR, (0x1u << 0xau)>; + using CC3OF = RegisterMask<TIM1_SR, (0x1u << 0xbu)>; + using CC4OF = RegisterMask<TIM1_SR, (0x1u << 0xcu)>; + using SBIF = RegisterMask<TIM1_SR, (0x1u << 0xdu)>; + using CC5IF = RegisterMask<TIM1_SR, (0x1u << 0x10u)>; + using CC6IF = RegisterMask<TIM1_SR, (0x1u << 0x11u)>; + }; + struct TIM1_EGR : public MemRegister<uint16_t, 0x40012c14> { + using UG = RegisterMask<TIM1_EGR, (0x1u << 0x0u)>; + using CC1G = RegisterMask<TIM1_EGR, (0x1u << 0x1u)>; + using CC2G = RegisterMask<TIM1_EGR, (0x1u << 0x2u)>; + using CC3G = RegisterMask<TIM1_EGR, (0x1u << 0x3u)>; + using CC4G = RegisterMask<TIM1_EGR, (0x1u << 0x4u)>; + using COMG = RegisterMask<TIM1_EGR, (0x1u << 0x5u)>; + using TG = RegisterMask<TIM1_EGR, (0x1u << 0x6u)>; + using BG = RegisterMask<TIM1_EGR, (0x1u << 0x7u)>; + using B2G = RegisterMask<TIM1_EGR, (0x1u << 0x8u)>; + }; + struct TIM1_CCMR1_INPUT : public MemRegister<uint32_t, 0x40012c18> { + using CC1S = RegisterMask<TIM1_CCMR1_INPUT, (0x3u << 0x0u)>; + using IC1PSC = RegisterMask<TIM1_CCMR1_INPUT, (0x3u << 0x2u)>; + using IC1F = RegisterMask<TIM1_CCMR1_INPUT, (0xfu << 0x4u)>; + using CC2S = RegisterMask<TIM1_CCMR1_INPUT, (0x3u << 0x8u)>; + using IC2PSC = RegisterMask<TIM1_CCMR1_INPUT, (0x3u << 0xau)>; + using IC2F = RegisterMask<TIM1_CCMR1_INPUT, (0xfu << 0xcu)>; + }; + struct TIM1_CCMR1_OUTPUT : public MemRegister<uint32_t, 0x40012c18> { + using CC1S = RegisterMask<TIM1_CCMR1_OUTPUT, (0x3u << 0x0u)>; + using OC1FE = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0x2u)>; + using OC1PE = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0x3u)>; + using OC1M = RegisterMask<TIM1_CCMR1_OUTPUT, (0x7u << 0x4u)>; + using OC1CE = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0x7u)>; + using CC2S = RegisterMask<TIM1_CCMR1_OUTPUT, (0x3u << 0x8u)>; + using OC2FE = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0xau)>; + using OC2PE = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0xbu)>; + using OC2M = RegisterMask<TIM1_CCMR1_OUTPUT, (0x7u << 0xcu)>; + using OC2CE = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0xfu)>; + using OC1M_1 = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0x10u)>; + using OC2M_1 = RegisterMask<TIM1_CCMR1_OUTPUT, (0x1u << 0x18u)>; + }; + struct TIM1_CCMR2_INPUT : public MemRegister<uint32_t, 0x40012c1c> { + using CC3S = RegisterMask<TIM1_CCMR2_INPUT, (0x3u << 0x0u)>; + using IC3PSC = RegisterMask<TIM1_CCMR2_INPUT, (0x3u << 0x2u)>; + using IC3F = RegisterMask<TIM1_CCMR2_INPUT, (0xfu << 0x4u)>; + using CC4S = RegisterMask<TIM1_CCMR2_INPUT, (0x3u << 0x8u)>; + using IC4PSC = RegisterMask<TIM1_CCMR2_INPUT, (0x3u << 0xau)>; + using IC4F = RegisterMask<TIM1_CCMR2_INPUT, (0xfu << 0xcu)>; + }; + struct TIM1_CCMR2_OUTPUT : public MemRegister<uint32_t, 0x40012c1c> { + using CC3S = RegisterMask<TIM1_CCMR2_OUTPUT, (0x3u << 0x0u)>; + using OC3FE = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0x2u)>; + using OC3PE = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0x3u)>; + using OC3M = RegisterMask<TIM1_CCMR2_OUTPUT, (0x7u << 0x4u)>; + using OC3CE = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0x7u)>; + using CC4S = RegisterMask<TIM1_CCMR2_OUTPUT, (0x3u << 0x8u)>; + using OC4FE = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0xau)>; + using OC4PE = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0xbu)>; + using OC4M = RegisterMask<TIM1_CCMR2_OUTPUT, (0x7u << 0xcu)>; + using OC4CE = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0xfu)>; + using OC3M_1 = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0x10u)>; + using OC4M_1 = RegisterMask<TIM1_CCMR2_OUTPUT, (0x1u << 0x18u)>; + }; + struct TIM1_CCER : public MemRegister<uint32_t, 0x40012c20> { + using CC1E = RegisterMask<TIM1_CCER, (0x1u << 0x0u)>; + using CC1P = RegisterMask<TIM1_CCER, (0x1u << 0x1u)>; + using CC1NE = RegisterMask<TIM1_CCER, (0x1u << 0x2u)>; + using CC1NP = RegisterMask<TIM1_CCER, (0x1u << 0x3u)>; + using CC2E = RegisterMask<TIM1_CCER, (0x1u << 0x4u)>; + using CC2P = RegisterMask<TIM1_CCER, (0x1u << 0x5u)>; + using CC2NE = RegisterMask<TIM1_CCER, (0x1u << 0x6u)>; + using CC2NP = RegisterMask<TIM1_CCER, (0x1u << 0x7u)>; + using CC3E = RegisterMask<TIM1_CCER, (0x1u << 0x8u)>; + using CC3P = RegisterMask<TIM1_CCER, (0x1u << 0x9u)>; + using CC3NE = RegisterMask<TIM1_CCER, (0x1u << 0xau)>; + using CC3NP = RegisterMask<TIM1_CCER, (0x1u << 0xbu)>; + using CC4E = RegisterMask<TIM1_CCER, (0x1u << 0xcu)>; + using CC4P = RegisterMask<TIM1_CCER, (0x1u << 0xdu)>; + using CC4NP = RegisterMask<TIM1_CCER, (0x1u << 0xfu)>; + using CC5E = RegisterMask<TIM1_CCER, (0x1u << 0x10u)>; + using CC5P = RegisterMask<TIM1_CCER, (0x1u << 0x11u)>; + using CC6E = RegisterMask<TIM1_CCER, (0x1u << 0x14u)>; + using CC6P = RegisterMask<TIM1_CCER, (0x1u << 0x15u)>; + }; + struct TIM1_CNT : public MemRegister<uint32_t, 0x40012c24> { + using CNT = RegisterMask<TIM1_CNT, (0xffffu << 0x0u)>; + using UIFCPY = RegisterMask<TIM1_CNT, (0x1u << 0x1fu)>; + }; + struct TIM1_PSC : public MemRegister<uint16_t, 0x40012c28> { + using PSC = RegisterMask<TIM1_PSC, (0xffffu << 0x0u)>; + }; + struct TIM1_ARR : public MemRegister<uint16_t, 0x40012c2c> { + using ARR = RegisterMask<TIM1_ARR, (0xffffu << 0x0u)>; + }; + struct TIM1_RCR : public MemRegister<uint16_t, 0x40012c30> { + using REP = RegisterMask<TIM1_RCR, (0xffffu << 0x0u)>; + }; + struct TIM1_CCR1 : public MemRegister<uint16_t, 0x40012c34> { + using CCR1 = RegisterMask<TIM1_CCR1, (0xffffu << 0x0u)>; + }; + struct TIM1_CCR2 : public MemRegister<uint16_t, 0x40012c38> { + using CCR2 = RegisterMask<TIM1_CCR2, (0xffffu << 0x0u)>; + }; + struct TIM1_CCR3 : public MemRegister<uint16_t, 0x40012c3c> { + using CCR3 = RegisterMask<TIM1_CCR3, (0xffffu << 0x0u)>; + }; + struct TIM1_CCR4 : public MemRegister<uint16_t, 0x40012c40> { + using CCR4 = RegisterMask<TIM1_CCR4, (0xffffu << 0x0u)>; + }; + struct TIM1_BDTR : public MemRegister<uint32_t, 0x40012c44> { + using DTG = RegisterMask<TIM1_BDTR, (0xffu << 0x0u)>; + using LOCK = RegisterMask<TIM1_BDTR, (0x3u << 0x8u)>; + using OSSI = RegisterMask<TIM1_BDTR, (0x1u << 0xau)>; + using OSSR = RegisterMask<TIM1_BDTR, (0x1u << 0xbu)>; + using BKE = RegisterMask<TIM1_BDTR, (0x1u << 0xcu)>; + using BKP = RegisterMask<TIM1_BDTR, (0x1u << 0xdu)>; + using AOE = RegisterMask<TIM1_BDTR, (0x1u << 0xeu)>; + using MOE = RegisterMask<TIM1_BDTR, (0x1u << 0xfu)>; + using BKF = RegisterMask<TIM1_BDTR, (0xfu << 0x10u)>; + using BK2F = RegisterMask<TIM1_BDTR, (0xfu << 0x14u)>; + using BK2E = RegisterMask<TIM1_BDTR, (0x1u << 0x18u)>; + using BK2P = RegisterMask<TIM1_BDTR, (0x1u << 0x19u)>; + using BKDSRM = RegisterMask<TIM1_BDTR, (0x1u << 0x1au)>; + using BK2DSRM = RegisterMask<TIM1_BDTR, (0x1u << 0x1bu)>; + using BKBID = RegisterMask<TIM1_BDTR, (0x1u << 0x1cu)>; + using BK2BID = RegisterMask<TIM1_BDTR, (0x1u << 0x1du)>; + }; + struct TIM1_DCR : public MemRegister<uint16_t, 0x40012c48> { + using DBA = RegisterMask<TIM1_DCR, (0x1fu << 0x0u)>; + using DBL = RegisterMask<TIM1_DCR, (0x1fu << 0x8u)>; + }; + struct TIM1_DMAR : public MemRegister<uint32_t, 0x40012c4c> { + using DMAB = RegisterMask<TIM1_DMAR, (0x0u << 0x0u)>; + }; + struct TIM1_OR1 : public MemRegister<uint32_t, 0x40012c50> { + using OCREF_CLR = RegisterMask<TIM1_OR1, (0x3u << 0x0u)>; + }; + struct TIM1_CCMR3 : public MemRegister<uint32_t, 0x40012c54> { + using OC5FE = RegisterMask<TIM1_CCMR3, (0x1u << 0x2u)>; + using OC5PE = RegisterMask<TIM1_CCMR3, (0x1u << 0x3u)>; + using OC5M = RegisterMask<TIM1_CCMR3, (0x7u << 0x4u)>; + using OC5CE = RegisterMask<TIM1_CCMR3, (0x1u << 0x7u)>; + using OC6FE = RegisterMask<TIM1_CCMR3, (0x1u << 0xau)>; + using OC6PE = RegisterMask<TIM1_CCMR3, (0x1u << 0xbu)>; + using OC6M = RegisterMask<TIM1_CCMR3, (0x7u << 0xcu)>; + using OC6CE = RegisterMask<TIM1_CCMR3, (0x1u << 0xfu)>; + using OC5M_1 = RegisterMask<TIM1_CCMR3, (0x1u << 0x10u)>; + using OC6M_1 = RegisterMask<TIM1_CCMR3, (0x1u << 0x18u)>; + }; + struct TIM1_CCR5 : public MemRegister<uint32_t, 0x40012c58> { + using CCR5 = RegisterMask<TIM1_CCR5, (0xffffu << 0x0u)>; + using GC5C1 = RegisterMask<TIM1_CCR5, (0x1u << 0x1du)>; + using GC5C2 = RegisterMask<TIM1_CCR5, (0x1u << 0x1eu)>; + using GC5C3 = RegisterMask<TIM1_CCR5, (0x1u << 0x1fu)>; + }; + struct TIM1_CCR6 : public MemRegister<uint16_t, 0x40012c5c> { + using CCR6 = RegisterMask<TIM1_CCR6, (0xffffu << 0x0u)>; + }; + struct TIM1_AF1 : public MemRegister<uint32_t, 0x40012c60> { + using BKINE = RegisterMask<TIM1_AF1, (0x1u << 0x0u)>; + using BKCMP1E = RegisterMask<TIM1_AF1, (0x1u << 0x1u)>; + using BKCMP2E = RegisterMask<TIM1_AF1, (0x1u << 0x2u)>; + using BKINP = RegisterMask<TIM1_AF1, (0x1u << 0x9u)>; + using BKCMP1P = RegisterMask<TIM1_AF1, (0x1u << 0xau)>; + using BKCMP2P = RegisterMask<TIM1_AF1, (0x1u << 0xbu)>; + using ETRSEL = RegisterMask<TIM1_AF1, (0xfu << 0xeu)>; + }; + struct TIM1_AF2 : public MemRegister<uint32_t, 0x40012c64> { + using BK2INE = RegisterMask<TIM1_AF2, (0x1u << 0x0u)>; + using BK2CMP1E = RegisterMask<TIM1_AF2, (0x1u << 0x1u)>; + using BK2CMP2E = RegisterMask<TIM1_AF2, (0x1u << 0x2u)>; + using BK2INP = RegisterMask<TIM1_AF2, (0x1u << 0x9u)>; + using BK2CMP1P = RegisterMask<TIM1_AF2, (0x1u << 0xau)>; + using BK2CMP2P = RegisterMask<TIM1_AF2, (0x1u << 0xbu)>; + }; + struct TIM1_TISEL : public MemRegister<uint32_t, 0x40012c68> { + using TI1SEL = RegisterMask<TIM1_TISEL, (0xfu << 0x0u)>; + using TI2SEL = RegisterMask<TIM1_TISEL, (0xfu << 0x8u)>; + using TI3SEL = RegisterMask<TIM1_TISEL, (0xfu << 0x10u)>; + using TI4SEL = RegisterMask<TIM1_TISEL, (0xfu << 0x18u)>; + }; + using ALL = RegisterGroup<TIM1_CR1, TIM1_CR2, TIM1_SMCR, TIM1_DIER, TIM1_SR, TIM1_EGR, TIM1_CCMR1_INPUT, TIM1_CCMR1_OUTPUT, TIM1_CCMR2_INPUT, TIM1_CCMR2_OUTPUT, TIM1_CCER, TIM1_CNT, TIM1_PSC, TIM1_ARR, TIM1_RCR, TIM1_CCR1, TIM1_CCR2, TIM1_CCR3, TIM1_CCR4, TIM1_BDTR, TIM1_DCR, TIM1_DMAR, TIM1_OR1, TIM1_CCMR3, TIM1_CCR5, TIM1_CCR6, TIM1_AF1, TIM1_AF2, TIM1_TISEL>; + } + namespace TIM15 { + struct TIM15_CR1 : public MemRegister<uint16_t, 0x40014000> { + using CEN = RegisterMask<TIM15_CR1, (0x1u << 0x0u)>; + using UDIS = RegisterMask<TIM15_CR1, (0x1u << 0x1u)>; + using URS = RegisterMask<TIM15_CR1, (0x1u << 0x2u)>; + using OPM = RegisterMask<TIM15_CR1, (0x1u << 0x3u)>; + using ARPE = RegisterMask<TIM15_CR1, (0x1u << 0x7u)>; + using CKD = RegisterMask<TIM15_CR1, (0x3u << 0x8u)>; + using UIFREMAP = RegisterMask<TIM15_CR1, (0x1u << 0xbu)>; + }; + struct TIM15_CR2 : public MemRegister<uint16_t, 0x40014004> { + using CCPC = RegisterMask<TIM15_CR2, (0x1u << 0x0u)>; + using CCUS = RegisterMask<TIM15_CR2, (0x1u << 0x2u)>; + using CCDS = RegisterMask<TIM15_CR2, (0x1u << 0x3u)>; + using MMS = RegisterMask<TIM15_CR2, (0x7u << 0x4u)>; + using TI1S = RegisterMask<TIM15_CR2, (0x1u << 0x7u)>; + using OIS1 = RegisterMask<TIM15_CR2, (0x1u << 0x8u)>; + using OIS1N = RegisterMask<TIM15_CR2, (0x1u << 0x9u)>; + using OIS2 = RegisterMask<TIM15_CR2, (0x1u << 0xau)>; + }; + struct TIM15_SMCR : public MemRegister<uint32_t, 0x40014008> { + using SMS = RegisterMask<TIM15_SMCR, (0x7u << 0x0u)>; + using TS = RegisterMask<TIM15_SMCR, (0x7u << 0x4u)>; + using MSM = RegisterMask<TIM15_SMCR, (0x1u << 0x7u)>; + using SMS_1 = RegisterMask<TIM15_SMCR, (0x1u << 0x10u)>; + using TS_1 = RegisterMask<TIM15_SMCR, (0x3u << 0x14u)>; + }; + struct TIM15_DIER : public MemRegister<uint16_t, 0x4001400c> { + using UIE = RegisterMask<TIM15_DIER, (0x1u << 0x0u)>; + using CC1IE = RegisterMask<TIM15_DIER, (0x1u << 0x1u)>; + using CC2IE = RegisterMask<TIM15_DIER, (0x1u << 0x2u)>; + using COMIE = RegisterMask<TIM15_DIER, (0x1u << 0x5u)>; + using TIE = RegisterMask<TIM15_DIER, (0x1u << 0x6u)>; + using BIE = RegisterMask<TIM15_DIER, (0x1u << 0x7u)>; + using UDE = RegisterMask<TIM15_DIER, (0x1u << 0x8u)>; + using CC1DE = RegisterMask<TIM15_DIER, (0x1u << 0x9u)>; + using COMDE = RegisterMask<TIM15_DIER, (0x1u << 0xdu)>; + using TDE = RegisterMask<TIM15_DIER, (0x1u << 0xeu)>; + }; + struct TIM15_SR : public MemRegister<uint16_t, 0x40014010> { + using UIF = RegisterMask<TIM15_SR, (0x1u << 0x0u)>; + using CC1IF = RegisterMask<TIM15_SR, (0x1u << 0x1u)>; + using CC2IF = RegisterMask<TIM15_SR, (0x1u << 0x2u)>; + using COMIF = RegisterMask<TIM15_SR, (0x1u << 0x5u)>; + using TIF = RegisterMask<TIM15_SR, (0x1u << 0x6u)>; + using BIF = RegisterMask<TIM15_SR, (0x1u << 0x7u)>; + using CC1OF = RegisterMask<TIM15_SR, (0x1u << 0x9u)>; + using CC2OF = RegisterMask<TIM15_SR, (0x1u << 0xau)>; + }; + struct TIM15_EGR : public MemRegister<uint16_t, 0x40014014> { + using UG = RegisterMask<TIM15_EGR, (0x1u << 0x0u)>; + using CC1G = RegisterMask<TIM15_EGR, (0x1u << 0x1u)>; + using CC2G = RegisterMask<TIM15_EGR, (0x1u << 0x2u)>; + using COMG = RegisterMask<TIM15_EGR, (0x1u << 0x5u)>; + using TG = RegisterMask<TIM15_EGR, (0x1u << 0x6u)>; + using BG = RegisterMask<TIM15_EGR, (0x1u << 0x7u)>; + }; + struct TIM15_CCMR1 : public MemRegister<uint32_t, 0x40014018> { + using CC1S = RegisterMask<TIM15_CCMR1, (0x3u << 0x0u)>; + using IC1PSC = RegisterMask<TIM15_CCMR1, (0x3u << 0x2u)>; + using IC1F = RegisterMask<TIM15_CCMR1, (0xfu << 0x4u)>; + using CC2S = RegisterMask<TIM15_CCMR1, (0x3u << 0x8u)>; + using IC2PSC = RegisterMask<TIM15_CCMR1, (0x3u << 0xau)>; + using IC2F = RegisterMask<TIM15_CCMR1, (0xfu << 0xcu)>; + }; + struct TIM15_CCMR1_ALTERNATE1 : public MemRegister<uint32_t, 0x40014018> { + using CC1S = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x3u << 0x0u)>; + using OC1FE = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x1u << 0x2u)>; + using OC1PE = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x1u << 0x3u)>; + using OC1M = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x7u << 0x4u)>; + using CC2S = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x3u << 0x8u)>; + using OC2FE = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x1u << 0xau)>; + using OC2PE = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x1u << 0xbu)>; + using OC2M = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x7u << 0xcu)>; + using OC1M_1 = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x1u << 0x10u)>; + using OC2M_1 = RegisterMask<TIM15_CCMR1_ALTERNATE1, (0x1u << 0x18u)>; + }; + struct TIM15_CCER : public MemRegister<uint16_t, 0x40014020> { + using CC1E = RegisterMask<TIM15_CCER, (0x1u << 0x0u)>; + using CC1P = RegisterMask<TIM15_CCER, (0x1u << 0x1u)>; + using CC1NE = RegisterMask<TIM15_CCER, (0x1u << 0x2u)>; + using CC1NP = RegisterMask<TIM15_CCER, (0x1u << 0x3u)>; + using CC2E = RegisterMask<TIM15_CCER, (0x1u << 0x4u)>; + using CC2P = RegisterMask<TIM15_CCER, (0x1u << 0x5u)>; + using CC2NP = RegisterMask<TIM15_CCER, (0x1u << 0x7u)>; + }; + struct TIM15_CNT : public MemRegister<uint32_t, 0x40014024> { + using CNT = RegisterMask<TIM15_CNT, (0xffffu << 0x0u)>; + using UIFCPY = RegisterMask<TIM15_CNT, (0x1u << 0x1fu)>; + }; + struct TIM15_PSC : public MemRegister<uint16_t, 0x40014028> { + using PSC = RegisterMask<TIM15_PSC, (0xffffu << 0x0u)>; + }; + struct TIM15_ARR : public MemRegister<uint16_t, 0x4001402c> { + using ARR = RegisterMask<TIM15_ARR, (0xffffu << 0x0u)>; + }; + struct TIM15_RCR : public MemRegister<uint16_t, 0x40014030> { + using REP = RegisterMask<TIM15_RCR, (0xffu << 0x0u)>; + }; + struct TIM15_CCR1 : public MemRegister<uint16_t, 0x40014034> { + using CCR1 = RegisterMask<TIM15_CCR1, (0xffffu << 0x0u)>; + }; + struct TIM15_CCR2 : public MemRegister<uint16_t, 0x40014038> { + using CCR2 = RegisterMask<TIM15_CCR2, (0xffffu << 0x0u)>; + }; + struct TIM15_BDTR : public MemRegister<uint32_t, 0x40014044> { + using DTG = RegisterMask<TIM15_BDTR, (0xffu << 0x0u)>; + using LOCK = RegisterMask<TIM15_BDTR, (0x3u << 0x8u)>; + using OSSI = RegisterMask<TIM15_BDTR, (0x1u << 0xau)>; + using OSSR = RegisterMask<TIM15_BDTR, (0x1u << 0xbu)>; + using BKE = RegisterMask<TIM15_BDTR, (0x1u << 0xcu)>; + using BKP = RegisterMask<TIM15_BDTR, (0x1u << 0xdu)>; + using AOE = RegisterMask<TIM15_BDTR, (0x1u << 0xeu)>; + using MOE = RegisterMask<TIM15_BDTR, (0x1u << 0xfu)>; + using BKF = RegisterMask<TIM15_BDTR, (0xfu << 0x10u)>; + using BKDSRM = RegisterMask<TIM15_BDTR, (0x1u << 0x1au)>; + using BKBID = RegisterMask<TIM15_BDTR, (0x1u << 0x1cu)>; + }; + struct TIM15_DCR : public MemRegister<uint16_t, 0x40014048> { + using DBA = RegisterMask<TIM15_DCR, (0x1fu << 0x0u)>; + using DBL = RegisterMask<TIM15_DCR, (0x1fu << 0x8u)>; + }; + struct TIM15_DMAR : public MemRegister<uint16_t, 0x4001404c> { + using DMAB = RegisterMask<TIM15_DMAR, (0xffffu << 0x0u)>; + }; + struct TIM15_AF1 : public MemRegister<uint32_t, 0x40014060> { + using BKINE = RegisterMask<TIM15_AF1, (0x1u << 0x0u)>; + using BKCMP1E = RegisterMask<TIM15_AF1, (0x1u << 0x1u)>; + using BKCMP2E = RegisterMask<TIM15_AF1, (0x1u << 0x2u)>; + using BKINP = RegisterMask<TIM15_AF1, (0x1u << 0x9u)>; + using BKCMP1P = RegisterMask<TIM15_AF1, (0x1u << 0xau)>; + using BKCMP2P = RegisterMask<TIM15_AF1, (0x1u << 0xbu)>; + }; + struct TIM15_TISEL : public MemRegister<uint32_t, 0x40014068> { + using TI1SEL = RegisterMask<TIM15_TISEL, (0xfu << 0x0u)>; + using TI2SEL = RegisterMask<TIM15_TISEL, (0xfu << 0x8u)>; + }; + using ALL = RegisterGroup<TIM15_CR1, TIM15_CR2, TIM15_SMCR, TIM15_DIER, TIM15_SR, TIM15_EGR, TIM15_CCMR1, TIM15_CCMR1_ALTERNATE1, TIM15_CCER, TIM15_CNT, TIM15_PSC, TIM15_ARR, TIM15_RCR, TIM15_CCR1, TIM15_CCR2, TIM15_BDTR, TIM15_DCR, TIM15_DMAR, TIM15_AF1, TIM15_TISEL>; + } + namespace TIM16 { + struct TIM16_CR1 : public MemRegister<uint16_t, 0x40014400> { + using CEN = RegisterMask<TIM16_CR1, (0x1u << 0x0u)>; + using UDIS = RegisterMask<TIM16_CR1, (0x1u << 0x1u)>; + using URS = RegisterMask<TIM16_CR1, (0x1u << 0x2u)>; + using OPM = RegisterMask<TIM16_CR1, (0x1u << 0x3u)>; + using ARPE = RegisterMask<TIM16_CR1, (0x1u << 0x7u)>; + using CKD = RegisterMask<TIM16_CR1, (0x3u << 0x8u)>; + using UIFREMAP = RegisterMask<TIM16_CR1, (0x1u << 0xbu)>; + }; + struct TIM16_CR2 : public MemRegister<uint16_t, 0x40014404> { + using CCPC = RegisterMask<TIM16_CR2, (0x1u << 0x0u)>; + using CCUS = RegisterMask<TIM16_CR2, (0x1u << 0x2u)>; + using CCDS = RegisterMask<TIM16_CR2, (0x1u << 0x3u)>; + using OIS1 = RegisterMask<TIM16_CR2, (0x1u << 0x8u)>; + using OIS1N = RegisterMask<TIM16_CR2, (0x1u << 0x9u)>; + }; + struct TIM16_DIER : public MemRegister<uint16_t, 0x4001440c> { + using UIE = RegisterMask<TIM16_DIER, (0x1u << 0x0u)>; + using CC1IE = RegisterMask<TIM16_DIER, (0x1u << 0x1u)>; + using COMIE = RegisterMask<TIM16_DIER, (0x1u << 0x5u)>; + using BIE = RegisterMask<TIM16_DIER, (0x1u << 0x7u)>; + using UDE = RegisterMask<TIM16_DIER, (0x1u << 0x8u)>; + using CC1DE = RegisterMask<TIM16_DIER, (0x1u << 0x9u)>; + }; + struct TIM16_SR : public MemRegister<uint16_t, 0x40014410> { + using UIF = RegisterMask<TIM16_SR, (0x1u << 0x0u)>; + using CC1IF = RegisterMask<TIM16_SR, (0x1u << 0x1u)>; + using COMIF = RegisterMask<TIM16_SR, (0x1u << 0x5u)>; + using BIF = RegisterMask<TIM16_SR, (0x1u << 0x7u)>; + using CC1OF = RegisterMask<TIM16_SR, (0x1u << 0x9u)>; + }; + struct TIM16_EGR : public MemRegister<uint16_t, 0x40014414> { + using UG = RegisterMask<TIM16_EGR, (0x1u << 0x0u)>; + using CC1G = RegisterMask<TIM16_EGR, (0x1u << 0x1u)>; + using COMG = RegisterMask<TIM16_EGR, (0x1u << 0x5u)>; + using BG = RegisterMask<TIM16_EGR, (0x1u << 0x7u)>; + }; + struct TIM16_CCMR1 : public MemRegister<uint32_t, 0x40014418> { + using CC1S = RegisterMask<TIM16_CCMR1, (0x3u << 0x0u)>; + using IC1PSC = RegisterMask<TIM16_CCMR1, (0x3u << 0x2u)>; + using IC1F = RegisterMask<TIM16_CCMR1, (0xfu << 0x4u)>; + }; + struct TIM16_CCMR1_ALTERNATE1 : public MemRegister<uint32_t, 0x40014418> { + using CC1S = RegisterMask<TIM16_CCMR1_ALTERNATE1, (0x3u << 0x0u)>; + using OC1FE = RegisterMask<TIM16_CCMR1_ALTERNATE1, (0x1u << 0x2u)>; + using OC1PE = RegisterMask<TIM16_CCMR1_ALTERNATE1, (0x1u << 0x3u)>; + using OC1M = RegisterMask<TIM16_CCMR1_ALTERNATE1, (0x7u << 0x4u)>; + using OC1M_1 = RegisterMask<TIM16_CCMR1_ALTERNATE1, (0x1u << 0x10u)>; + }; + struct TIM16_CCER : public MemRegister<uint16_t, 0x40014420> { + using CC1E = RegisterMask<TIM16_CCER, (0x1u << 0x0u)>; + using CC1P = RegisterMask<TIM16_CCER, (0x1u << 0x1u)>; + using CC1NE = RegisterMask<TIM16_CCER, (0x1u << 0x2u)>; + using CC1NP = RegisterMask<TIM16_CCER, (0x1u << 0x3u)>; + }; + struct TIM16_CNT : public MemRegister<uint32_t, 0x40014424> { + using CNT = RegisterMask<TIM16_CNT, (0xffffu << 0x0u)>; + using UIFCPY = RegisterMask<TIM16_CNT, (0x1u << 0x1fu)>; + }; + struct TIM16_PSC : public MemRegister<uint16_t, 0x40014428> { + using PSC = RegisterMask<TIM16_PSC, (0xffffu << 0x0u)>; + }; + struct TIM16_ARR : public MemRegister<uint16_t, 0x4001442c> { + using ARR = RegisterMask<TIM16_ARR, (0xffffu << 0x0u)>; + }; + struct TIM16_RCR : public MemRegister<uint16_t, 0x40014430> { + using REP = RegisterMask<TIM16_RCR, (0xffu << 0x0u)>; + }; + struct TIM16_CCR1 : public MemRegister<uint16_t, 0x40014434> { + using CCR1 = RegisterMask<TIM16_CCR1, (0xffffu << 0x0u)>; + }; + struct TIM16_BDTR : public MemRegister<uint32_t, 0x40014444> { + using DTG = RegisterMask<TIM16_BDTR, (0xffu << 0x0u)>; + using LOCK = RegisterMask<TIM16_BDTR, (0x3u << 0x8u)>; + using OSSI = RegisterMask<TIM16_BDTR, (0x1u << 0xau)>; + using OSSR = RegisterMask<TIM16_BDTR, (0x1u << 0xbu)>; + using BKE = RegisterMask<TIM16_BDTR, (0x1u << 0xcu)>; + using BKP = RegisterMask<TIM16_BDTR, (0x1u << 0xdu)>; + using AOE = RegisterMask<TIM16_BDTR, (0x1u << 0xeu)>; + using MOE = RegisterMask<TIM16_BDTR, (0x1u << 0xfu)>; + using BKF = RegisterMask<TIM16_BDTR, (0xfu << 0x10u)>; + using BKDSRM = RegisterMask<TIM16_BDTR, (0x1u << 0x1au)>; + using BKBID = RegisterMask<TIM16_BDTR, (0x1u << 0x1cu)>; + }; + struct TIM16_DCR : public MemRegister<uint16_t, 0x40014448> { + using DBA = RegisterMask<TIM16_DCR, (0x1fu << 0x0u)>; + using DBL = RegisterMask<TIM16_DCR, (0x1fu << 0x8u)>; + }; + struct TIM16_DMAR : public MemRegister<uint16_t, 0x4001444c> { + using DMAB = RegisterMask<TIM16_DMAR, (0xffffu << 0x0u)>; + }; + struct TIM16_AF1 : public MemRegister<uint32_t, 0x40014460> { + using BKINE = RegisterMask<TIM16_AF1, (0x1u << 0x0u)>; + using BKCMP1E = RegisterMask<TIM16_AF1, (0x1u << 0x1u)>; + using BKCMP2E = RegisterMask<TIM16_AF1, (0x1u << 0x2u)>; + using BKINP = RegisterMask<TIM16_AF1, (0x1u << 0x9u)>; + using BKCMP1P = RegisterMask<TIM16_AF1, (0x1u << 0xau)>; + using BKCMP2P = RegisterMask<TIM16_AF1, (0x1u << 0xbu)>; + }; + struct TIM16_TISEL : public MemRegister<uint32_t, 0x40014468> { + using TI1SEL = RegisterMask<TIM16_TISEL, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<TIM16_CR1, TIM16_CR2, TIM16_DIER, TIM16_SR, TIM16_EGR, TIM16_CCMR1, TIM16_CCMR1_ALTERNATE1, TIM16_CCER, TIM16_CNT, TIM16_PSC, TIM16_ARR, TIM16_RCR, TIM16_CCR1, TIM16_BDTR, TIM16_DCR, TIM16_DMAR, TIM16_AF1, TIM16_TISEL>; + } + namespace TIM2 { + struct TIM2_CR1 : public MemRegister<uint16_t, 0x40000000> { + using CEN = RegisterMask<TIM2_CR1, (0x1u << 0x0u)>; + using UDIS = RegisterMask<TIM2_CR1, (0x1u << 0x1u)>; + using URS = RegisterMask<TIM2_CR1, (0x1u << 0x2u)>; + using OPM = RegisterMask<TIM2_CR1, (0x1u << 0x3u)>; + using DIR = RegisterMask<TIM2_CR1, (0x1u << 0x4u)>; + using CMS = RegisterMask<TIM2_CR1, (0x3u << 0x5u)>; + using ARPE = RegisterMask<TIM2_CR1, (0x1u << 0x7u)>; + using CKD = RegisterMask<TIM2_CR1, (0x3u << 0x8u)>; + using UIFREMAP = RegisterMask<TIM2_CR1, (0x1u << 0xbu)>; + }; + struct TIM2_CR2 : public MemRegister<uint16_t, 0x40000004> { + using CCDS = RegisterMask<TIM2_CR2, (0x1u << 0x3u)>; + using MMS = RegisterMask<TIM2_CR2, (0x7u << 0x4u)>; + using TI1S = RegisterMask<TIM2_CR2, (0x1u << 0x7u)>; + }; + struct TIM2_SMCR : public MemRegister<uint32_t, 0x40000008> { + using SMS = RegisterMask<TIM2_SMCR, (0x7u << 0x0u)>; + using OCCS = RegisterMask<TIM2_SMCR, (0x1u << 0x3u)>; + using TS = RegisterMask<TIM2_SMCR, (0x7u << 0x4u)>; + using MSM = RegisterMask<TIM2_SMCR, (0x1u << 0x7u)>; + using ETF = RegisterMask<TIM2_SMCR, (0xfu << 0x8u)>; + using ETPS = RegisterMask<TIM2_SMCR, (0x3u << 0xcu)>; + using ECE = RegisterMask<TIM2_SMCR, (0x1u << 0xeu)>; + using ETP = RegisterMask<TIM2_SMCR, (0x1u << 0xfu)>; + using SMS_1 = RegisterMask<TIM2_SMCR, (0x1u << 0x10u)>; + using TS_1 = RegisterMask<TIM2_SMCR, (0x3u << 0x14u)>; + }; + struct TIM2_DIER : public MemRegister<uint16_t, 0x4000000c> { + using UIE = RegisterMask<TIM2_DIER, (0x1u << 0x0u)>; + using CC1IE = RegisterMask<TIM2_DIER, (0x1u << 0x1u)>; + using CC2IE = RegisterMask<TIM2_DIER, (0x1u << 0x2u)>; + using CC3IE = RegisterMask<TIM2_DIER, (0x1u << 0x3u)>; + using CC4IE = RegisterMask<TIM2_DIER, (0x1u << 0x4u)>; + using TIE = RegisterMask<TIM2_DIER, (0x1u << 0x6u)>; + using UDE = RegisterMask<TIM2_DIER, (0x1u << 0x8u)>; + using CC1DE = RegisterMask<TIM2_DIER, (0x1u << 0x9u)>; + using CC2DE = RegisterMask<TIM2_DIER, (0x1u << 0xau)>; + using CC3DE = RegisterMask<TIM2_DIER, (0x1u << 0xbu)>; + using CC4DE = RegisterMask<TIM2_DIER, (0x1u << 0xcu)>; + using TDE = RegisterMask<TIM2_DIER, (0x1u << 0xeu)>; + }; + struct TIM2_SR : public MemRegister<uint16_t, 0x40000010> { + using UIF = RegisterMask<TIM2_SR, (0x1u << 0x0u)>; + using CC1IF = RegisterMask<TIM2_SR, (0x1u << 0x1u)>; + using CC2IF = RegisterMask<TIM2_SR, (0x1u << 0x2u)>; + using CC3IF = RegisterMask<TIM2_SR, (0x1u << 0x3u)>; + using CC4IF = RegisterMask<TIM2_SR, (0x1u << 0x4u)>; + using TIF = RegisterMask<TIM2_SR, (0x1u << 0x6u)>; + using CC1OF = RegisterMask<TIM2_SR, (0x1u << 0x9u)>; + using CC2OF = RegisterMask<TIM2_SR, (0x1u << 0xau)>; + using CC3OF = RegisterMask<TIM2_SR, (0x1u << 0xbu)>; + using CC4OF = RegisterMask<TIM2_SR, (0x1u << 0xcu)>; + }; + struct TIM2_EGR : public MemRegister<uint16_t, 0x40000014> { + using UG = RegisterMask<TIM2_EGR, (0x1u << 0x0u)>; + using CC1G = RegisterMask<TIM2_EGR, (0x1u << 0x1u)>; + using CC2G = RegisterMask<TIM2_EGR, (0x1u << 0x2u)>; + using CC3G = RegisterMask<TIM2_EGR, (0x1u << 0x3u)>; + using CC4G = RegisterMask<TIM2_EGR, (0x1u << 0x4u)>; + using TG = RegisterMask<TIM2_EGR, (0x1u << 0x6u)>; + }; + struct TIM2_CCMR1 : public MemRegister<uint32_t, 0x40000018> { + using CC1S = RegisterMask<TIM2_CCMR1, (0x3u << 0x0u)>; + using IC1PSC = RegisterMask<TIM2_CCMR1, (0x3u << 0x2u)>; + using IC1F = RegisterMask<TIM2_CCMR1, (0xfu << 0x4u)>; + using CC2S = RegisterMask<TIM2_CCMR1, (0x3u << 0x8u)>; + using IC2PSC = RegisterMask<TIM2_CCMR1, (0x3u << 0xau)>; + using IC2F = RegisterMask<TIM2_CCMR1, (0xfu << 0xcu)>; + }; + struct TIM2_CCMR1_ALTERNATE1 : public MemRegister<uint32_t, 0x40000018> { + using CC1S = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x3u << 0x0u)>; + using OC1FE = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0x2u)>; + using OC1PE = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0x3u)>; + using OC1M = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x7u << 0x4u)>; + using OC1CE = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0x7u)>; + using CC2S = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x3u << 0x8u)>; + using OC2FE = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0xau)>; + using OC2PE = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0xbu)>; + using OC2M = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x7u << 0xcu)>; + using OC2CE = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0xfu)>; + using OC1M_1 = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0x10u)>; + using OC2M_1 = RegisterMask<TIM2_CCMR1_ALTERNATE1, (0x1u << 0x18u)>; + }; + struct TIM2_CCMR2 : public MemRegister<uint32_t, 0x4000001c> { + using CC3S = RegisterMask<TIM2_CCMR2, (0x3u << 0x0u)>; + using IC3PSC = RegisterMask<TIM2_CCMR2, (0x3u << 0x2u)>; + using IC3F = RegisterMask<TIM2_CCMR2, (0xfu << 0x4u)>; + using CC4S = RegisterMask<TIM2_CCMR2, (0x3u << 0x8u)>; + using IC4PSC = RegisterMask<TIM2_CCMR2, (0x3u << 0xau)>; + using IC4F = RegisterMask<TIM2_CCMR2, (0xfu << 0xcu)>; + }; + struct TIM2_CCMR2_ALTERNATE1 : public MemRegister<uint32_t, 0x4000001c> { + using CC3S = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x3u << 0x0u)>; + using OC3FE = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0x2u)>; + using OC3PE = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0x3u)>; + using OC3M = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x7u << 0x4u)>; + using OC3CE = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0x7u)>; + using CC4S = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x3u << 0x8u)>; + using OC4FE = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0xau)>; + using OC4PE = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0xbu)>; + using OC4M = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x7u << 0xcu)>; + using OC4CE = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0xfu)>; + using OC3M_1 = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0x10u)>; + using OC4M_1 = RegisterMask<TIM2_CCMR2_ALTERNATE1, (0x1u << 0x18u)>; + }; + struct TIM2_CCER : public MemRegister<uint16_t, 0x40000020> { + using CC1E = RegisterMask<TIM2_CCER, (0x1u << 0x0u)>; + using CC1P = RegisterMask<TIM2_CCER, (0x1u << 0x1u)>; + using CC1NP = RegisterMask<TIM2_CCER, (0x1u << 0x3u)>; + using CC2E = RegisterMask<TIM2_CCER, (0x1u << 0x4u)>; + using CC2P = RegisterMask<TIM2_CCER, (0x1u << 0x5u)>; + using CC2NP = RegisterMask<TIM2_CCER, (0x1u << 0x7u)>; + using CC3E = RegisterMask<TIM2_CCER, (0x1u << 0x8u)>; + using CC3P = RegisterMask<TIM2_CCER, (0x1u << 0x9u)>; + using CC3NP = RegisterMask<TIM2_CCER, (0x1u << 0xbu)>; + using CC4E = RegisterMask<TIM2_CCER, (0x1u << 0xcu)>; + using CC4P = RegisterMask<TIM2_CCER, (0x1u << 0xdu)>; + using CC4NP = RegisterMask<TIM2_CCER, (0x1u << 0xfu)>; + }; + struct TIM2_CNT : public MemRegister<uint32_t, 0x40000024> { + using CNT = RegisterMask<TIM2_CNT, (0x0u << 0x0u)>; + }; + struct TIM2_CNT_ALTERNATE1 : public MemRegister<uint32_t, 0x40000024> { + using CNT = RegisterMask<TIM2_CNT_ALTERNATE1, (0x7fffffffu << 0x0u)>; + using UIFCPY = RegisterMask<TIM2_CNT_ALTERNATE1, (0x1u << 0x1fu)>; + }; + struct TIM2_PSC : public MemRegister<uint16_t, 0x40000028> { + using PSC = RegisterMask<TIM2_PSC, (0xffffu << 0x0u)>; + }; + struct TIM2_ARR : public MemRegister<uint32_t, 0x4000002c> { + using ARR = RegisterMask<TIM2_ARR, (0x0u << 0x0u)>; + }; + struct TIM2_CCR1 : public MemRegister<uint32_t, 0x40000034> { + using CCR1 = RegisterMask<TIM2_CCR1, (0x0u << 0x0u)>; + }; + struct TIM2_CCR2 : public MemRegister<uint32_t, 0x40000038> { + using CCR2 = RegisterMask<TIM2_CCR2, (0x0u << 0x0u)>; + }; + struct TIM2_CCR3 : public MemRegister<uint32_t, 0x4000003c> { + using CCR3 = RegisterMask<TIM2_CCR3, (0x0u << 0x0u)>; + }; + struct TIM2_CCR4 : public MemRegister<uint32_t, 0x40000040> { + using CCR4 = RegisterMask<TIM2_CCR4, (0x0u << 0x0u)>; + }; + struct TIM2_DCR : public MemRegister<uint16_t, 0x40000048> { + using DBA = RegisterMask<TIM2_DCR, (0x1fu << 0x0u)>; + using DBL = RegisterMask<TIM2_DCR, (0x1fu << 0x8u)>; + }; + struct TIM2_DMAR : public MemRegister<uint16_t, 0x4000004c> { + using DMAB = RegisterMask<TIM2_DMAR, (0xffffu << 0x0u)>; + }; + struct TIM2_OR1 : public MemRegister<uint32_t, 0x40000050> { + using OCREF_CLR = RegisterMask<TIM2_OR1, (0x3u << 0x0u)>; + }; + struct TIM2_AF1 : public MemRegister<uint32_t, 0x40000060> { + using ETRSEL = RegisterMask<TIM2_AF1, (0xfu << 0xeu)>; + }; + struct TIM2_TISEL : public MemRegister<uint32_t, 0x40000068> { + using TI1SEL = RegisterMask<TIM2_TISEL, (0xfu << 0x0u)>; + using TI2SEL = RegisterMask<TIM2_TISEL, (0xfu << 0x8u)>; + using TI3SEL = RegisterMask<TIM2_TISEL, (0xfu << 0x10u)>; + }; + using ALL = RegisterGroup<TIM2_CR1, TIM2_CR2, TIM2_SMCR, TIM2_DIER, TIM2_SR, TIM2_EGR, TIM2_CCMR1, TIM2_CCMR1_ALTERNATE1, TIM2_CCMR2, TIM2_CCMR2_ALTERNATE1, TIM2_CCER, TIM2_CNT, TIM2_CNT_ALTERNATE1, TIM2_PSC, TIM2_ARR, TIM2_CCR1, TIM2_CCR2, TIM2_CCR3, TIM2_CCR4, TIM2_DCR, TIM2_DMAR, TIM2_OR1, TIM2_AF1, TIM2_TISEL>; + } + namespace TIM3 { + struct TIM3_CR1 : public MemRegister<uint16_t, 0x40000400> { + using CEN = RegisterMask<TIM3_CR1, (0x1u << 0x0u)>; + using UDIS = RegisterMask<TIM3_CR1, (0x1u << 0x1u)>; + using URS = RegisterMask<TIM3_CR1, (0x1u << 0x2u)>; + using OPM = RegisterMask<TIM3_CR1, (0x1u << 0x3u)>; + using DIR = RegisterMask<TIM3_CR1, (0x1u << 0x4u)>; + using CMS = RegisterMask<TIM3_CR1, (0x3u << 0x5u)>; + using ARPE = RegisterMask<TIM3_CR1, (0x1u << 0x7u)>; + using CKD = RegisterMask<TIM3_CR1, (0x3u << 0x8u)>; + using UIFREMAP = RegisterMask<TIM3_CR1, (0x1u << 0xbu)>; + }; + struct TIM3_CR2 : public MemRegister<uint16_t, 0x40000404> { + using CCDS = RegisterMask<TIM3_CR2, (0x1u << 0x3u)>; + using MMS = RegisterMask<TIM3_CR2, (0x7u << 0x4u)>; + using TI1S = RegisterMask<TIM3_CR2, (0x1u << 0x7u)>; + }; + struct TIM3_SMCR : public MemRegister<uint32_t, 0x40000408> { + using SMS = RegisterMask<TIM3_SMCR, (0x7u << 0x0u)>; + using OCCS = RegisterMask<TIM3_SMCR, (0x1u << 0x3u)>; + using TS = RegisterMask<TIM3_SMCR, (0x7u << 0x4u)>; + using MSM = RegisterMask<TIM3_SMCR, (0x1u << 0x7u)>; + using ETF = RegisterMask<TIM3_SMCR, (0xfu << 0x8u)>; + using ETPS = RegisterMask<TIM3_SMCR, (0x3u << 0xcu)>; + using ECE = RegisterMask<TIM3_SMCR, (0x1u << 0xeu)>; + using ETP = RegisterMask<TIM3_SMCR, (0x1u << 0xfu)>; + using SMS_1 = RegisterMask<TIM3_SMCR, (0x1u << 0x10u)>; + using TS_1 = RegisterMask<TIM3_SMCR, (0x3u << 0x14u)>; + }; + struct TIM3_DIER : public MemRegister<uint16_t, 0x4000040c> { + using UIE = RegisterMask<TIM3_DIER, (0x1u << 0x0u)>; + using CC1IE = RegisterMask<TIM3_DIER, (0x1u << 0x1u)>; + using CC2IE = RegisterMask<TIM3_DIER, (0x1u << 0x2u)>; + using CC3IE = RegisterMask<TIM3_DIER, (0x1u << 0x3u)>; + using CC4IE = RegisterMask<TIM3_DIER, (0x1u << 0x4u)>; + using TIE = RegisterMask<TIM3_DIER, (0x1u << 0x6u)>; + using UDE = RegisterMask<TIM3_DIER, (0x1u << 0x8u)>; + using CC1DE = RegisterMask<TIM3_DIER, (0x1u << 0x9u)>; + using CC2DE = RegisterMask<TIM3_DIER, (0x1u << 0xau)>; + using CC3DE = RegisterMask<TIM3_DIER, (0x1u << 0xbu)>; + using CC4DE = RegisterMask<TIM3_DIER, (0x1u << 0xcu)>; + using TDE = RegisterMask<TIM3_DIER, (0x1u << 0xeu)>; + }; + struct TIM3_SR : public MemRegister<uint16_t, 0x40000410> { + using UIF = RegisterMask<TIM3_SR, (0x1u << 0x0u)>; + using CC1IF = RegisterMask<TIM3_SR, (0x1u << 0x1u)>; + using CC2IF = RegisterMask<TIM3_SR, (0x1u << 0x2u)>; + using CC3IF = RegisterMask<TIM3_SR, (0x1u << 0x3u)>; + using CC4IF = RegisterMask<TIM3_SR, (0x1u << 0x4u)>; + using TIF = RegisterMask<TIM3_SR, (0x1u << 0x6u)>; + using CC1OF = RegisterMask<TIM3_SR, (0x1u << 0x9u)>; + using CC2OF = RegisterMask<TIM3_SR, (0x1u << 0xau)>; + using CC3OF = RegisterMask<TIM3_SR, (0x1u << 0xbu)>; + using CC4OF = RegisterMask<TIM3_SR, (0x1u << 0xcu)>; + }; + struct TIM3_EGR : public MemRegister<uint16_t, 0x40000414> { + using UG = RegisterMask<TIM3_EGR, (0x1u << 0x0u)>; + using CC1G = RegisterMask<TIM3_EGR, (0x1u << 0x1u)>; + using CC2G = RegisterMask<TIM3_EGR, (0x1u << 0x2u)>; + using CC3G = RegisterMask<TIM3_EGR, (0x1u << 0x3u)>; + using CC4G = RegisterMask<TIM3_EGR, (0x1u << 0x4u)>; + using TG = RegisterMask<TIM3_EGR, (0x1u << 0x6u)>; + }; + struct TIM3_CCMR1 : public MemRegister<uint32_t, 0x40000418> { + using CC1S = RegisterMask<TIM3_CCMR1, (0x3u << 0x0u)>; + using IC1PSC = RegisterMask<TIM3_CCMR1, (0x3u << 0x2u)>; + using IC1F = RegisterMask<TIM3_CCMR1, (0xfu << 0x4u)>; + using CC2S = RegisterMask<TIM3_CCMR1, (0x3u << 0x8u)>; + using IC2PSC = RegisterMask<TIM3_CCMR1, (0x3u << 0xau)>; + using IC2F = RegisterMask<TIM3_CCMR1, (0xfu << 0xcu)>; + }; + struct TIM3_CCMR1_ALTERNATE1 : public MemRegister<uint32_t, 0x40000418> { + using CC1S = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x3u << 0x0u)>; + using OC1FE = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0x2u)>; + using OC1PE = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0x3u)>; + using OC1M = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x7u << 0x4u)>; + using OC1CE = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0x7u)>; + using CC2S = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x3u << 0x8u)>; + using OC2FE = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0xau)>; + using OC2PE = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0xbu)>; + using OC2M = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x7u << 0xcu)>; + using OC2CE = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0xfu)>; + using OC1M_1 = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0x10u)>; + using OC2M_1 = RegisterMask<TIM3_CCMR1_ALTERNATE1, (0x1u << 0x18u)>; + }; + struct TIM3_CCMR2 : public MemRegister<uint32_t, 0x4000041c> { + using CC3S = RegisterMask<TIM3_CCMR2, (0x3u << 0x0u)>; + using IC3PSC = RegisterMask<TIM3_CCMR2, (0x3u << 0x2u)>; + using IC3F = RegisterMask<TIM3_CCMR2, (0xfu << 0x4u)>; + using CC4S = RegisterMask<TIM3_CCMR2, (0x3u << 0x8u)>; + using IC4PSC = RegisterMask<TIM3_CCMR2, (0x3u << 0xau)>; + using IC4F = RegisterMask<TIM3_CCMR2, (0xfu << 0xcu)>; + }; + struct TIM3_CCMR2_ALTERNATE1 : public MemRegister<uint32_t, 0x4000041c> { + using CC3S = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x3u << 0x0u)>; + using OC3FE = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0x2u)>; + using OC3PE = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0x3u)>; + using OC3M = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x7u << 0x4u)>; + using OC3CE = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0x7u)>; + using CC4S = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x3u << 0x8u)>; + using OC4FE = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0xau)>; + using OC4PE = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0xbu)>; + using OC4M = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x7u << 0xcu)>; + using OC4CE = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0xfu)>; + using OC3M_1 = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0x10u)>; + using OC4M_1 = RegisterMask<TIM3_CCMR2_ALTERNATE1, (0x1u << 0x18u)>; + }; + struct TIM3_CCER : public MemRegister<uint16_t, 0x40000420> { + using CC1E = RegisterMask<TIM3_CCER, (0x1u << 0x0u)>; + using CC1P = RegisterMask<TIM3_CCER, (0x1u << 0x1u)>; + using CC1NP = RegisterMask<TIM3_CCER, (0x1u << 0x3u)>; + using CC2E = RegisterMask<TIM3_CCER, (0x1u << 0x4u)>; + using CC2P = RegisterMask<TIM3_CCER, (0x1u << 0x5u)>; + using CC2NP = RegisterMask<TIM3_CCER, (0x1u << 0x7u)>; + using CC3E = RegisterMask<TIM3_CCER, (0x1u << 0x8u)>; + using CC3P = RegisterMask<TIM3_CCER, (0x1u << 0x9u)>; + using CC3NP = RegisterMask<TIM3_CCER, (0x1u << 0xbu)>; + using CC4E = RegisterMask<TIM3_CCER, (0x1u << 0xcu)>; + using CC4P = RegisterMask<TIM3_CCER, (0x1u << 0xdu)>; + using CC4NP = RegisterMask<TIM3_CCER, (0x1u << 0xfu)>; + }; + struct TIM3_CNT : public MemRegister<uint32_t, 0x40000424> { + using CNT = RegisterMask<TIM3_CNT, (0x0u << 0x0u)>; + }; + struct TIM3_CNT_ALTERNATE1 : public MemRegister<uint32_t, 0x40000424> { + using CNT = RegisterMask<TIM3_CNT_ALTERNATE1, (0x7fffffffu << 0x0u)>; + using UIFCPY = RegisterMask<TIM3_CNT_ALTERNATE1, (0x1u << 0x1fu)>; + }; + struct TIM3_PSC : public MemRegister<uint16_t, 0x40000428> { + using PSC = RegisterMask<TIM3_PSC, (0xffffu << 0x0u)>; + }; + struct TIM3_ARR : public MemRegister<uint32_t, 0x4000042c> { + using ARR = RegisterMask<TIM3_ARR, (0x0u << 0x0u)>; + }; + struct TIM3_CCR1 : public MemRegister<uint32_t, 0x40000434> { + using CCR1 = RegisterMask<TIM3_CCR1, (0x0u << 0x0u)>; + }; + struct TIM3_CCR2 : public MemRegister<uint32_t, 0x40000438> { + using CCR2 = RegisterMask<TIM3_CCR2, (0x0u << 0x0u)>; + }; + struct TIM3_CCR3 : public MemRegister<uint32_t, 0x4000043c> { + using CCR3 = RegisterMask<TIM3_CCR3, (0x0u << 0x0u)>; + }; + struct TIM3_CCR4 : public MemRegister<uint32_t, 0x40000440> { + using CCR4 = RegisterMask<TIM3_CCR4, (0x0u << 0x0u)>; + }; + struct TIM3_DCR : public MemRegister<uint16_t, 0x40000448> { + using DBA = RegisterMask<TIM3_DCR, (0x1fu << 0x0u)>; + using DBL = RegisterMask<TIM3_DCR, (0x1fu << 0x8u)>; + }; + struct TIM3_DMAR : public MemRegister<uint16_t, 0x4000044c> { + using DMAB = RegisterMask<TIM3_DMAR, (0xffffu << 0x0u)>; + }; + struct TIM3_OR1 : public MemRegister<uint32_t, 0x40000450> { + using OCREF_CLR = RegisterMask<TIM3_OR1, (0x3u << 0x0u)>; + }; + struct TIM3_AF1 : public MemRegister<uint32_t, 0x40000460> { + using ETRSEL = RegisterMask<TIM3_AF1, (0xfu << 0xeu)>; + }; + struct TIM3_TISEL : public MemRegister<uint32_t, 0x40000468> { + using TI1SEL = RegisterMask<TIM3_TISEL, (0xfu << 0x0u)>; + using TI2SEL = RegisterMask<TIM3_TISEL, (0xfu << 0x8u)>; + using TI3SEL = RegisterMask<TIM3_TISEL, (0xfu << 0x10u)>; + }; + using ALL = RegisterGroup<TIM3_CR1, TIM3_CR2, TIM3_SMCR, TIM3_DIER, TIM3_SR, TIM3_EGR, TIM3_CCMR1, TIM3_CCMR1_ALTERNATE1, TIM3_CCMR2, TIM3_CCMR2_ALTERNATE1, TIM3_CCER, TIM3_CNT, TIM3_CNT_ALTERNATE1, TIM3_PSC, TIM3_ARR, TIM3_CCR1, TIM3_CCR2, TIM3_CCR3, TIM3_CCR4, TIM3_DCR, TIM3_DMAR, TIM3_OR1, TIM3_AF1, TIM3_TISEL>; + } + namespace TIM6 { + struct TIM6_CR1 : public MemRegister<uint16_t, 0x40001000> { + using CEN = RegisterMask<TIM6_CR1, (0x1u << 0x0u)>; + using UDIS = RegisterMask<TIM6_CR1, (0x1u << 0x1u)>; + using URS = RegisterMask<TIM6_CR1, (0x1u << 0x2u)>; + using OPM = RegisterMask<TIM6_CR1, (0x1u << 0x3u)>; + using ARPE = RegisterMask<TIM6_CR1, (0x1u << 0x7u)>; + using UIFREMAP = RegisterMask<TIM6_CR1, (0x1u << 0xbu)>; + }; + struct TIM6_CR2 : public MemRegister<uint16_t, 0x40001004> { + using MMS = RegisterMask<TIM6_CR2, (0x7u << 0x4u)>; + }; + struct TIM6_DIER : public MemRegister<uint16_t, 0x4000100c> { + using UIE = RegisterMask<TIM6_DIER, (0x1u << 0x0u)>; + using UDE = RegisterMask<TIM6_DIER, (0x1u << 0x8u)>; + }; + struct TIM6_SR : public MemRegister<uint16_t, 0x40001010> { + using UIF = RegisterMask<TIM6_SR, (0x1u << 0x0u)>; + }; + struct TIM6_EGR : public MemRegister<uint16_t, 0x40001014> { + using UG = RegisterMask<TIM6_EGR, (0x1u << 0x0u)>; + }; + struct TIM6_CNT : public MemRegister<uint32_t, 0x40001024> { + using CNT = RegisterMask<TIM6_CNT, (0xffffu << 0x0u)>; + using UIFCPY = RegisterMask<TIM6_CNT, (0x1u << 0x1fu)>; + }; + struct TIM6_PSC : public MemRegister<uint16_t, 0x40001028> { + using PSC = RegisterMask<TIM6_PSC, (0xffffu << 0x0u)>; + }; + struct TIM6_ARR : public MemRegister<uint16_t, 0x4000102c> { + using ARR = RegisterMask<TIM6_ARR, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<TIM6_CR1, TIM6_CR2, TIM6_DIER, TIM6_SR, TIM6_EGR, TIM6_CNT, TIM6_PSC, TIM6_ARR>; + } + namespace TIM7 { + struct TIM7_CR1 : public MemRegister<uint16_t, 0x40001400> { + using CEN = RegisterMask<TIM7_CR1, (0x1u << 0x0u)>; + using UDIS = RegisterMask<TIM7_CR1, (0x1u << 0x1u)>; + using URS = RegisterMask<TIM7_CR1, (0x1u << 0x2u)>; + using OPM = RegisterMask<TIM7_CR1, (0x1u << 0x3u)>; + using ARPE = RegisterMask<TIM7_CR1, (0x1u << 0x7u)>; + using UIFREMAP = RegisterMask<TIM7_CR1, (0x1u << 0xbu)>; + }; + struct TIM7_CR2 : public MemRegister<uint16_t, 0x40001404> { + using MMS = RegisterMask<TIM7_CR2, (0x7u << 0x4u)>; + }; + struct TIM7_DIER : public MemRegister<uint16_t, 0x4000140c> { + using UIE = RegisterMask<TIM7_DIER, (0x1u << 0x0u)>; + using UDE = RegisterMask<TIM7_DIER, (0x1u << 0x8u)>; + }; + struct TIM7_SR : public MemRegister<uint16_t, 0x40001410> { + using UIF = RegisterMask<TIM7_SR, (0x1u << 0x0u)>; + }; + struct TIM7_EGR : public MemRegister<uint16_t, 0x40001414> { + using UG = RegisterMask<TIM7_EGR, (0x1u << 0x0u)>; + }; + struct TIM7_CNT : public MemRegister<uint32_t, 0x40001424> { + using CNT = RegisterMask<TIM7_CNT, (0xffffu << 0x0u)>; + using UIFCPY = RegisterMask<TIM7_CNT, (0x1u << 0x1fu)>; + }; + struct TIM7_PSC : public MemRegister<uint16_t, 0x40001428> { + using PSC = RegisterMask<TIM7_PSC, (0xffffu << 0x0u)>; + }; + struct TIM7_ARR : public MemRegister<uint16_t, 0x4000142c> { + using ARR = RegisterMask<TIM7_ARR, (0xffffu << 0x0u)>; + }; + using ALL = RegisterGroup<TIM7_CR1, TIM7_CR2, TIM7_DIER, TIM7_SR, TIM7_EGR, TIM7_CNT, TIM7_PSC, TIM7_ARR>; + } + namespace TSC { + struct CR : public MemRegister<uint32_t, 0x40024000> { + using TSCE = RegisterMask<CR, (0x1u << 0x0u)>; + using START = RegisterMask<CR, (0x1u << 0x1u)>; + using AM = RegisterMask<CR, (0x1u << 0x2u)>; + using SYNCPOL = RegisterMask<CR, (0x1u << 0x3u)>; + using IODEF = RegisterMask<CR, (0x1u << 0x4u)>; + using MCV = RegisterMask<CR, (0x7u << 0x5u)>; + using PGPSC = RegisterMask<CR, (0x7u << 0xcu)>; + using SSPSC = RegisterMask<CR, (0x1u << 0xfu)>; + using SSE = RegisterMask<CR, (0x1u << 0x10u)>; + using SSD = RegisterMask<CR, (0x7fu << 0x11u)>; + using CTPL = RegisterMask<CR, (0xfu << 0x18u)>; + using CTPH = RegisterMask<CR, (0xfu << 0x1cu)>; + }; + struct IER : public MemRegister<uint32_t, 0x40024004> { + using EOAIE = RegisterMask<IER, (0x1u << 0x0u)>; + using MCEIE = RegisterMask<IER, (0x1u << 0x1u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40024008> { + using EOAIC = RegisterMask<ICR, (0x1u << 0x0u)>; + using MCEIC = RegisterMask<ICR, (0x1u << 0x1u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x4002400c> { + using EOAF = RegisterMask<ISR, (0x1u << 0x0u)>; + using MCEF = RegisterMask<ISR, (0x1u << 0x1u)>; + }; + struct IOHCR : public MemRegister<uint32_t, 0x40024010> { + using G1_IO1 = RegisterMask<IOHCR, (0x1u << 0x0u)>; + using G1_IO2 = RegisterMask<IOHCR, (0x1u << 0x1u)>; + using G1_IO3 = RegisterMask<IOHCR, (0x1u << 0x2u)>; + using G1_IO4 = RegisterMask<IOHCR, (0x1u << 0x3u)>; + using G2_IO1 = RegisterMask<IOHCR, (0x1u << 0x4u)>; + using G2_IO2 = RegisterMask<IOHCR, (0x1u << 0x5u)>; + using G2_IO3 = RegisterMask<IOHCR, (0x1u << 0x6u)>; + using G2_IO4 = RegisterMask<IOHCR, (0x1u << 0x7u)>; + using G3_IO1 = RegisterMask<IOHCR, (0x1u << 0x8u)>; + using G3_IO2 = RegisterMask<IOHCR, (0x1u << 0x9u)>; + using G3_IO3 = RegisterMask<IOHCR, (0x1u << 0xau)>; + using G3_IO4 = RegisterMask<IOHCR, (0x1u << 0xbu)>; + using G4_IO1 = RegisterMask<IOHCR, (0x1u << 0xcu)>; + using G4_IO2 = RegisterMask<IOHCR, (0x1u << 0xdu)>; + using G4_IO3 = RegisterMask<IOHCR, (0x1u << 0xeu)>; + using G4_IO4 = RegisterMask<IOHCR, (0x1u << 0xfu)>; + using G5_IO1 = RegisterMask<IOHCR, (0x1u << 0x10u)>; + using G5_IO2 = RegisterMask<IOHCR, (0x1u << 0x11u)>; + using G5_IO3 = RegisterMask<IOHCR, (0x1u << 0x12u)>; + using G5_IO4 = RegisterMask<IOHCR, (0x1u << 0x13u)>; + using G6_IO1 = RegisterMask<IOHCR, (0x1u << 0x14u)>; + using G6_IO2 = RegisterMask<IOHCR, (0x1u << 0x15u)>; + using G6_IO3 = RegisterMask<IOHCR, (0x1u << 0x16u)>; + using G6_IO4 = RegisterMask<IOHCR, (0x1u << 0x17u)>; + using G7_IO1 = RegisterMask<IOHCR, (0x1u << 0x18u)>; + using G7_IO2 = RegisterMask<IOHCR, (0x1u << 0x19u)>; + using G7_IO3 = RegisterMask<IOHCR, (0x1u << 0x1au)>; + using G7_IO4 = RegisterMask<IOHCR, (0x1u << 0x1bu)>; + }; + struct IOASCR : public MemRegister<uint32_t, 0x40024018> { + using G1_IO1 = RegisterMask<IOASCR, (0x1u << 0x0u)>; + using G1_IO2 = RegisterMask<IOASCR, (0x1u << 0x1u)>; + using G1_IO3 = RegisterMask<IOASCR, (0x1u << 0x2u)>; + using G1_IO4 = RegisterMask<IOASCR, (0x1u << 0x3u)>; + using G2_IO1 = RegisterMask<IOASCR, (0x1u << 0x4u)>; + using G2_IO2 = RegisterMask<IOASCR, (0x1u << 0x5u)>; + using G2_IO3 = RegisterMask<IOASCR, (0x1u << 0x6u)>; + using G2_IO4 = RegisterMask<IOASCR, (0x1u << 0x7u)>; + using G3_IO1 = RegisterMask<IOASCR, (0x1u << 0x8u)>; + using G3_IO2 = RegisterMask<IOASCR, (0x1u << 0x9u)>; + using G3_IO3 = RegisterMask<IOASCR, (0x1u << 0xau)>; + using G3_IO4 = RegisterMask<IOASCR, (0x1u << 0xbu)>; + using G4_IO1 = RegisterMask<IOASCR, (0x1u << 0xcu)>; + using G4_IO2 = RegisterMask<IOASCR, (0x1u << 0xdu)>; + using G4_IO3 = RegisterMask<IOASCR, (0x1u << 0xeu)>; + using G4_IO4 = RegisterMask<IOASCR, (0x1u << 0xfu)>; + using G5_IO1 = RegisterMask<IOASCR, (0x1u << 0x10u)>; + using G5_IO2 = RegisterMask<IOASCR, (0x1u << 0x11u)>; + using G5_IO3 = RegisterMask<IOASCR, (0x1u << 0x12u)>; + using G5_IO4 = RegisterMask<IOASCR, (0x1u << 0x13u)>; + using G6_IO1 = RegisterMask<IOASCR, (0x1u << 0x14u)>; + using G6_IO2 = RegisterMask<IOASCR, (0x1u << 0x15u)>; + using G6_IO3 = RegisterMask<IOASCR, (0x1u << 0x16u)>; + using G6_IO4 = RegisterMask<IOASCR, (0x1u << 0x17u)>; + using G7_IO1 = RegisterMask<IOASCR, (0x1u << 0x18u)>; + using G7_IO2 = RegisterMask<IOASCR, (0x1u << 0x19u)>; + using G7_IO3 = RegisterMask<IOASCR, (0x1u << 0x1au)>; + using G7_IO4 = RegisterMask<IOASCR, (0x1u << 0x1bu)>; + }; + struct IOSCR : public MemRegister<uint32_t, 0x40024020> { + using G1_IO1 = RegisterMask<IOSCR, (0x1u << 0x0u)>; + using G1_IO2 = RegisterMask<IOSCR, (0x1u << 0x1u)>; + using G1_IO3 = RegisterMask<IOSCR, (0x1u << 0x2u)>; + using G1_IO4 = RegisterMask<IOSCR, (0x1u << 0x3u)>; + using G2_IO1 = RegisterMask<IOSCR, (0x1u << 0x4u)>; + using G2_IO2 = RegisterMask<IOSCR, (0x1u << 0x5u)>; + using G2_IO3 = RegisterMask<IOSCR, (0x1u << 0x6u)>; + using G2_IO4 = RegisterMask<IOSCR, (0x1u << 0x7u)>; + using G3_IO1 = RegisterMask<IOSCR, (0x1u << 0x8u)>; + using G3_IO2 = RegisterMask<IOSCR, (0x1u << 0x9u)>; + using G3_IO3 = RegisterMask<IOSCR, (0x1u << 0xau)>; + using G3_IO4 = RegisterMask<IOSCR, (0x1u << 0xbu)>; + using G4_IO1 = RegisterMask<IOSCR, (0x1u << 0xcu)>; + using G4_IO2 = RegisterMask<IOSCR, (0x1u << 0xdu)>; + using G4_IO3 = RegisterMask<IOSCR, (0x1u << 0xeu)>; + using G4_IO4 = RegisterMask<IOSCR, (0x1u << 0xfu)>; + using G5_IO1 = RegisterMask<IOSCR, (0x1u << 0x10u)>; + using G5_IO2 = RegisterMask<IOSCR, (0x1u << 0x11u)>; + using G5_IO3 = RegisterMask<IOSCR, (0x1u << 0x12u)>; + using G5_IO4 = RegisterMask<IOSCR, (0x1u << 0x13u)>; + using G6_IO1 = RegisterMask<IOSCR, (0x1u << 0x14u)>; + using G6_IO2 = RegisterMask<IOSCR, (0x1u << 0x15u)>; + using G6_IO3 = RegisterMask<IOSCR, (0x1u << 0x16u)>; + using G6_IO4 = RegisterMask<IOSCR, (0x1u << 0x17u)>; + using G7_IO1 = RegisterMask<IOSCR, (0x1u << 0x18u)>; + using G7_IO2 = RegisterMask<IOSCR, (0x1u << 0x19u)>; + using G7_IO3 = RegisterMask<IOSCR, (0x1u << 0x1au)>; + using G7_IO4 = RegisterMask<IOSCR, (0x1u << 0x1bu)>; + }; + struct IOCCR : public MemRegister<uint32_t, 0x40024028> { + using G1_IO1 = RegisterMask<IOCCR, (0x1u << 0x0u)>; + using G1_IO2 = RegisterMask<IOCCR, (0x1u << 0x1u)>; + using G1_IO3 = RegisterMask<IOCCR, (0x1u << 0x2u)>; + using G1_IO4 = RegisterMask<IOCCR, (0x1u << 0x3u)>; + using G2_IO1 = RegisterMask<IOCCR, (0x1u << 0x4u)>; + using G2_IO2 = RegisterMask<IOCCR, (0x1u << 0x5u)>; + using G2_IO3 = RegisterMask<IOCCR, (0x1u << 0x6u)>; + using G2_IO4 = RegisterMask<IOCCR, (0x1u << 0x7u)>; + using G3_IO1 = RegisterMask<IOCCR, (0x1u << 0x8u)>; + using G3_IO2 = RegisterMask<IOCCR, (0x1u << 0x9u)>; + using G3_IO3 = RegisterMask<IOCCR, (0x1u << 0xau)>; + using G3_IO4 = RegisterMask<IOCCR, (0x1u << 0xbu)>; + using G4_IO1 = RegisterMask<IOCCR, (0x1u << 0xcu)>; + using G4_IO2 = RegisterMask<IOCCR, (0x1u << 0xdu)>; + using G4_IO3 = RegisterMask<IOCCR, (0x1u << 0xeu)>; + using G4_IO4 = RegisterMask<IOCCR, (0x1u << 0xfu)>; + using G5_IO1 = RegisterMask<IOCCR, (0x1u << 0x10u)>; + using G5_IO2 = RegisterMask<IOCCR, (0x1u << 0x11u)>; + using G5_IO3 = RegisterMask<IOCCR, (0x1u << 0x12u)>; + using G5_IO4 = RegisterMask<IOCCR, (0x1u << 0x13u)>; + using G6_IO1 = RegisterMask<IOCCR, (0x1u << 0x14u)>; + using G6_IO2 = RegisterMask<IOCCR, (0x1u << 0x15u)>; + using G6_IO3 = RegisterMask<IOCCR, (0x1u << 0x16u)>; + using G6_IO4 = RegisterMask<IOCCR, (0x1u << 0x17u)>; + using G7_IO1 = RegisterMask<IOCCR, (0x1u << 0x18u)>; + using G7_IO2 = RegisterMask<IOCCR, (0x1u << 0x19u)>; + using G7_IO3 = RegisterMask<IOCCR, (0x1u << 0x1au)>; + using G7_IO4 = RegisterMask<IOCCR, (0x1u << 0x1bu)>; + }; + struct IOGCSR : public MemRegister<uint32_t, 0x40024030> { + using G1E = RegisterMask<IOGCSR, (0x1u << 0x0u)>; + using G2E = RegisterMask<IOGCSR, (0x1u << 0x1u)>; + using G3E = RegisterMask<IOGCSR, (0x1u << 0x2u)>; + using G4E = RegisterMask<IOGCSR, (0x1u << 0x3u)>; + using G5E = RegisterMask<IOGCSR, (0x1u << 0x4u)>; + using G6E = RegisterMask<IOGCSR, (0x1u << 0x5u)>; + using G7E = RegisterMask<IOGCSR, (0x1u << 0x6u)>; + using G1S = RegisterMask<IOGCSR, (0x1u << 0x10u)>; + using G2S = RegisterMask<IOGCSR, (0x1u << 0x11u)>; + using G3S = RegisterMask<IOGCSR, (0x1u << 0x12u)>; + using G4S = RegisterMask<IOGCSR, (0x1u << 0x13u)>; + using G5S = RegisterMask<IOGCSR, (0x1u << 0x14u)>; + using G6S = RegisterMask<IOGCSR, (0x1u << 0x15u)>; + using G7S = RegisterMask<IOGCSR, (0x1u << 0x16u)>; + }; + struct IOG1CR : public MemRegister<uint32_t, 0x40024034> { + using CNT = RegisterMask<IOG1CR, (0x3fffu << 0x0u)>; + }; + struct IOG2CR : public MemRegister<uint32_t, 0x40024038> { + using CNT = RegisterMask<IOG2CR, (0x3fffu << 0x0u)>; + }; + struct IOG3CR : public MemRegister<uint32_t, 0x4002403c> { + using CNT = RegisterMask<IOG3CR, (0x3fffu << 0x0u)>; + }; + struct IOG4CR : public MemRegister<uint32_t, 0x40024040> { + using CNT = RegisterMask<IOG4CR, (0x3fffu << 0x0u)>; + }; + struct IOG5CR : public MemRegister<uint32_t, 0x40024044> { + using CNT = RegisterMask<IOG5CR, (0x3fffu << 0x0u)>; + }; + struct IOG6CR : public MemRegister<uint32_t, 0x40024048> { + using CNT = RegisterMask<IOG6CR, (0x3fffu << 0x0u)>; + }; + struct IOG7CR : public MemRegister<uint32_t, 0x4002404c> { + using CNT = RegisterMask<IOG7CR, (0x3fffu << 0x0u)>; + }; + using ALL = RegisterGroup<CR, IER, ICR, ISR, IOHCR, IOASCR, IOSCR, IOCCR, IOGCSR, IOG1CR, IOG2CR, IOG3CR, IOG4CR, IOG5CR, IOG6CR, IOG7CR>; + } + namespace USART1 { + struct CR1 : public MemRegister<uint32_t, 0x40013800> { + using UE = RegisterMask<CR1, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using RXFNEIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using TXFNFIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1, (0x1u << 0x1du)>; + using TXFEIE = RegisterMask<CR1, (0x1u << 0x1eu)>; + using RXFFIE = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR1_ALTERNATE : public MemRegister<uint32_t, 0x40013800> { + using UE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x4u)>; + using RXNEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1_ALTERNATE, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1_ALTERNATE, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1du)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40013804> { + using SLVEN = RegisterMask<CR2, (0x1u << 0x0u)>; + using DIS_NSS = RegisterMask<CR2, (0x1u << 0x3u)>; + using ADDM7 = RegisterMask<CR2, (0x1u << 0x4u)>; + using LBDL = RegisterMask<CR2, (0x1u << 0x5u)>; + using LBDIE = RegisterMask<CR2, (0x1u << 0x6u)>; + using LBCL = RegisterMask<CR2, (0x1u << 0x8u)>; + using CPHA = RegisterMask<CR2, (0x1u << 0x9u)>; + using CPOL = RegisterMask<CR2, (0x1u << 0xau)>; + using CLKEN = RegisterMask<CR2, (0x1u << 0xbu)>; + using STOP = RegisterMask<CR2, (0x3u << 0xcu)>; + using LINEN = RegisterMask<CR2, (0x1u << 0xeu)>; + using SWAP = RegisterMask<CR2, (0x1u << 0xfu)>; + using RXINV = RegisterMask<CR2, (0x1u << 0x10u)>; + using TXINV = RegisterMask<CR2, (0x1u << 0x11u)>; + using DATAINV = RegisterMask<CR2, (0x1u << 0x12u)>; + using MSBFIRST = RegisterMask<CR2, (0x1u << 0x13u)>; + using ABREN = RegisterMask<CR2, (0x1u << 0x14u)>; + using ABRMOD = RegisterMask<CR2, (0x3u << 0x15u)>; + using RTOEN = RegisterMask<CR2, (0x1u << 0x17u)>; + using ADD = RegisterMask<CR2, (0xffu << 0x18u)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40013808> { + using EIE = RegisterMask<CR3, (0x1u << 0x0u)>; + using IREN = RegisterMask<CR3, (0x1u << 0x1u)>; + using IRLP = RegisterMask<CR3, (0x1u << 0x2u)>; + using HDSEL = RegisterMask<CR3, (0x1u << 0x3u)>; + using NACK = RegisterMask<CR3, (0x1u << 0x4u)>; + using SCEN = RegisterMask<CR3, (0x1u << 0x5u)>; + using DMAR = RegisterMask<CR3, (0x1u << 0x6u)>; + using DMAT = RegisterMask<CR3, (0x1u << 0x7u)>; + using RTSE = RegisterMask<CR3, (0x1u << 0x8u)>; + using CTSE = RegisterMask<CR3, (0x1u << 0x9u)>; + using CTSIE = RegisterMask<CR3, (0x1u << 0xau)>; + using ONEBIT = RegisterMask<CR3, (0x1u << 0xbu)>; + using OVRDIS = RegisterMask<CR3, (0x1u << 0xcu)>; + using DDRE = RegisterMask<CR3, (0x1u << 0xdu)>; + using DEM = RegisterMask<CR3, (0x1u << 0xeu)>; + using DEP = RegisterMask<CR3, (0x1u << 0xfu)>; + using SCARCNT = RegisterMask<CR3, (0x7u << 0x11u)>; + using WUS0 = RegisterMask<CR3, (0x1u << 0x14u)>; + using WUS1 = RegisterMask<CR3, (0x1u << 0x15u)>; + using WUFIE = RegisterMask<CR3, (0x1u << 0x16u)>; + using TXFTIE = RegisterMask<CR3, (0x1u << 0x17u)>; + using TCBGTIE = RegisterMask<CR3, (0x1u << 0x18u)>; + using RXFTCFG = RegisterMask<CR3, (0x7u << 0x19u)>; + using RXFTIE = RegisterMask<CR3, (0x1u << 0x1cu)>; + using TXFTCFG = RegisterMask<CR3, (0x7u << 0x1du)>; + }; + struct BRR : public MemRegister<uint32_t, 0x4001380c> { + using val = RegisterMask<BRR, (0xffffu << 0x0u)>; + }; + struct GTPR : public MemRegister<uint32_t, 0x40013810> { + using PSC = RegisterMask<GTPR, (0xffu << 0x0u)>; + using GT = RegisterMask<GTPR, (0xffu << 0x8u)>; + }; + struct RTOR : public MemRegister<uint32_t, 0x40013814> { + using RTO = RegisterMask<RTOR, (0xffffffu << 0x0u)>; + using BLEN = RegisterMask<RTOR, (0xffu << 0x18u)>; + }; + struct RQR : public MemRegister<uint32_t, 0x40013818> { + using ABRRQ = RegisterMask<RQR, (0x1u << 0x0u)>; + using SBKRQ = RegisterMask<RQR, (0x1u << 0x1u)>; + using MMRQ = RegisterMask<RQR, (0x1u << 0x2u)>; + using RXFRQ = RegisterMask<RQR, (0x1u << 0x3u)>; + using TXFRQ = RegisterMask<RQR, (0x1u << 0x4u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x4001381c> { + using PE = RegisterMask<ISR, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR, (0x1u << 0x4u)>; + using RXFNE = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TXFNF = RegisterMask<ISR, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR, (0x1u << 0x16u)>; + using TXFE = RegisterMask<ISR, (0x1u << 0x17u)>; + using RXFF = RegisterMask<ISR, (0x1u << 0x18u)>; + using TCBGT = RegisterMask<ISR, (0x1u << 0x19u)>; + using RXFT = RegisterMask<ISR, (0x1u << 0x1au)>; + using TXFT = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct ISR_ALTERNATE : public MemRegister<uint32_t, 0x4001381c> { + using PE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x4u)>; + using RXNE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR_ALTERNATE, (0x1u << 0x6u)>; + using TXE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR_ALTERNATE, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR_ALTERNATE, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR_ALTERNATE, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR_ALTERNATE, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR_ALTERNATE, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x16u)>; + using TCBGT = RegisterMask<ISR_ALTERNATE, (0x1u << 0x19u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40013820> { + using PECF = RegisterMask<ICR, (0x1u << 0x0u)>; + using FECF = RegisterMask<ICR, (0x1u << 0x1u)>; + using NECF = RegisterMask<ICR, (0x1u << 0x2u)>; + using ORECF = RegisterMask<ICR, (0x1u << 0x3u)>; + using IDLECF = RegisterMask<ICR, (0x1u << 0x4u)>; + using TXFECF = RegisterMask<ICR, (0x1u << 0x5u)>; + using TCCF = RegisterMask<ICR, (0x1u << 0x6u)>; + using TCBGTCF = RegisterMask<ICR, (0x1u << 0x7u)>; + using LBDCF = RegisterMask<ICR, (0x1u << 0x8u)>; + using CTSCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using RTOCF = RegisterMask<ICR, (0x1u << 0xbu)>; + using EOBCF = RegisterMask<ICR, (0x1u << 0xcu)>; + using UDRCF = RegisterMask<ICR, (0x1u << 0xdu)>; + using CMCF = RegisterMask<ICR, (0x1u << 0x11u)>; + using WUCF = RegisterMask<ICR, (0x1u << 0x14u)>; + }; + struct RDR : public MemRegister<uint32_t, 0x40013824> { + using val = RegisterMask<RDR, (0x1ffu << 0x0u)>; + }; + struct TDR : public MemRegister<uint32_t, 0x40013828> { + using val = RegisterMask<TDR, (0x1ffu << 0x0u)>; + }; + struct PRESC : public MemRegister<uint32_t, 0x4001382c> { + using PRESCALER = RegisterMask<PRESC, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR1_ALTERNATE, CR2, CR3, BRR, GTPR, RTOR, RQR, ISR, ISR_ALTERNATE, ICR, RDR, TDR, PRESC>; + } + namespace USART2 { + struct CR1 : public MemRegister<uint32_t, 0x40004400> { + using UE = RegisterMask<CR1, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using RXFNEIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using TXFNFIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1, (0x1u << 0x1du)>; + using TXFEIE = RegisterMask<CR1, (0x1u << 0x1eu)>; + using RXFFIE = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR1_ALTERNATE : public MemRegister<uint32_t, 0x40004400> { + using UE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x4u)>; + using RXNEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1_ALTERNATE, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1_ALTERNATE, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1du)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40004404> { + using SLVEN = RegisterMask<CR2, (0x1u << 0x0u)>; + using DIS_NSS = RegisterMask<CR2, (0x1u << 0x3u)>; + using ADDM7 = RegisterMask<CR2, (0x1u << 0x4u)>; + using LBDL = RegisterMask<CR2, (0x1u << 0x5u)>; + using LBDIE = RegisterMask<CR2, (0x1u << 0x6u)>; + using LBCL = RegisterMask<CR2, (0x1u << 0x8u)>; + using CPHA = RegisterMask<CR2, (0x1u << 0x9u)>; + using CPOL = RegisterMask<CR2, (0x1u << 0xau)>; + using CLKEN = RegisterMask<CR2, (0x1u << 0xbu)>; + using STOP = RegisterMask<CR2, (0x3u << 0xcu)>; + using LINEN = RegisterMask<CR2, (0x1u << 0xeu)>; + using SWAP = RegisterMask<CR2, (0x1u << 0xfu)>; + using RXINV = RegisterMask<CR2, (0x1u << 0x10u)>; + using TXINV = RegisterMask<CR2, (0x1u << 0x11u)>; + using DATAINV = RegisterMask<CR2, (0x1u << 0x12u)>; + using MSBFIRST = RegisterMask<CR2, (0x1u << 0x13u)>; + using ABREN = RegisterMask<CR2, (0x1u << 0x14u)>; + using ABRMOD = RegisterMask<CR2, (0x3u << 0x15u)>; + using RTOEN = RegisterMask<CR2, (0x1u << 0x17u)>; + using ADD = RegisterMask<CR2, (0xffu << 0x18u)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40004408> { + using EIE = RegisterMask<CR3, (0x1u << 0x0u)>; + using IREN = RegisterMask<CR3, (0x1u << 0x1u)>; + using IRLP = RegisterMask<CR3, (0x1u << 0x2u)>; + using HDSEL = RegisterMask<CR3, (0x1u << 0x3u)>; + using NACK = RegisterMask<CR3, (0x1u << 0x4u)>; + using SCEN = RegisterMask<CR3, (0x1u << 0x5u)>; + using DMAR = RegisterMask<CR3, (0x1u << 0x6u)>; + using DMAT = RegisterMask<CR3, (0x1u << 0x7u)>; + using RTSE = RegisterMask<CR3, (0x1u << 0x8u)>; + using CTSE = RegisterMask<CR3, (0x1u << 0x9u)>; + using CTSIE = RegisterMask<CR3, (0x1u << 0xau)>; + using ONEBIT = RegisterMask<CR3, (0x1u << 0xbu)>; + using OVRDIS = RegisterMask<CR3, (0x1u << 0xcu)>; + using DDRE = RegisterMask<CR3, (0x1u << 0xdu)>; + using DEM = RegisterMask<CR3, (0x1u << 0xeu)>; + using DEP = RegisterMask<CR3, (0x1u << 0xfu)>; + using SCARCNT = RegisterMask<CR3, (0x7u << 0x11u)>; + using WUS0 = RegisterMask<CR3, (0x1u << 0x14u)>; + using WUS1 = RegisterMask<CR3, (0x1u << 0x15u)>; + using WUFIE = RegisterMask<CR3, (0x1u << 0x16u)>; + using TXFTIE = RegisterMask<CR3, (0x1u << 0x17u)>; + using TCBGTIE = RegisterMask<CR3, (0x1u << 0x18u)>; + using RXFTCFG = RegisterMask<CR3, (0x7u << 0x19u)>; + using RXFTIE = RegisterMask<CR3, (0x1u << 0x1cu)>; + using TXFTCFG = RegisterMask<CR3, (0x7u << 0x1du)>; + }; + struct BRR : public MemRegister<uint32_t, 0x4000440c> { + using val = RegisterMask<BRR, (0xffffu << 0x0u)>; + }; + struct GTPR : public MemRegister<uint32_t, 0x40004410> { + using PSC = RegisterMask<GTPR, (0xffu << 0x0u)>; + using GT = RegisterMask<GTPR, (0xffu << 0x8u)>; + }; + struct RTOR : public MemRegister<uint32_t, 0x40004414> { + using RTO = RegisterMask<RTOR, (0xffffffu << 0x0u)>; + using BLEN = RegisterMask<RTOR, (0xffu << 0x18u)>; + }; + struct RQR : public MemRegister<uint32_t, 0x40004418> { + using ABRRQ = RegisterMask<RQR, (0x1u << 0x0u)>; + using SBKRQ = RegisterMask<RQR, (0x1u << 0x1u)>; + using MMRQ = RegisterMask<RQR, (0x1u << 0x2u)>; + using RXFRQ = RegisterMask<RQR, (0x1u << 0x3u)>; + using TXFRQ = RegisterMask<RQR, (0x1u << 0x4u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x4000441c> { + using PE = RegisterMask<ISR, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR, (0x1u << 0x4u)>; + using RXFNE = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TXFNF = RegisterMask<ISR, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR, (0x1u << 0x16u)>; + using TXFE = RegisterMask<ISR, (0x1u << 0x17u)>; + using RXFF = RegisterMask<ISR, (0x1u << 0x18u)>; + using TCBGT = RegisterMask<ISR, (0x1u << 0x19u)>; + using RXFT = RegisterMask<ISR, (0x1u << 0x1au)>; + using TXFT = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct ISR_ALTERNATE : public MemRegister<uint32_t, 0x4000441c> { + using PE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x4u)>; + using RXNE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR_ALTERNATE, (0x1u << 0x6u)>; + using TXE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR_ALTERNATE, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR_ALTERNATE, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR_ALTERNATE, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR_ALTERNATE, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR_ALTERNATE, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x16u)>; + using TCBGT = RegisterMask<ISR_ALTERNATE, (0x1u << 0x19u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40004420> { + using PECF = RegisterMask<ICR, (0x1u << 0x0u)>; + using FECF = RegisterMask<ICR, (0x1u << 0x1u)>; + using NECF = RegisterMask<ICR, (0x1u << 0x2u)>; + using ORECF = RegisterMask<ICR, (0x1u << 0x3u)>; + using IDLECF = RegisterMask<ICR, (0x1u << 0x4u)>; + using TXFECF = RegisterMask<ICR, (0x1u << 0x5u)>; + using TCCF = RegisterMask<ICR, (0x1u << 0x6u)>; + using TCBGTCF = RegisterMask<ICR, (0x1u << 0x7u)>; + using LBDCF = RegisterMask<ICR, (0x1u << 0x8u)>; + using CTSCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using RTOCF = RegisterMask<ICR, (0x1u << 0xbu)>; + using EOBCF = RegisterMask<ICR, (0x1u << 0xcu)>; + using UDRCF = RegisterMask<ICR, (0x1u << 0xdu)>; + using CMCF = RegisterMask<ICR, (0x1u << 0x11u)>; + using WUCF = RegisterMask<ICR, (0x1u << 0x14u)>; + }; + struct RDR : public MemRegister<uint32_t, 0x40004424> { + using val = RegisterMask<RDR, (0x1ffu << 0x0u)>; + }; + struct TDR : public MemRegister<uint32_t, 0x40004428> { + using val = RegisterMask<TDR, (0x1ffu << 0x0u)>; + }; + struct PRESC : public MemRegister<uint32_t, 0x4000442c> { + using PRESCALER = RegisterMask<PRESC, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR1_ALTERNATE, CR2, CR3, BRR, GTPR, RTOR, RQR, ISR, ISR_ALTERNATE, ICR, RDR, TDR, PRESC>; + } + namespace USART3 { + struct CR1 : public MemRegister<uint32_t, 0x40004800> { + using UE = RegisterMask<CR1, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using RXFNEIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using TXFNFIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1, (0x1u << 0x1du)>; + using TXFEIE = RegisterMask<CR1, (0x1u << 0x1eu)>; + using RXFFIE = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR1_ALTERNATE : public MemRegister<uint32_t, 0x40004800> { + using UE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x4u)>; + using RXNEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1_ALTERNATE, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1_ALTERNATE, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1du)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40004804> { + using SLVEN = RegisterMask<CR2, (0x1u << 0x0u)>; + using DIS_NSS = RegisterMask<CR2, (0x1u << 0x3u)>; + using ADDM7 = RegisterMask<CR2, (0x1u << 0x4u)>; + using LBDL = RegisterMask<CR2, (0x1u << 0x5u)>; + using LBDIE = RegisterMask<CR2, (0x1u << 0x6u)>; + using LBCL = RegisterMask<CR2, (0x1u << 0x8u)>; + using CPHA = RegisterMask<CR2, (0x1u << 0x9u)>; + using CPOL = RegisterMask<CR2, (0x1u << 0xau)>; + using CLKEN = RegisterMask<CR2, (0x1u << 0xbu)>; + using STOP = RegisterMask<CR2, (0x3u << 0xcu)>; + using LINEN = RegisterMask<CR2, (0x1u << 0xeu)>; + using SWAP = RegisterMask<CR2, (0x1u << 0xfu)>; + using RXINV = RegisterMask<CR2, (0x1u << 0x10u)>; + using TXINV = RegisterMask<CR2, (0x1u << 0x11u)>; + using DATAINV = RegisterMask<CR2, (0x1u << 0x12u)>; + using MSBFIRST = RegisterMask<CR2, (0x1u << 0x13u)>; + using ABREN = RegisterMask<CR2, (0x1u << 0x14u)>; + using ABRMOD = RegisterMask<CR2, (0x3u << 0x15u)>; + using RTOEN = RegisterMask<CR2, (0x1u << 0x17u)>; + using ADD = RegisterMask<CR2, (0xffu << 0x18u)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40004808> { + using EIE = RegisterMask<CR3, (0x1u << 0x0u)>; + using IREN = RegisterMask<CR3, (0x1u << 0x1u)>; + using IRLP = RegisterMask<CR3, (0x1u << 0x2u)>; + using HDSEL = RegisterMask<CR3, (0x1u << 0x3u)>; + using NACK = RegisterMask<CR3, (0x1u << 0x4u)>; + using SCEN = RegisterMask<CR3, (0x1u << 0x5u)>; + using DMAR = RegisterMask<CR3, (0x1u << 0x6u)>; + using DMAT = RegisterMask<CR3, (0x1u << 0x7u)>; + using RTSE = RegisterMask<CR3, (0x1u << 0x8u)>; + using CTSE = RegisterMask<CR3, (0x1u << 0x9u)>; + using CTSIE = RegisterMask<CR3, (0x1u << 0xau)>; + using ONEBIT = RegisterMask<CR3, (0x1u << 0xbu)>; + using OVRDIS = RegisterMask<CR3, (0x1u << 0xcu)>; + using DDRE = RegisterMask<CR3, (0x1u << 0xdu)>; + using DEM = RegisterMask<CR3, (0x1u << 0xeu)>; + using DEP = RegisterMask<CR3, (0x1u << 0xfu)>; + using SCARCNT = RegisterMask<CR3, (0x7u << 0x11u)>; + using WUS0 = RegisterMask<CR3, (0x1u << 0x14u)>; + using WUS1 = RegisterMask<CR3, (0x1u << 0x15u)>; + using WUFIE = RegisterMask<CR3, (0x1u << 0x16u)>; + using TXFTIE = RegisterMask<CR3, (0x1u << 0x17u)>; + using TCBGTIE = RegisterMask<CR3, (0x1u << 0x18u)>; + using RXFTCFG = RegisterMask<CR3, (0x7u << 0x19u)>; + using RXFTIE = RegisterMask<CR3, (0x1u << 0x1cu)>; + using TXFTCFG = RegisterMask<CR3, (0x7u << 0x1du)>; + }; + struct BRR : public MemRegister<uint32_t, 0x4000480c> { + using val = RegisterMask<BRR, (0xffffu << 0x0u)>; + }; + struct GTPR : public MemRegister<uint32_t, 0x40004810> { + using PSC = RegisterMask<GTPR, (0xffu << 0x0u)>; + using GT = RegisterMask<GTPR, (0xffu << 0x8u)>; + }; + struct RTOR : public MemRegister<uint32_t, 0x40004814> { + using RTO = RegisterMask<RTOR, (0xffffffu << 0x0u)>; + using BLEN = RegisterMask<RTOR, (0xffu << 0x18u)>; + }; + struct RQR : public MemRegister<uint32_t, 0x40004818> { + using ABRRQ = RegisterMask<RQR, (0x1u << 0x0u)>; + using SBKRQ = RegisterMask<RQR, (0x1u << 0x1u)>; + using MMRQ = RegisterMask<RQR, (0x1u << 0x2u)>; + using RXFRQ = RegisterMask<RQR, (0x1u << 0x3u)>; + using TXFRQ = RegisterMask<RQR, (0x1u << 0x4u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x4000481c> { + using PE = RegisterMask<ISR, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR, (0x1u << 0x4u)>; + using RXFNE = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TXFNF = RegisterMask<ISR, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR, (0x1u << 0x16u)>; + using TXFE = RegisterMask<ISR, (0x1u << 0x17u)>; + using RXFF = RegisterMask<ISR, (0x1u << 0x18u)>; + using TCBGT = RegisterMask<ISR, (0x1u << 0x19u)>; + using RXFT = RegisterMask<ISR, (0x1u << 0x1au)>; + using TXFT = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct ISR_ALTERNATE : public MemRegister<uint32_t, 0x4000481c> { + using PE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x4u)>; + using RXNE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR_ALTERNATE, (0x1u << 0x6u)>; + using TXE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR_ALTERNATE, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR_ALTERNATE, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR_ALTERNATE, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR_ALTERNATE, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR_ALTERNATE, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x16u)>; + using TCBGT = RegisterMask<ISR_ALTERNATE, (0x1u << 0x19u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40004820> { + using PECF = RegisterMask<ICR, (0x1u << 0x0u)>; + using FECF = RegisterMask<ICR, (0x1u << 0x1u)>; + using NECF = RegisterMask<ICR, (0x1u << 0x2u)>; + using ORECF = RegisterMask<ICR, (0x1u << 0x3u)>; + using IDLECF = RegisterMask<ICR, (0x1u << 0x4u)>; + using TXFECF = RegisterMask<ICR, (0x1u << 0x5u)>; + using TCCF = RegisterMask<ICR, (0x1u << 0x6u)>; + using TCBGTCF = RegisterMask<ICR, (0x1u << 0x7u)>; + using LBDCF = RegisterMask<ICR, (0x1u << 0x8u)>; + using CTSCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using RTOCF = RegisterMask<ICR, (0x1u << 0xbu)>; + using EOBCF = RegisterMask<ICR, (0x1u << 0xcu)>; + using UDRCF = RegisterMask<ICR, (0x1u << 0xdu)>; + using CMCF = RegisterMask<ICR, (0x1u << 0x11u)>; + using WUCF = RegisterMask<ICR, (0x1u << 0x14u)>; + }; + struct RDR : public MemRegister<uint32_t, 0x40004824> { + using val = RegisterMask<RDR, (0x1ffu << 0x0u)>; + }; + struct TDR : public MemRegister<uint32_t, 0x40004828> { + using val = RegisterMask<TDR, (0x1ffu << 0x0u)>; + }; + struct PRESC : public MemRegister<uint32_t, 0x4000482c> { + using PRESCALER = RegisterMask<PRESC, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR1_ALTERNATE, CR2, CR3, BRR, GTPR, RTOR, RQR, ISR, ISR_ALTERNATE, ICR, RDR, TDR, PRESC>; + } + namespace USART4 { + struct CR1 : public MemRegister<uint32_t, 0x40004c00> { + using UE = RegisterMask<CR1, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1, (0x1u << 0x4u)>; + using RXFNEIE = RegisterMask<CR1, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1, (0x1u << 0x6u)>; + using TXFNFIE = RegisterMask<CR1, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1, (0x1u << 0x1du)>; + using TXFEIE = RegisterMask<CR1, (0x1u << 0x1eu)>; + using RXFFIE = RegisterMask<CR1, (0x1u << 0x1fu)>; + }; + struct CR1_ALTERNATE : public MemRegister<uint32_t, 0x40004c00> { + using UE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x0u)>; + using UESM = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1u)>; + using RE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x2u)>; + using TE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x3u)>; + using IDLEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x4u)>; + using RXNEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x5u)>; + using TCIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x6u)>; + using TXEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x7u)>; + using PEIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x8u)>; + using PS = RegisterMask<CR1_ALTERNATE, (0x1u << 0x9u)>; + using PCE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xau)>; + using WAKE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xbu)>; + using M0 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xcu)>; + using MME = RegisterMask<CR1_ALTERNATE, (0x1u << 0xdu)>; + using CMIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0xeu)>; + using OVER8 = RegisterMask<CR1_ALTERNATE, (0x1u << 0xfu)>; + using DEDT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x10u)>; + using DEAT = RegisterMask<CR1_ALTERNATE, (0x1fu << 0x15u)>; + using RTOIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1au)>; + using EOBIE = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1bu)>; + using M1 = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1cu)>; + using FIFOEN = RegisterMask<CR1_ALTERNATE, (0x1u << 0x1du)>; + }; + struct CR2 : public MemRegister<uint32_t, 0x40004c04> { + using SLVEN = RegisterMask<CR2, (0x1u << 0x0u)>; + using DIS_NSS = RegisterMask<CR2, (0x1u << 0x3u)>; + using ADDM7 = RegisterMask<CR2, (0x1u << 0x4u)>; + using LBDL = RegisterMask<CR2, (0x1u << 0x5u)>; + using LBDIE = RegisterMask<CR2, (0x1u << 0x6u)>; + using LBCL = RegisterMask<CR2, (0x1u << 0x8u)>; + using CPHA = RegisterMask<CR2, (0x1u << 0x9u)>; + using CPOL = RegisterMask<CR2, (0x1u << 0xau)>; + using CLKEN = RegisterMask<CR2, (0x1u << 0xbu)>; + using STOP = RegisterMask<CR2, (0x3u << 0xcu)>; + using LINEN = RegisterMask<CR2, (0x1u << 0xeu)>; + using SWAP = RegisterMask<CR2, (0x1u << 0xfu)>; + using RXINV = RegisterMask<CR2, (0x1u << 0x10u)>; + using TXINV = RegisterMask<CR2, (0x1u << 0x11u)>; + using DATAINV = RegisterMask<CR2, (0x1u << 0x12u)>; + using MSBFIRST = RegisterMask<CR2, (0x1u << 0x13u)>; + using ABREN = RegisterMask<CR2, (0x1u << 0x14u)>; + using ABRMOD = RegisterMask<CR2, (0x3u << 0x15u)>; + using RTOEN = RegisterMask<CR2, (0x1u << 0x17u)>; + using ADD = RegisterMask<CR2, (0xffu << 0x18u)>; + }; + struct CR3 : public MemRegister<uint32_t, 0x40004c08> { + using EIE = RegisterMask<CR3, (0x1u << 0x0u)>; + using IREN = RegisterMask<CR3, (0x1u << 0x1u)>; + using IRLP = RegisterMask<CR3, (0x1u << 0x2u)>; + using HDSEL = RegisterMask<CR3, (0x1u << 0x3u)>; + using NACK = RegisterMask<CR3, (0x1u << 0x4u)>; + using SCEN = RegisterMask<CR3, (0x1u << 0x5u)>; + using DMAR = RegisterMask<CR3, (0x1u << 0x6u)>; + using DMAT = RegisterMask<CR3, (0x1u << 0x7u)>; + using RTSE = RegisterMask<CR3, (0x1u << 0x8u)>; + using CTSE = RegisterMask<CR3, (0x1u << 0x9u)>; + using CTSIE = RegisterMask<CR3, (0x1u << 0xau)>; + using ONEBIT = RegisterMask<CR3, (0x1u << 0xbu)>; + using OVRDIS = RegisterMask<CR3, (0x1u << 0xcu)>; + using DDRE = RegisterMask<CR3, (0x1u << 0xdu)>; + using DEM = RegisterMask<CR3, (0x1u << 0xeu)>; + using DEP = RegisterMask<CR3, (0x1u << 0xfu)>; + using SCARCNT = RegisterMask<CR3, (0x7u << 0x11u)>; + using WUS0 = RegisterMask<CR3, (0x1u << 0x14u)>; + using WUS1 = RegisterMask<CR3, (0x1u << 0x15u)>; + using WUFIE = RegisterMask<CR3, (0x1u << 0x16u)>; + using TXFTIE = RegisterMask<CR3, (0x1u << 0x17u)>; + using TCBGTIE = RegisterMask<CR3, (0x1u << 0x18u)>; + using RXFTCFG = RegisterMask<CR3, (0x7u << 0x19u)>; + using RXFTIE = RegisterMask<CR3, (0x1u << 0x1cu)>; + using TXFTCFG = RegisterMask<CR3, (0x7u << 0x1du)>; + }; + struct BRR : public MemRegister<uint32_t, 0x40004c0c> { + using val = RegisterMask<BRR, (0xffffu << 0x0u)>; + }; + struct GTPR : public MemRegister<uint32_t, 0x40004c10> { + using PSC = RegisterMask<GTPR, (0xffu << 0x0u)>; + using GT = RegisterMask<GTPR, (0xffu << 0x8u)>; + }; + struct RTOR : public MemRegister<uint32_t, 0x40004c14> { + using RTO = RegisterMask<RTOR, (0xffffffu << 0x0u)>; + using BLEN = RegisterMask<RTOR, (0xffu << 0x18u)>; + }; + struct RQR : public MemRegister<uint32_t, 0x40004c18> { + using ABRRQ = RegisterMask<RQR, (0x1u << 0x0u)>; + using SBKRQ = RegisterMask<RQR, (0x1u << 0x1u)>; + using MMRQ = RegisterMask<RQR, (0x1u << 0x2u)>; + using RXFRQ = RegisterMask<RQR, (0x1u << 0x3u)>; + using TXFRQ = RegisterMask<RQR, (0x1u << 0x4u)>; + }; + struct ISR : public MemRegister<uint32_t, 0x40004c1c> { + using PE = RegisterMask<ISR, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR, (0x1u << 0x4u)>; + using RXFNE = RegisterMask<ISR, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR, (0x1u << 0x6u)>; + using TXFNF = RegisterMask<ISR, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR, (0x1u << 0x16u)>; + using TXFE = RegisterMask<ISR, (0x1u << 0x17u)>; + using RXFF = RegisterMask<ISR, (0x1u << 0x18u)>; + using TCBGT = RegisterMask<ISR, (0x1u << 0x19u)>; + using RXFT = RegisterMask<ISR, (0x1u << 0x1au)>; + using TXFT = RegisterMask<ISR, (0x1u << 0x1bu)>; + }; + struct ISR_ALTERNATE : public MemRegister<uint32_t, 0x40004c1c> { + using PE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x0u)>; + using FE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x1u)>; + using NE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x2u)>; + using ORE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x3u)>; + using IDLE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x4u)>; + using RXNE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x5u)>; + using TC = RegisterMask<ISR_ALTERNATE, (0x1u << 0x6u)>; + using TXE = RegisterMask<ISR_ALTERNATE, (0x1u << 0x7u)>; + using LBDF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x8u)>; + using CTSIF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x9u)>; + using CTS = RegisterMask<ISR_ALTERNATE, (0x1u << 0xau)>; + using RTOF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xbu)>; + using EOBF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xcu)>; + using UDR = RegisterMask<ISR_ALTERNATE, (0x1u << 0xdu)>; + using ABRE = RegisterMask<ISR_ALTERNATE, (0x1u << 0xeu)>; + using ABRF = RegisterMask<ISR_ALTERNATE, (0x1u << 0xfu)>; + using BUSY = RegisterMask<ISR_ALTERNATE, (0x1u << 0x10u)>; + using CMF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x11u)>; + using SBKF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x12u)>; + using RWU = RegisterMask<ISR_ALTERNATE, (0x1u << 0x13u)>; + using WUF = RegisterMask<ISR_ALTERNATE, (0x1u << 0x14u)>; + using TEACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x15u)>; + using REACK = RegisterMask<ISR_ALTERNATE, (0x1u << 0x16u)>; + using TCBGT = RegisterMask<ISR_ALTERNATE, (0x1u << 0x19u)>; + }; + struct ICR : public MemRegister<uint32_t, 0x40004c20> { + using PECF = RegisterMask<ICR, (0x1u << 0x0u)>; + using FECF = RegisterMask<ICR, (0x1u << 0x1u)>; + using NECF = RegisterMask<ICR, (0x1u << 0x2u)>; + using ORECF = RegisterMask<ICR, (0x1u << 0x3u)>; + using IDLECF = RegisterMask<ICR, (0x1u << 0x4u)>; + using TXFECF = RegisterMask<ICR, (0x1u << 0x5u)>; + using TCCF = RegisterMask<ICR, (0x1u << 0x6u)>; + using TCBGTCF = RegisterMask<ICR, (0x1u << 0x7u)>; + using LBDCF = RegisterMask<ICR, (0x1u << 0x8u)>; + using CTSCF = RegisterMask<ICR, (0x1u << 0x9u)>; + using RTOCF = RegisterMask<ICR, (0x1u << 0xbu)>; + using EOBCF = RegisterMask<ICR, (0x1u << 0xcu)>; + using UDRCF = RegisterMask<ICR, (0x1u << 0xdu)>; + using CMCF = RegisterMask<ICR, (0x1u << 0x11u)>; + using WUCF = RegisterMask<ICR, (0x1u << 0x14u)>; + }; + struct RDR : public MemRegister<uint32_t, 0x40004c24> { + using val = RegisterMask<RDR, (0x1ffu << 0x0u)>; + }; + struct TDR : public MemRegister<uint32_t, 0x40004c28> { + using val = RegisterMask<TDR, (0x1ffu << 0x0u)>; + }; + struct PRESC : public MemRegister<uint32_t, 0x40004c2c> { + using PRESCALER = RegisterMask<PRESC, (0xfu << 0x0u)>; + }; + using ALL = RegisterGroup<CR1, CR1_ALTERNATE, CR2, CR3, BRR, GTPR, RTOR, RQR, ISR, ISR_ALTERNATE, ICR, RDR, TDR, PRESC>; + } + namespace USB { + struct CHEP0R : public MemRegister<uint32_t, 0x40005c00> { + using EA = RegisterMask<CHEP0R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP0R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP0R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP0R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP0R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP0R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP0R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP0R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP0R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP0R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP0R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP0R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP0R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP0R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP0R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP0R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP0R, (0x3u << 0x1du)>; + }; + struct CHEP1R : public MemRegister<uint32_t, 0x40005c04> { + using EA = RegisterMask<CHEP1R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP1R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP1R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP1R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP1R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP1R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP1R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP1R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP1R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP1R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP1R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP1R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP1R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP1R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP1R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP1R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP1R, (0x3u << 0x1du)>; + }; + struct CHEP2R : public MemRegister<uint32_t, 0x40005c08> { + using EA = RegisterMask<CHEP2R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP2R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP2R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP2R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP2R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP2R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP2R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP2R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP2R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP2R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP2R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP2R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP2R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP2R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP2R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP2R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP2R, (0x3u << 0x1du)>; + }; + struct CHEP3R : public MemRegister<uint32_t, 0x40005c0c> { + using EA = RegisterMask<CHEP3R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP3R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP3R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP3R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP3R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP3R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP3R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP3R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP3R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP3R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP3R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP3R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP3R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP3R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP3R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP3R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP3R, (0x3u << 0x1du)>; + }; + struct CHEP4R : public MemRegister<uint32_t, 0x40005c10> { + using EA = RegisterMask<CHEP4R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP4R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP4R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP4R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP4R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP4R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP4R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP4R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP4R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP4R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP4R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP4R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP4R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP4R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP4R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP4R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP4R, (0x3u << 0x1du)>; + }; + struct CHEP5R : public MemRegister<uint32_t, 0x40005c14> { + using EA = RegisterMask<CHEP5R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP5R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP5R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP5R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP5R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP5R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP5R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP5R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP5R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP5R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP5R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP5R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP5R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP5R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP5R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP5R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP5R, (0x3u << 0x1du)>; + }; + struct CHEP6R : public MemRegister<uint32_t, 0x40005c18> { + using EA = RegisterMask<CHEP6R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP6R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP6R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP6R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP6R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP6R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP6R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP6R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP6R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP6R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP6R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP6R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP6R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP6R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP6R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP6R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP6R, (0x3u << 0x1du)>; + }; + struct CHEP7R : public MemRegister<uint32_t, 0x40005c1c> { + using EA = RegisterMask<CHEP7R, (0xfu << 0x0u)>; + using STATTX = RegisterMask<CHEP7R, (0x3u << 0x4u)>; + using DTOGTX = RegisterMask<CHEP7R, (0x1u << 0x6u)>; + using VTTX = RegisterMask<CHEP7R, (0x1u << 0x7u)>; + using EPKIND = RegisterMask<CHEP7R, (0x1u << 0x8u)>; + using UTYPE = RegisterMask<CHEP7R, (0x3u << 0x9u)>; + using SETUP = RegisterMask<CHEP7R, (0x1u << 0xbu)>; + using STATRX = RegisterMask<CHEP7R, (0x3u << 0xcu)>; + using DTOGRX = RegisterMask<CHEP7R, (0x1u << 0xeu)>; + using VTRX = RegisterMask<CHEP7R, (0x1u << 0xfu)>; + using DEVADDR = RegisterMask<CHEP7R, (0x7fu << 0x10u)>; + using NAK = RegisterMask<CHEP7R, (0x1u << 0x17u)>; + using LS_EP = RegisterMask<CHEP7R, (0x1u << 0x18u)>; + using ERR_TX = RegisterMask<CHEP7R, (0x1u << 0x19u)>; + using ERR_RX = RegisterMask<CHEP7R, (0x1u << 0x1au)>; + using THREE_ERR_TX = RegisterMask<CHEP7R, (0x3u << 0x1bu)>; + using THREE_ERR_RX = RegisterMask<CHEP7R, (0x3u << 0x1du)>; + }; + struct CNTR : public MemRegister<uint32_t, 0x40005c40> { + using USBRST = RegisterMask<CNTR, (0x1u << 0x0u)>; + using PDWN = RegisterMask<CNTR, (0x1u << 0x1u)>; + using SUSPRDY = RegisterMask<CNTR, (0x1u << 0x2u)>; + using SUSPEN = RegisterMask<CNTR, (0x1u << 0x3u)>; + using L2RES = RegisterMask<CNTR, (0x1u << 0x4u)>; + using L1RES = RegisterMask<CNTR, (0x1u << 0x5u)>; + using L1REQM = RegisterMask<CNTR, (0x1u << 0x7u)>; + using ESOFM = RegisterMask<CNTR, (0x1u << 0x8u)>; + using SOFM = RegisterMask<CNTR, (0x1u << 0x9u)>; + using RST_DCONM = RegisterMask<CNTR, (0x1u << 0xau)>; + using SUSPM = RegisterMask<CNTR, (0x1u << 0xbu)>; + using WKUPM = RegisterMask<CNTR, (0x1u << 0xcu)>; + using ERRM = RegisterMask<CNTR, (0x1u << 0xdu)>; + using PMAOVRM = RegisterMask<CNTR, (0x1u << 0xeu)>; + using CTRM = RegisterMask<CNTR, (0x1u << 0xfu)>; + using THR512M = RegisterMask<CNTR, (0x1u << 0x10u)>; + using DDISCM = RegisterMask<CNTR, (0x1u << 0x11u)>; + using HOST = RegisterMask<CNTR, (0x1u << 0x1fu)>; + }; + struct ISTR : public MemRegister<uint32_t, 0x40005c44> { + using IDN = RegisterMask<ISTR, (0xfu << 0x0u)>; + using DIR = RegisterMask<ISTR, (0x1u << 0x4u)>; + using L1REQ = RegisterMask<ISTR, (0x1u << 0x7u)>; + using ESOF = RegisterMask<ISTR, (0x1u << 0x8u)>; + using SOF = RegisterMask<ISTR, (0x1u << 0x9u)>; + using RST_DCON = RegisterMask<ISTR, (0x1u << 0xau)>; + using SUSP = RegisterMask<ISTR, (0x1u << 0xbu)>; + using WKUP = RegisterMask<ISTR, (0x1u << 0xcu)>; + using ERR = RegisterMask<ISTR, (0x1u << 0xdu)>; + using PMAOVR = RegisterMask<ISTR, (0x1u << 0xeu)>; + using CTR = RegisterMask<ISTR, (0x1u << 0xfu)>; + using THR512 = RegisterMask<ISTR, (0x1u << 0x10u)>; + using DDISC = RegisterMask<ISTR, (0x1u << 0x11u)>; + using DCON_STAT = RegisterMask<ISTR, (0x1u << 0x1du)>; + using LS_DCON = RegisterMask<ISTR, (0x1u << 0x1eu)>; + }; + struct FNR : public MemRegister<uint32_t, 0x40005c48> { + using FN = RegisterMask<FNR, (0x7ffu << 0x0u)>; + using LSOF = RegisterMask<FNR, (0x3u << 0xbu)>; + using LCK = RegisterMask<FNR, (0x1u << 0xdu)>; + using RXDM = RegisterMask<FNR, (0x1u << 0xeu)>; + using RXDP = RegisterMask<FNR, (0x1u << 0xfu)>; + }; + struct DADDR : public MemRegister<uint32_t, 0x40005c4c> { + using ADD = RegisterMask<DADDR, (0x7fu << 0x0u)>; + using EF = RegisterMask<DADDR, (0x1u << 0x7u)>; + }; + struct LPMCSR : public MemRegister<uint32_t, 0x40005c54> { + using LPMEN = RegisterMask<LPMCSR, (0x1u << 0x0u)>; + using LPMACK = RegisterMask<LPMCSR, (0x1u << 0x1u)>; + using REMWAKE = RegisterMask<LPMCSR, (0x1u << 0x3u)>; + using BESL = RegisterMask<LPMCSR, (0xfu << 0x4u)>; + }; + struct BCDR : public MemRegister<uint32_t, 0x40005c58> { + using BCDEN = RegisterMask<BCDR, (0x1u << 0x0u)>; + using DCDEN = RegisterMask<BCDR, (0x1u << 0x1u)>; + using PDEN = RegisterMask<BCDR, (0x1u << 0x2u)>; + using SDEN = RegisterMask<BCDR, (0x1u << 0x3u)>; + using DCDET = RegisterMask<BCDR, (0x1u << 0x4u)>; + using PDET = RegisterMask<BCDR, (0x1u << 0x5u)>; + using SDET = RegisterMask<BCDR, (0x1u << 0x6u)>; + using PS2DET = RegisterMask<BCDR, (0x1u << 0x7u)>; + using DPPU_DPD = RegisterMask<BCDR, (0x1u << 0xfu)>; + }; + using ALL = RegisterGroup<CHEP0R, CHEP1R, CHEP2R, CHEP3R, CHEP4R, CHEP5R, CHEP6R, CHEP7R, CNTR, ISTR, FNR, DADDR, LPMCSR, BCDR>; + } + namespace VREFBUF { + struct CSR : public MemRegister<uint32_t, 0x40010030> { + using ENVR = RegisterMask<CSR, (0x1u << 0x0u)>; + using HIZ = RegisterMask<CSR, (0x1u << 0x1u)>; + using VRS = RegisterMask<CSR, (0x1u << 0x2u)>; + using VRR = RegisterMask<CSR, (0x1u << 0x3u)>; + }; + struct CCR : public MemRegister<uint32_t, 0x40010034> { + using TRIM = RegisterMask<CCR, (0x3fu << 0x0u)>; + }; + using ALL = RegisterGroup<CSR, CCR>; + } + namespace WWDG { + struct CR : public MemRegister<uint32_t, 0x40002c00> { + using T = RegisterMask<CR, (0x7fu << 0x0u)>; + using WDGA = RegisterMask<CR, (0x1u << 0x7u)>; + }; + struct CFR : public MemRegister<uint32_t, 0x40002c04> { + using W = RegisterMask<CFR, (0x7fu << 0x0u)>; + using EWI = RegisterMask<CFR, (0x1u << 0x9u)>; + using WDGTB = RegisterMask<CFR, (0x7u << 0xbu)>; + }; + struct SR : public MemRegister<uint32_t, 0x40002c08> { + using EWIF = RegisterMask<SR, (0x1u << 0x0u)>; + }; + using ALL = RegisterGroup<CR, CFR, SR>; + } +} |