use drone_core::periph; use drone_cortexm::reg::marker::*; periph! { /// Generic ADC peripheral variant. pub trait AdcMap {} /// Generic ADC peripheral. pub struct AdcPeriph; RCC { BUSENR { 0x20 RwRegBitBand Shared; ADCEN { RwRwRegFieldBitBand } } BUSSMENR { 0x20 RwRegBitBand Shared; ADCSMEN { RwRwRegFieldBitBand } } CCIPR { 0x20 RwRegBitBand Shared; ADCSEL { RwRwRegFieldBits } } } ADC { ISR { 0x20 RwReg; ADRDY { RwRwRegFieldBit } AWD1 { RwRwRegFieldBit } AWD2 { RwRwRegFieldBit } AWD3 { RwRwRegFieldBit } EOC { RwRwRegFieldBit } EOSMP { RwRwRegFieldBit } EOS { RwRwRegFieldBit } JEOC { RwRwRegFieldBit } JEOS { RwRwRegFieldBit } JQOVF { RwRwRegFieldBit } OVR { RwRwRegFieldBit } } IER { 0x20 RwReg; ADRDYIE { RwRwRegFieldBit } AWD1IE { RwRwRegFieldBit } AWD2IE { RwRwRegFieldBit } AWD3IE { RwRwRegFieldBit } EOCIE { RwRwRegFieldBit } EOSIE { RwRwRegFieldBit } EOSMPIE { RwRwRegFieldBit } JEOCIE { RwRwRegFieldBit } JEOSIE { RwRwRegFieldBit } JQOVFIE { RwRwRegFieldBit } OVRIE { RwRwRegFieldBit } } CR { 0x20 RwReg; ADCALDIF { RwRwRegFieldBit } ADCAL { RwRwRegFieldBit } ADDIS { RwRwRegFieldBit } ADEN { RwRwRegFieldBit } ADSTART { RwRwRegFieldBit } ADSTP { RwRwRegFieldBit } ADVREGEN { RwRwRegFieldBit } DEEPPWD { RwRwRegFieldBit } JADSTART { RwRwRegFieldBit } JADSTP { RwRwRegFieldBit } } CFGR { 0x20 RwReg; ALIGN { RwRwRegFieldBit } AUTDLY { RwRwRegFieldBit } AWD1EN { RwRwRegFieldBit } AWD1SGL { RwRwRegFieldBit } AWDCH1CH { RwRwRegFieldBits } CONT { RwRwRegFieldBit } DISCEN { RwRwRegFieldBit } DISCNUM { RwRwRegFieldBits } DMACFG { RwRwRegFieldBit } DMAEN { RwRwRegFieldBit } EXTEN { RwRwRegFieldBits } EXTSEL { RwRwRegFieldBits } JAUTO { RwRwRegFieldBit } JAWD1EN { RwRwRegFieldBit } JDISCEN { RwRwRegFieldBit } JQDIS { RwRwRegFieldBit } JQM { RwRwRegFieldBit } OVRMOD { RwRwRegFieldBit } RES { RwRwRegFieldBits } } CFGR2 { 0x20 RwReg; JOVSE { RwRwRegFieldBit } OVSR { RwRwRegFieldBits } OVSS { RwRwRegFieldBits } ROVSE { RwRwRegFieldBit } ROVSM { RwRwRegFieldBit } TROVS { RwRwRegFieldBit } } SMPR1 { 0x20 RwReg; SMP0 { RwRwRegFieldBits } SMP1 { RwRwRegFieldBits } SMP2 { RwRwRegFieldBits } SMP3 { RwRwRegFieldBits } SMP4 { RwRwRegFieldBits } SMP5 { RwRwRegFieldBits } SMP6 { RwRwRegFieldBits } SMP7 { RwRwRegFieldBits } SMP8 { RwRwRegFieldBits } SMP9 { RwRwRegFieldBits } } SMPR2 { 0x20 RwReg; SMP10 { RwRwRegFieldBits } SMP11 { RwRwRegFieldBits } SMP12 { RwRwRegFieldBits } SMP13 { RwRwRegFieldBits } SMP14 { RwRwRegFieldBits } SMP15 { RwRwRegFieldBits } SMP16 { RwRwRegFieldBits } SMP17 { RwRwRegFieldBits } SMP18 { RwRwRegFieldBits } } TR1 { 0x20 RwReg; HT1 { RwRwRegFieldBits } LT1 { RwRwRegFieldBits } } TR2 { 0x20 RwReg; HT2 { RwRwRegFieldBits } LT2 { RwRwRegFieldBits } } TR3 { 0x20 RwReg; HT3 { RwRwRegFieldBits } LT3 { RwRwRegFieldBits } } SQR1 { 0x20 RwReg; L { RwRwRegFieldBits } SQ1 { RwRwRegFieldBits } SQ2 { RwRwRegFieldBits } SQ3 { RwRwRegFieldBits } SQ4 { RwRwRegFieldBits } } SQR2 { 0x20 RwReg; SQ5 { RwRwRegFieldBits } SQ6 { RwRwRegFieldBits } SQ7 { RwRwRegFieldBits } SQ8 { RwRwRegFieldBits } SQ9 { RwRwRegFieldBits } } SQR3 { 0x20 RwReg; SQ10 { RwRwRegFieldBits } SQ11 { RwRwRegFieldBits } SQ12 { RwRwRegFieldBits } SQ13 { RwRwRegFieldBits } SQ14 { RwRwRegFieldBits } } SQR4 { 0x20 RwReg; SQ15 { RwRwRegFieldBits } SQ16 { RwRwRegFieldBits } } DR { 0x20 RoReg; RDATA { RoRoRegFieldBits } } JSQR { 0x20 RwReg; JEXTEN { RwRwRegFieldBits } JEXTSEL { RwRwRegFieldBits } JL { RwRwRegFieldBits } JSQ1 { RwRwRegFieldBits } JSQ2 { RwRwRegFieldBits } JSQ3 { RwRwRegFieldBits } JSQ4 { RwRwRegFieldBits } } OFR1 { 0x20 RwReg; OFFSET1_CH { RwRwRegFieldBits } OFFSET1_EN { RwRwRegFieldBit } OFFSET1 { RwRwRegFieldBits } } OFR2 { 0x20 RwReg; OFFSET2_CH { RwRwRegFieldBits } OFFSET2_EN { RwRwRegFieldBit } OFFSET2 { RwRwRegFieldBits } } OFR3 { 0x20 RwReg; OFFSET3_CH { RwRwRegFieldBits } OFFSET3_EN { RwRwRegFieldBit } OFFSET3 { RwRwRegFieldBits } } OFR4 { 0x20 RwReg; OFFSET4_CH { RwRwRegFieldBits } OFFSET4_EN { RwRwRegFieldBit } OFFSET4 { RwRwRegFieldBits } } JDR1 { 0x20 RoReg; JDATA { RoRoRegFieldBits } } JDR2 { 0x20 RoReg; JDATA { RoRoRegFieldBits } } JDR3 { 0x20 RoReg; JDATA { RoRoRegFieldBits } } JDR4 { 0x20 RoReg; JDATA { RoRoRegFieldBits } } AWD2CR { 0x20 RwReg; AWD2CH { RwRwRegFieldBits } } AWD3CR { 0x20 RwReg; AWD3CH { RwRwRegFieldBits } } DIFSEL { 0x20 RwReg; DIFSEL_1_15 { RwRwRegFieldBits } DIFSEL_16_18 { RoRwRegFieldBits } } CALFACT { 0x20 RwReg; CALFACT_D { RwRwRegFieldBits } CALFACT_S { RwRwRegFieldBits } } } } macro_rules! map_adc { ( $adc_macro_doc:expr, $adc_macro:ident, $adc_ty_doc:expr, $adc_ty:ident, $adc:ident, $busenr:ident, $bussmenr:ident, $adcen:ident, $adcsmen:ident, ) => { periph::map! { #[doc = $adc_macro_doc] pub macro $adc_macro; #[doc = $adc_ty_doc] pub struct $adc_ty; impl AdcMap for $adc_ty {} drone_stm32_map_pieces::reg; crate; RCC { BUSENR { $busenr Shared; ADCEN { $adcen } } BUSSMENR { $bussmenr Shared; ADCSMEN { $adcsmen } } CCIPR { CCIPR Shared; ADCSEL { ADCSEL } } } ADC { $adc; ISR { ISR; ADRDY { ADRDY } AWD1 { AWD1 } AWD2 { AWD2 } AWD3 { AWD3 } EOC { EOC } EOSMP { EOSMP } EOS { EOS } JEOC { JEOC } JEOS { JEOS } JQOVF { JQOVF } OVR { OVR } } IER { IER; ADRDYIE { ADRDYIE } AWD1IE { AWD1IE } AWD2IE { AWD2IE } AWD3IE { AWD3IE } EOCIE { EOCIE } EOSIE { EOSIE } EOSMPIE { EOSMPIE } JEOCIE { JEOCIE } JEOSIE { JEOSIE } JQOVFIE { JQOVFIE } OVRIE { OVRIE } } CR { CR; ADCALDIF { ADCALDIF } ADCAL { ADCAL } ADDIS { ADDIS } ADEN { ADEN } ADSTART { ADSTART } ADSTP { ADSTP } ADVREGEN { ADVREGEN } DEEPPWD { DEEPPWD } JADSTART { JADSTART } JADSTP { JADSTP } } CFGR { CFGR; ALIGN { ALIGN } AUTDLY { AUTDLY } AWD1EN { AWD1EN } AWD1SGL { AWD1SGL } AWDCH1CH { AWDCH1CH } CONT { CONT } DISCEN { DISCEN } DISCNUM { DISCNUM } DMACFG { DMACFG } DMAEN { DMAEN } EXTEN { EXTEN } EXTSEL { EXTSEL } JAUTO { JAUTO } JAWD1EN { JAWD1EN } JDISCEN { JDISCEN } JQDIS { JQDIS } JQM { JQM } OVRMOD { OVRMOD } RES { RES } } CFGR2 { CFGR2; JOVSE { JOVSE } OVSR { OVSR } OVSS { OVSS } ROVSE { ROVSE } ROVSM { ROVSM } TROVS { TROVS } } SMPR1 { SMPR1; SMP0 { SMP0 } SMP1 { SMP1 } SMP2 { SMP2 } SMP3 { SMP3 } SMP4 { SMP4 } SMP5 { SMP5 } SMP6 { SMP6 } SMP7 { SMP7 } SMP8 { SMP8 } SMP9 { SMP9 } } SMPR2 { SMPR2; SMP10 { SMP10 } SMP11 { SMP11 } SMP12 { SMP12 } SMP13 { SMP13 } SMP14 { SMP14 } SMP15 { SMP15 } SMP16 { SMP16 } SMP17 { SMP17 } SMP18 { SMP18 } } TR1 { TR1; HT1 { HT1 } LT1 { LT1 } } TR2 { TR2; HT2 { HT2 } LT2 { LT2 } } TR3 { TR3; HT3 { HT3 } LT3 { LT3 } } SQR1 { SQR1; L { L } SQ1 { SQ1 } SQ2 { SQ2 } SQ3 { SQ3 } SQ4 { SQ4 } } SQR2 { SQR2; SQ5 { SQ5 } SQ6 { SQ6 } SQ7 { SQ7 } SQ8 { SQ8 } SQ9 { SQ9 } } SQR3 { SQR3; SQ10 { SQ10 } SQ11 { SQ11 } SQ12 { SQ12 } SQ13 { SQ13 } SQ14 { SQ14 } } SQR4 { SQR4; SQ15 { SQ15 } SQ16 { SQ16 } } DR { DR; RDATA { RDATA } } JSQR { JSQR; JEXTEN { JEXTEN } JEXTSEL { JEXTSEL } JL { JL } JSQ1 { JSQ1 } JSQ2 { JSQ2 } JSQ3 { JSQ3 } JSQ4 { JSQ4 } } OFR1 { OFR1; OFFSET1_CH { OFFSET1_CH } OFFSET1_EN { OFFSET1_EN } OFFSET1 { OFFSET1 } } OFR2 { OFR2; OFFSET2_CH { OFFSET2_CH } OFFSET2_EN { OFFSET2_EN } OFFSET2 { OFFSET2 } } OFR3 { OFR3; OFFSET3_CH { OFFSET3_CH } OFFSET3_EN { OFFSET3_EN } OFFSET3 { OFFSET3 } } OFR4 { OFR4; OFFSET4_CH { OFFSET4_CH } OFFSET4_EN { OFFSET4_EN } OFFSET4 { OFFSET4 } } JDR1 { JDR1; JDATA { JDATA } } JDR2 { JDR2; JDATA { JDATA } } JDR3 { JDR3; JDATA { JDATA } } JDR4 { JDR4; JDATA { JDATA } } AWD2CR { AWD2CR; AWD2CH { AWD2CH } } AWD3CR { AWD3CR; AWD3CH { AWD3CH } } DIFSEL { DIFSEL; DIFSEL_1_15 { DIFSEL_1_15 } DIFSEL_16_18 { DIFSEL_16_18 } } CALFACT { CALFACT; CALFACT_D { CALFACT_D } CALFACT_S { CALFACT_S } } } } }; } map_adc! { "Extracts ADC register tokens.", periph_adc1, "ADC1 peripheral variant.", Adc1, ADC, AHB2ENR, AHB2SMENR, ADCEN, ADCSMEN, }