@@ -49,6 +49,8 @@ pub struct OpenDrain;
49
49
/// Analog mode (type state)
50
50
pub struct Analog ;
51
51
52
+ pub type Debugger = Alternate < PushPull , 0 > ;
53
+
52
54
/// GPIO Pin speed selection
53
55
pub enum Speed {
54
56
Low = 0 ,
@@ -240,17 +242,7 @@ macro_rules! gpio {
240
242
use crate :: stm32:: $GPIOX;
241
243
242
244
use crate :: rcc:: { AHB2 , Enable , Reset } ;
243
- use super :: {
244
- Afr ,
245
- Pin ,
246
- Floating , GpioExt , Input ,
247
- H8 ,
248
- L8 ,
249
- MODER ,
250
- OTYPER ,
251
- OSPEEDR ,
252
- PUPDR ,
253
- } ;
245
+ use super :: { Afr , Analog , GpioExt , Pin , H8 , L8 , MODER , OTYPER , OSPEEDR , PUPDR } ;
254
246
255
247
/// GPIO parts
256
248
pub struct Parts {
@@ -615,98 +607,98 @@ af!(H8, AFRH, afrh);
615
607
af ! ( L8 , AFRL , afrl) ;
616
608
617
609
gpio ! ( GPIOA , gpioa, PAx , 'A' , 0 , [
618
- PA0 : ( pa0, 0 , Input < Floating > , L8 , exticr1) ,
619
- PA1 : ( pa1, 1 , Input < Floating > , L8 , exticr1) ,
620
- PA2 : ( pa2, 2 , Input < Floating > , L8 , exticr1) ,
621
- PA3 : ( pa3, 3 , Input < Floating > , L8 , exticr1) ,
622
- PA4 : ( pa4, 4 , Input < Floating > , L8 , exticr2) ,
623
- PA5 : ( pa5, 5 , Input < Floating > , L8 , exticr2) ,
624
- PA6 : ( pa6, 6 , Input < Floating > , L8 , exticr2) ,
625
- PA7 : ( pa7, 7 , Input < Floating > , L8 , exticr2) ,
626
- PA8 : ( pa8, 8 , Input < Floating > , H8 , exticr3) ,
627
- PA9 : ( pa9, 9 , Input < Floating > , H8 , exticr3) ,
628
- PA10 : ( pa10, 10 , Input < Floating > , H8 , exticr3) ,
629
- PA11 : ( pa11, 11 , Input < Floating > , H8 , exticr3) ,
630
- PA12 : ( pa12, 12 , Input < Floating > , H8 , exticr4) ,
631
- PA13 : ( pa13, 13 , Input < Floating > , H8 , exticr4) ,
632
- PA14 : ( pa14, 14 , Input < Floating > , H8 , exticr4) ,
633
- PA15 : ( pa15, 15 , Input < Floating > , H8 , exticr4) ,
610
+ PA0 : ( pa0, 0 , Analog , L8 , exticr1) ,
611
+ PA1 : ( pa1, 1 , Analog , L8 , exticr1) ,
612
+ PA2 : ( pa2, 2 , Analog , L8 , exticr1) ,
613
+ PA3 : ( pa3, 3 , Analog , L8 , exticr1) ,
614
+ PA4 : ( pa4, 4 , Analog , L8 , exticr2) ,
615
+ PA5 : ( pa5, 5 , Analog , L8 , exticr2) ,
616
+ PA6 : ( pa6, 6 , Analog , L8 , exticr2) ,
617
+ PA7 : ( pa7, 7 , Analog , L8 , exticr2) ,
618
+ PA8 : ( pa8, 8 , Analog , H8 , exticr3) ,
619
+ PA9 : ( pa9, 9 , Analog , H8 , exticr3) ,
620
+ PA10 : ( pa10, 10 , Analog , H8 , exticr3) ,
621
+ PA11 : ( pa11, 11 , Analog , H8 , exticr3) ,
622
+ PA12 : ( pa12, 12 , Analog , H8 , exticr4) ,
623
+ PA13 : ( pa13, 13 , super :: Debugger , H8 , exticr4) , // SWDIO, PullUp VeryHigh speed
624
+ PA14 : ( pa14, 14 , super :: Debugger , H8 , exticr4) , // SWCLK, PullDown
625
+ PA15 : ( pa15, 15 , super :: Debugger , H8 , exticr4) , // JTDI, PullUp
634
626
] ) ;
635
627
636
628
gpio ! ( GPIOB , gpiob, PBx , 'B' , 1 , [
637
- PB0 : ( pb0, 0 , Input < Floating > , L8 , exticr1) ,
638
- PB1 : ( pb1, 1 , Input < Floating > , L8 , exticr1) ,
639
- PB2 : ( pb2, 2 , Input < Floating > , L8 , exticr1) ,
640
- PB3 : ( pb3, 3 , Input < Floating > , L8 , exticr1) ,
641
- PB4 : ( pb4, 4 , Input < Floating > , L8 , exticr2) ,
642
- PB5 : ( pb5, 5 , Input < Floating > , L8 , exticr2) ,
643
- PB6 : ( pb6, 6 , Input < Floating > , L8 , exticr2) ,
644
- PB7 : ( pb7, 7 , Input < Floating > , L8 , exticr2) ,
645
- PB8 : ( pb8, 8 , Input < Floating > , H8 , exticr3) ,
646
- PB9 : ( pb9, 9 , Input < Floating > , H8 , exticr3) ,
647
- PB10 : ( pb10, 10 , Input < Floating > , H8 , exticr3) ,
648
- PB11 : ( pb11, 11 , Input < Floating > , H8 , exticr3) ,
649
- PB12 : ( pb12, 12 , Input < Floating > , H8 , exticr4) ,
650
- PB13 : ( pb13, 13 , Input < Floating > , H8 , exticr4) ,
651
- PB14 : ( pb14, 14 , Input < Floating > , H8 , exticr4) ,
652
- PB15 : ( pb15, 15 , Input < Floating > , H8 , exticr4) ,
629
+ PB0 : ( pb0, 0 , Analog , L8 , exticr1) ,
630
+ PB1 : ( pb1, 1 , Analog , L8 , exticr1) ,
631
+ PB2 : ( pb2, 2 , Analog , L8 , exticr1) ,
632
+ PB3 : ( pb3, 3 , super :: Debugger , L8 , exticr1) , // SWO
633
+ PB4 : ( pb4, 4 , super :: Debugger , L8 , exticr2) , // JTRST, PullUp
634
+ PB5 : ( pb5, 5 , Analog , L8 , exticr2) ,
635
+ PB6 : ( pb6, 6 , Analog , L8 , exticr2) ,
636
+ PB7 : ( pb7, 7 , Analog , L8 , exticr2) ,
637
+ PB8 : ( pb8, 8 , Analog , H8 , exticr3) ,
638
+ PB9 : ( pb9, 9 , Analog , H8 , exticr3) ,
639
+ PB10 : ( pb10, 10 , Analog , H8 , exticr3) ,
640
+ PB11 : ( pb11, 11 , Analog , H8 , exticr3) ,
641
+ PB12 : ( pb12, 12 , Analog , H8 , exticr4) ,
642
+ PB13 : ( pb13, 13 , Analog , H8 , exticr4) ,
643
+ PB14 : ( pb14, 14 , Analog , H8 , exticr4) ,
644
+ PB15 : ( pb15, 15 , Analog , H8 , exticr4) ,
653
645
] ) ;
654
646
655
647
gpio ! ( GPIOC , gpioc, PCx , 'C' , 2 , [
656
- PC0 : ( pc0, 0 , Input < Floating > , L8 , exticr1) ,
657
- PC1 : ( pc1, 1 , Input < Floating > , L8 , exticr1) ,
658
- PC2 : ( pc2, 2 , Input < Floating > , L8 , exticr1) ,
659
- PC3 : ( pc3, 3 , Input < Floating > , L8 , exticr1) ,
660
- PC4 : ( pc4, 4 , Input < Floating > , L8 , exticr2) ,
661
- PC5 : ( pc5, 5 , Input < Floating > , L8 , exticr2) ,
662
- PC6 : ( pc6, 6 , Input < Floating > , L8 , exticr2) ,
663
- PC7 : ( pc7, 7 , Input < Floating > , L8 , exticr2) ,
664
- PC8 : ( pc8, 8 , Input < Floating > , H8 , exticr3) ,
665
- PC9 : ( pc9, 9 , Input < Floating > , H8 , exticr3) ,
666
- PC10 : ( pc10, 10 , Input < Floating > , H8 , exticr3) ,
667
- PC11 : ( pc11, 11 , Input < Floating > , H8 , exticr3) ,
668
- PC12 : ( pc12, 12 , Input < Floating > , H8 , exticr4) ,
669
- PC13 : ( pc13, 13 , Input < Floating > , H8 , exticr4) ,
670
- PC14 : ( pc14, 14 , Input < Floating > , H8 , exticr4) ,
671
- PC15 : ( pc15, 15 , Input < Floating > , H8 , exticr4) ,
648
+ PC0 : ( pc0, 0 , Analog , L8 , exticr1) ,
649
+ PC1 : ( pc1, 1 , Analog , L8 , exticr1) ,
650
+ PC2 : ( pc2, 2 , Analog , L8 , exticr1) ,
651
+ PC3 : ( pc3, 3 , Analog , L8 , exticr1) ,
652
+ PC4 : ( pc4, 4 , Analog , L8 , exticr2) ,
653
+ PC5 : ( pc5, 5 , Analog , L8 , exticr2) ,
654
+ PC6 : ( pc6, 6 , Analog , L8 , exticr2) ,
655
+ PC7 : ( pc7, 7 , Analog , L8 , exticr2) ,
656
+ PC8 : ( pc8, 8 , Analog , H8 , exticr3) ,
657
+ PC9 : ( pc9, 9 , Analog , H8 , exticr3) ,
658
+ PC10 : ( pc10, 10 , Analog , H8 , exticr3) ,
659
+ PC11 : ( pc11, 11 , Analog , H8 , exticr3) ,
660
+ PC12 : ( pc12, 12 , Analog , H8 , exticr4) ,
661
+ PC13 : ( pc13, 13 , Analog , H8 , exticr4) ,
662
+ PC14 : ( pc14, 14 , Analog , H8 , exticr4) ,
663
+ PC15 : ( pc15, 15 , Analog , H8 , exticr4) ,
672
664
] ) ;
673
665
674
666
gpio ! ( GPIOD , gpiod, PDx , 'D' , 3 , [
675
- PD0 : ( pd0, 0 , Input < Floating > , L8 , exticr1) ,
676
- PD1 : ( pd1, 1 , Input < Floating > , L8 , exticr1) ,
677
- PD2 : ( pd2, 2 , Input < Floating > , L8 , exticr1) ,
678
- PD3 : ( pd3, 3 , Input < Floating > , L8 , exticr1) ,
679
- PD4 : ( pd4, 4 , Input < Floating > , L8 , exticr2) ,
680
- PD5 : ( pd5, 5 , Input < Floating > , L8 , exticr2) ,
681
- PD6 : ( pd6, 6 , Input < Floating > , L8 , exticr2) ,
682
- PD7 : ( pd7, 7 , Input < Floating > , L8 , exticr2) ,
683
- PD8 : ( pd8, 8 , Input < Floating > , H8 , exticr3) ,
684
- PD9 : ( pd9, 9 , Input < Floating > , H8 , exticr3) ,
685
- PD10 : ( pd10, 10 , Input < Floating > , H8 , exticr3) ,
686
- PD11 : ( pd11, 11 , Input < Floating > , H8 , exticr3) ,
687
- PD12 : ( pd12, 12 , Input < Floating > , H8 , exticr4) ,
688
- PD13 : ( pd13, 13 , Input < Floating > , H8 , exticr4) ,
689
- PD14 : ( pd14, 14 , Input < Floating > , H8 , exticr4) ,
690
- PD15 : ( pd15, 15 , Input < Floating > , H8 , exticr4) ,
667
+ PD0 : ( pd0, 0 , Analog , L8 , exticr1) ,
668
+ PD1 : ( pd1, 1 , Analog , L8 , exticr1) ,
669
+ PD2 : ( pd2, 2 , Analog , L8 , exticr1) ,
670
+ PD3 : ( pd3, 3 , Analog , L8 , exticr1) ,
671
+ PD4 : ( pd4, 4 , Analog , L8 , exticr2) ,
672
+ PD5 : ( pd5, 5 , Analog , L8 , exticr2) ,
673
+ PD6 : ( pd6, 6 , Analog , L8 , exticr2) ,
674
+ PD7 : ( pd7, 7 , Analog , L8 , exticr2) ,
675
+ PD8 : ( pd8, 8 , Analog , H8 , exticr3) ,
676
+ PD9 : ( pd9, 9 , Analog , H8 , exticr3) ,
677
+ PD10 : ( pd10, 10 , Analog , H8 , exticr3) ,
678
+ PD11 : ( pd11, 11 , Analog , H8 , exticr3) ,
679
+ PD12 : ( pd12, 12 , Analog , H8 , exticr4) ,
680
+ PD13 : ( pd13, 13 , Analog , H8 , exticr4) ,
681
+ PD14 : ( pd14, 14 , Analog , H8 , exticr4) ,
682
+ PD15 : ( pd15, 15 , Analog , H8 , exticr4) ,
691
683
] ) ;
692
684
693
685
gpio ! ( GPIOE , gpioe, PEx , 'E' , 4 , [
694
- PE0 : ( pe0, 0 , Input < Floating > , L8 , exticr1) ,
695
- PE1 : ( pe1, 1 , Input < Floating > , L8 , exticr1) ,
696
- PE2 : ( pe2, 2 , Input < Floating > , L8 , exticr1) ,
697
- PE3 : ( pe3, 3 , Input < Floating > , L8 , exticr1) ,
698
- PE4 : ( pe4, 4 , Input < Floating > , L8 , exticr2) ,
699
- PE5 : ( pe5, 5 , Input < Floating > , L8 , exticr2) ,
700
- PE6 : ( pe6, 6 , Input < Floating > , L8 , exticr2) ,
701
- PE7 : ( pe7, 7 , Input < Floating > , L8 , exticr2) ,
702
- PE8 : ( pe8, 8 , Input < Floating > , H8 , exticr3) ,
703
- PE9 : ( pe9, 9 , Input < Floating > , H8 , exticr3) ,
704
- PE10 : ( pe10, 10 , Input < Floating > , H8 , exticr3) ,
705
- PE11 : ( pe11, 11 , Input < Floating > , H8 , exticr3) ,
706
- PE12 : ( pe12, 12 , Input < Floating > , H8 , exticr4) ,
707
- PE13 : ( pe13, 13 , Input < Floating > , H8 , exticr4) ,
708
- PE14 : ( pe14, 14 , Input < Floating > , H8 , exticr4) ,
709
- PE15 : ( pe15, 15 , Input < Floating > , H8 , exticr4) ,
686
+ PE0 : ( pe0, 0 , Analog , L8 , exticr1) ,
687
+ PE1 : ( pe1, 1 , Analog , L8 , exticr1) ,
688
+ PE2 : ( pe2, 2 , Analog , L8 , exticr1) ,
689
+ PE3 : ( pe3, 3 , Analog , L8 , exticr1) ,
690
+ PE4 : ( pe4, 4 , Analog , L8 , exticr2) ,
691
+ PE5 : ( pe5, 5 , Analog , L8 , exticr2) ,
692
+ PE6 : ( pe6, 6 , Analog , L8 , exticr2) ,
693
+ PE7 : ( pe7, 7 , Analog , L8 , exticr2) ,
694
+ PE8 : ( pe8, 8 , Analog , H8 , exticr3) ,
695
+ PE9 : ( pe9, 9 , Analog , H8 , exticr3) ,
696
+ PE10 : ( pe10, 10 , Analog , H8 , exticr3) ,
697
+ PE11 : ( pe11, 11 , Analog , H8 , exticr3) ,
698
+ PE12 : ( pe12, 12 , Analog , H8 , exticr4) ,
699
+ PE13 : ( pe13, 13 , Analog , H8 , exticr4) ,
700
+ PE14 : ( pe14, 14 , Analog , H8 , exticr4) ,
701
+ PE15 : ( pe15, 15 , Analog , H8 , exticr4) ,
710
702
] ) ;
711
703
712
704
#[ cfg( any(
@@ -727,22 +719,22 @@ gpio!(GPIOE, gpioe, PEx, 'E', 4, [
727
719
feature = "stm32l4s9" ,
728
720
) ) ]
729
721
gpio ! ( GPIOF , gpiof, PFx , 'F' , 5 , [
730
- PF0 : ( pf0, 0 , Input < Floating > , L8 , exticr1) ,
731
- PF1 : ( pf1, 1 , Input < Floating > , L8 , exticr1) ,
732
- PF2 : ( pf2, 2 , Input < Floating > , L8 , exticr1) ,
733
- PF3 : ( pf3, 3 , Input < Floating > , L8 , exticr1) ,
734
- PF4 : ( pf4, 4 , Input < Floating > , L8 , exticr2) ,
735
- PF5 : ( pf5, 5 , Input < Floating > , L8 , exticr2) ,
736
- PF6 : ( pf6, 6 , Input < Floating > , L8 , exticr2) ,
737
- PF7 : ( pf7, 7 , Input < Floating > , L8 , exticr2) ,
738
- PF8 : ( pf8, 8 , Input < Floating > , H8 , exticr3) ,
739
- PF9 : ( pf9, 9 , Input < Floating > , H8 , exticr3) ,
740
- PF10 : ( pf10, 10 , Input < Floating > , H8 , exticr3) ,
741
- PF11 : ( pf11, 11 , Input < Floating > , H8 , exticr3) ,
742
- PF12 : ( pf12, 12 , Input < Floating > , H8 , exticr4) ,
743
- PF13 : ( pf13, 13 , Input < Floating > , H8 , exticr4) ,
744
- PF14 : ( pf14, 14 , Input < Floating > , H8 , exticr4) ,
745
- PF15 : ( pf15, 15 , Input < Floating > , H8 , exticr4) ,
722
+ PF0 : ( pf0, 0 , Analog , L8 , exticr1) ,
723
+ PF1 : ( pf1, 1 , Analog , L8 , exticr1) ,
724
+ PF2 : ( pf2, 2 , Analog , L8 , exticr1) ,
725
+ PF3 : ( pf3, 3 , Analog , L8 , exticr1) ,
726
+ PF4 : ( pf4, 4 , Analog , L8 , exticr2) ,
727
+ PF5 : ( pf5, 5 , Analog , L8 , exticr2) ,
728
+ PF6 : ( pf6, 6 , Analog , L8 , exticr2) ,
729
+ PF7 : ( pf7, 7 , Analog , L8 , exticr2) ,
730
+ PF8 : ( pf8, 8 , Analog , H8 , exticr3) ,
731
+ PF9 : ( pf9, 9 , Analog , H8 , exticr3) ,
732
+ PF10 : ( pf10, 10 , Analog , H8 , exticr3) ,
733
+ PF11 : ( pf11, 11 , Analog , H8 , exticr3) ,
734
+ PF12 : ( pf12, 12 , Analog , H8 , exticr4) ,
735
+ PF13 : ( pf13, 13 , Analog , H8 , exticr4) ,
736
+ PF14 : ( pf14, 14 , Analog , H8 , exticr4) ,
737
+ PF15 : ( pf15, 15 , Analog , H8 , exticr4) ,
746
738
] ) ;
747
739
#[ cfg( any(
748
740
// feature = "stm32l471", // missing PAC support for Port G
@@ -762,22 +754,22 @@ gpio!(GPIOF, gpiof, PFx, 'F', 5, [
762
754
feature = "stm32l4s9" ,
763
755
) ) ]
764
756
gpio ! ( GPIOG , gpiog, PGx , 'G' , 6 , [
765
- PG0 : ( pg0, 0 , Input < Floating > , L8 , exticr1) ,
766
- PG1 : ( pg1, 1 , Input < Floating > , L8 , exticr1) ,
767
- PG2 : ( pg2, 2 , Input < Floating > , L8 , exticr1) ,
768
- PG3 : ( pg3, 3 , Input < Floating > , L8 , exticr1) ,
769
- PG4 : ( pg4, 4 , Input < Floating > , L8 , exticr2) ,
770
- PG5 : ( pg5, 5 , Input < Floating > , L8 , exticr2) ,
771
- PG6 : ( pg6, 6 , Input < Floating > , L8 , exticr2) ,
772
- PG7 : ( pg7, 7 , Input < Floating > , L8 , exticr2) ,
773
- PG8 : ( pg8, 8 , Input < Floating > , H8 , exticr3) ,
774
- PG9 : ( pg9, 9 , Input < Floating > , H8 , exticr3) ,
775
- PG10 : ( pg10, 10 , Input < Floating > , H8 , exticr3) ,
776
- PG11 : ( pg11, 11 , Input < Floating > , H8 , exticr3) ,
777
- PG12 : ( pg12, 12 , Input < Floating > , H8 , exticr4) ,
778
- PG13 : ( pg13, 13 , Input < Floating > , H8 , exticr4) ,
779
- PG14 : ( pg14, 14 , Input < Floating > , H8 , exticr4) ,
780
- PG15 : ( pg15, 15 , Input < Floating > , H8 , exticr4) ,
757
+ PG0 : ( pg0, 0 , Analog , L8 , exticr1) ,
758
+ PG1 : ( pg1, 1 , Analog , L8 , exticr1) ,
759
+ PG2 : ( pg2, 2 , Analog , L8 , exticr1) ,
760
+ PG3 : ( pg3, 3 , Analog , L8 , exticr1) ,
761
+ PG4 : ( pg4, 4 , Analog , L8 , exticr2) ,
762
+ PG5 : ( pg5, 5 , Analog , L8 , exticr2) ,
763
+ PG6 : ( pg6, 6 , Analog , L8 , exticr2) ,
764
+ PG7 : ( pg7, 7 , Analog , L8 , exticr2) ,
765
+ PG8 : ( pg8, 8 , Analog , H8 , exticr3) ,
766
+ PG9 : ( pg9, 9 , Analog , H8 , exticr3) ,
767
+ PG10 : ( pg10, 10 , Analog , H8 , exticr3) ,
768
+ PG11 : ( pg11, 11 , Analog , H8 , exticr3) ,
769
+ PG12 : ( pg12, 12 , Analog , H8 , exticr4) ,
770
+ PG13 : ( pg13, 13 , Analog , H8 , exticr4) ,
771
+ PG14 : ( pg14, 14 , Analog , H8 , exticr4) ,
772
+ PG15 : ( pg15, 15 , Analog , H8 , exticr4) ,
781
773
] ) ;
782
774
783
775
struct Gpio < const P : char > ;
0 commit comments