@@ -598,161 +598,93 @@ mod common_pins {
598
598
PinD8 , PinD9 , PinReadEnable , PinWriteEnable ,
599
599
} ;
600
600
use crate :: gpio:: {
601
- Alternate , PushPull , PD0 , PD1 , PD10 , PD11 , PD12 , PD13 , PD14 , PD15 , PD4 , PD5 , PD7 , PD8 , PD9 ,
602
- PE10 , PE11 , PE12 , PE13 , PE14 , PE15 , PE2 , PE3 , PE4 , PE5 , PE6 , PE7 , PE8 , PE9 , PF0 , PF1 , PF12 ,
603
- PF13 , PF14 , PF15 , PF2 , PF3 , PF4 , PF5 , PG0 , PG1 , PG10 , PG12 , PG13 , PG2 , PG3 , PG4 , PG5 , PG9 ,
601
+ Pin , AF12 , PD0 , PD1 , PD10 , PD11 , PD12 , PD13 , PD14 , PD15 , PD4 , PD5 , PD7 , PD8 , PD9 , PE10 ,
602
+ PE11 , PE12 , PE13 , PE14 , PE15 , PE2 , PE3 , PE4 , PE5 , PE6 , PE7 , PE8 , PE9 , PF0 , PF1 , PF12 , PF13 ,
603
+ PF14 , PF15 , PF2 , PF3 , PF4 , PF5 , PG0 , PG1 , PG10 , PG12 , PG13 , PG2 , PG3 , PG4 , PG5 , PG9 ,
604
604
} ;
605
605
606
+ impl < const P : char , const N : u8 , MODE > Sealed for Pin < P , N , MODE > { }
607
+
606
608
// All FSMC/FMC pins use AF12
607
- type FmcAlternate = Alternate < 12 , PushPull > ;
608
609
609
- impl PinD2 for PD0 < FmcAlternate > { }
610
- impl PinD3 for PD1 < FmcAlternate > { }
611
- impl PinReadEnable for PD4 < FmcAlternate > { }
612
- impl PinWriteEnable for PD5 < FmcAlternate > { }
613
- impl PinChipSelect1 for PD7 < FmcAlternate > { }
614
- impl Sealed for PD7 < FmcAlternate > { }
615
- impl PinD13 for PD8 < FmcAlternate > { }
616
- impl PinD14 for PD9 < FmcAlternate > { }
617
- impl PinD15 for PD10 < FmcAlternate > { }
618
- impl PinAddress for PD11 < FmcAlternate > { }
619
- impl Sealed for PD11 < FmcAlternate > { }
620
- impl PinAddress for PD12 < FmcAlternate > { }
621
- impl Sealed for PD12 < FmcAlternate > { }
622
- impl PinAddress for PD13 < FmcAlternate > { }
623
- impl Sealed for PD13 < FmcAlternate > { }
624
- impl PinD0 for PD14 < FmcAlternate > { }
625
- impl PinD1 for PD15 < FmcAlternate > { }
626
- impl PinAddress for PE2 < FmcAlternate > { }
627
- impl Sealed for PE2 < FmcAlternate > { }
628
- impl PinAddress for PE3 < FmcAlternate > { }
629
- impl Sealed for PE3 < FmcAlternate > { }
630
- impl PinAddress for PE4 < FmcAlternate > { }
631
- impl Sealed for PE4 < FmcAlternate > { }
632
- impl PinAddress for PE5 < FmcAlternate > { }
633
- impl Sealed for PE5 < FmcAlternate > { }
634
- impl PinAddress for PE6 < FmcAlternate > { }
635
- impl Sealed for PE6 < FmcAlternate > { }
636
- impl PinD4 for PE7 < FmcAlternate > { }
637
- impl PinD5 for PE8 < FmcAlternate > { }
638
- impl PinD6 for PE9 < FmcAlternate > { }
639
- impl PinD7 for PE10 < FmcAlternate > { }
640
- impl PinD8 for PE11 < FmcAlternate > { }
641
- impl PinD9 for PE12 < FmcAlternate > { }
642
- impl PinD10 for PE13 < FmcAlternate > { }
643
- impl PinD11 for PE14 < FmcAlternate > { }
644
- impl PinD12 for PE15 < FmcAlternate > { }
610
+ impl PinD2 for PD0 < AF12 > { }
611
+ impl PinD3 for PD1 < AF12 > { }
612
+ impl PinReadEnable for PD4 < AF12 > { }
613
+ impl PinWriteEnable for PD5 < AF12 > { }
614
+ impl PinChipSelect1 for PD7 < AF12 > { }
615
+ impl PinD13 for PD8 < AF12 > { }
616
+ impl PinD14 for PD9 < AF12 > { }
617
+ impl PinD15 for PD10 < AF12 > { }
618
+ impl PinAddress for PD11 < AF12 > { }
619
+ impl PinAddress for PD12 < AF12 > { }
620
+ impl PinAddress for PD13 < AF12 > { }
621
+ impl PinD0 for PD14 < AF12 > { }
622
+ impl PinD1 for PD15 < AF12 > { }
623
+ impl PinAddress for PE2 < AF12 > { }
624
+ impl PinAddress for PE3 < AF12 > { }
625
+ impl PinAddress for PE4 < AF12 > { }
626
+ impl PinAddress for PE5 < AF12 > { }
627
+ impl PinAddress for PE6 < AF12 > { }
628
+ impl PinD4 for PE7 < AF12 > { }
629
+ impl PinD5 for PE8 < AF12 > { }
630
+ impl PinD6 for PE9 < AF12 > { }
631
+ impl PinD7 for PE10 < AF12 > { }
632
+ impl PinD8 for PE11 < AF12 > { }
633
+ impl PinD9 for PE12 < AF12 > { }
634
+ impl PinD10 for PE13 < AF12 > { }
635
+ impl PinD11 for PE14 < AF12 > { }
636
+ impl PinD12 for PE15 < AF12 > { }
645
637
646
- impl PinAddress for PF0 < FmcAlternate > { }
647
- impl Sealed for PF0 < FmcAlternate > { }
648
- impl PinAddress for PF1 < FmcAlternate > { }
649
- impl Sealed for PF1 < FmcAlternate > { }
650
- impl PinAddress for PF2 < FmcAlternate > { }
651
- impl Sealed for PF2 < FmcAlternate > { }
652
- impl PinAddress for PF3 < FmcAlternate > { }
653
- impl Sealed for PF3 < FmcAlternate > { }
654
- impl PinAddress for PF4 < FmcAlternate > { }
655
- impl Sealed for PF4 < FmcAlternate > { }
656
- impl PinAddress for PF5 < FmcAlternate > { }
657
- impl Sealed for PF5 < FmcAlternate > { }
658
- impl PinAddress for PF12 < FmcAlternate > { }
659
- impl Sealed for PF12 < FmcAlternate > { }
660
- impl PinAddress for PF13 < FmcAlternate > { }
661
- impl Sealed for PF13 < FmcAlternate > { }
662
- impl PinAddress for PF14 < FmcAlternate > { }
663
- impl Sealed for PF14 < FmcAlternate > { }
664
- impl PinAddress for PF15 < FmcAlternate > { }
665
- impl Sealed for PF15 < FmcAlternate > { }
666
- impl PinAddress for PG0 < FmcAlternate > { }
667
- impl Sealed for PG0 < FmcAlternate > { }
668
- impl PinAddress for PG1 < FmcAlternate > { }
669
- impl Sealed for PG1 < FmcAlternate > { }
670
- impl PinAddress for PG2 < FmcAlternate > { }
671
- impl Sealed for PG2 < FmcAlternate > { }
672
- impl PinAddress for PG3 < FmcAlternate > { }
673
- impl Sealed for PG3 < FmcAlternate > { }
674
- impl PinAddress for PG4 < FmcAlternate > { }
675
- impl Sealed for PG4 < FmcAlternate > { }
676
- impl PinAddress for PG5 < FmcAlternate > { }
677
- impl Sealed for PG5 < FmcAlternate > { }
678
- impl PinChipSelect2 for PG9 < FmcAlternate > { }
679
- impl Sealed for PG9 < FmcAlternate > { }
680
- impl PinChipSelect3 for PG10 < FmcAlternate > { }
681
- impl Sealed for PG10 < FmcAlternate > { }
682
- impl PinChipSelect4 for PG12 < FmcAlternate > { }
683
- impl Sealed for PG12 < FmcAlternate > { }
684
- impl PinAddress for PG13 < FmcAlternate > { }
685
- impl Sealed for PG13 < FmcAlternate > { }
638
+ impl PinAddress for PF0 < AF12 > { }
639
+ impl PinAddress for PF1 < AF12 > { }
640
+ impl PinAddress for PF2 < AF12 > { }
641
+ impl PinAddress for PF3 < AF12 > { }
642
+ impl PinAddress for PF4 < AF12 > { }
643
+ impl PinAddress for PF5 < AF12 > { }
644
+ impl PinAddress for PF12 < AF12 > { }
645
+ impl PinAddress for PF13 < AF12 > { }
646
+ impl PinAddress for PF14 < AF12 > { }
647
+ impl PinAddress for PF15 < AF12 > { }
648
+ impl PinAddress for PG0 < AF12 > { }
649
+ impl PinAddress for PG1 < AF12 > { }
650
+ impl PinAddress for PG2 < AF12 > { }
651
+ impl PinAddress for PG3 < AF12 > { }
652
+ impl PinAddress for PG4 < AF12 > { }
653
+ impl PinAddress for PG5 < AF12 > { }
654
+ impl PinChipSelect2 for PG9 < AF12 > { }
655
+ impl PinChipSelect3 for PG10 < AF12 > { }
656
+ impl PinChipSelect4 for PG12 < AF12 > { }
657
+ impl PinAddress for PG13 < AF12 > { }
686
658
// PG14<Alternate<12> can be used as address 25 (A25), but that pin is not available here.
687
659
// Because external addresses are in units of 16 bits, external address line 25 can never
688
660
// be high. The internal memory address would overflow into the next sub-bank.
689
-
690
- // Sealed trait boilerplate
691
- impl Sealed for PD0 < FmcAlternate > { }
692
- impl Sealed for PD1 < FmcAlternate > { }
693
- impl Sealed for PD4 < FmcAlternate > { }
694
- impl Sealed for PD5 < FmcAlternate > { }
695
- impl Sealed for PD8 < FmcAlternate > { }
696
- impl Sealed for PD9 < FmcAlternate > { }
697
- impl Sealed for PD10 < FmcAlternate > { }
698
- impl Sealed for PD14 < FmcAlternate > { }
699
- impl Sealed for PD15 < FmcAlternate > { }
700
-
701
- impl Sealed for PE7 < FmcAlternate > { }
702
- impl Sealed for PE8 < FmcAlternate > { }
703
- impl Sealed for PE9 < FmcAlternate > { }
704
- impl Sealed for PE10 < FmcAlternate > { }
705
- impl Sealed for PE11 < FmcAlternate > { }
706
- impl Sealed for PE12 < FmcAlternate > { }
707
- impl Sealed for PE13 < FmcAlternate > { }
708
- impl Sealed for PE14 < FmcAlternate > { }
709
- impl Sealed for PE15 < FmcAlternate > { }
710
661
}
711
662
712
663
/// Additional pins available on some models
713
664
#[ cfg( any( feature = "stm32f412" , feature = "stm32f413" , feature = "stm32f423" ) ) ]
714
665
mod extra_pins {
715
- use super :: sealed:: Sealed ;
716
666
use super :: {
717
667
PinAddress , PinChipSelect4 , PinD0 , PinD1 , PinD13 , PinD2 , PinD3 , PinD4 , PinD5 , PinD6 , PinD7 ,
718
668
PinReadEnable , PinWriteEnable ,
719
669
} ;
720
670
use crate :: gpio:: {
721
- Alternate , PushPull , PA2 , PA3 , PA4 , PA5 , PB12 , PB14 , PC11 , PC12 , PC2 , PC3 , PC4 , PC5 , PC6 ,
722
- PD2 ,
671
+ AF10 , AF12 , PA2 , PA3 , PA4 , PA5 , PB12 , PB14 , PC11 , PC12 , PC2 , PC3 , PC4 , PC5 , PC6 , PD2 ,
723
672
} ;
724
673
725
674
// Most FSMC/FMC pins use AF12, but a few use AF10
726
- type FmcAlternate = Alternate < 12 , PushPull > ;
727
-
728
- impl PinD4 for PA2 < FmcAlternate > { }
729
- impl PinD5 for PA3 < FmcAlternate > { }
730
- impl PinD6 for PA4 < FmcAlternate > { }
731
- impl PinD7 for PA5 < FmcAlternate > { }
732
- impl PinD13 for PB12 < FmcAlternate > { }
733
- impl PinD0 for PB14 < Alternate < 10 , PushPull > > { }
734
- impl PinWriteEnable for PC2 < FmcAlternate > { }
735
- impl PinAddress for PC3 < FmcAlternate > { }
736
- impl Sealed for PC3 < FmcAlternate > { }
737
- impl PinChipSelect4 for PC4 < FmcAlternate > { }
738
- impl Sealed for PC4 < FmcAlternate > { }
739
- impl PinReadEnable for PC5 < FmcAlternate > { }
740
- impl PinD1 for PC6 < Alternate < 10 , PushPull > > { }
741
- impl PinD2 for PC11 < Alternate < 10 , PushPull > > { }
742
- impl PinD3 for PC12 < Alternate < 10 , PushPull > > { }
743
- impl PinWriteEnable for PD2 < Alternate < 10 , PushPull > > { }
744
675
745
- // Sealed trait boilerplate
746
- impl Sealed for PA2 < FmcAlternate > { }
747
- impl Sealed for PA3 < FmcAlternate > { }
748
- impl Sealed for PA4 < FmcAlternate > { }
749
- impl Sealed for PA5 < FmcAlternate > { }
750
- impl Sealed for PB12 < FmcAlternate > { }
751
- impl Sealed for PB14 < Alternate < 10 , PushPull > > { }
752
- impl Sealed for PC2 < FmcAlternate > { }
753
- impl Sealed for PC5 < FmcAlternate > { }
754
- impl Sealed for PC6 < Alternate < 10 , PushPull > > { }
755
- impl Sealed for PC11 < Alternate < 10 , PushPull > > { }
756
- impl Sealed for PC12 < Alternate < 10 , PushPull > > { }
757
- impl Sealed for PD2 < Alternate < 10 , PushPull > > { }
676
+ impl PinD4 for PA2 < AF12 > { }
677
+ impl PinD5 for PA3 < AF12 > { }
678
+ impl PinD6 for PA4 < AF12 > { }
679
+ impl PinD7 for PA5 < AF12 > { }
680
+ impl PinD13 for PB12 < AF12 > { }
681
+ impl PinD0 for PB14 < AF10 > { }
682
+ impl PinWriteEnable for PC2 < AF12 > { }
683
+ impl PinAddress for PC3 < AF12 > { }
684
+ impl PinChipSelect4 for PC4 < AF12 > { }
685
+ impl PinReadEnable for PC5 < AF12 > { }
686
+ impl PinD1 for PC6 < AF10 > { }
687
+ impl PinD2 for PC11 < AF10 > { }
688
+ impl PinD3 for PC12 < AF10 > { }
689
+ impl PinWriteEnable for PD2 < AF10 > { }
758
690
}
0 commit comments