@@ -521,36 +521,55 @@ impl ComparatorSplit for COMP {
521
521
522
522
pub trait OutputPin < COMP > {
523
523
fn setup ( & self ) ;
524
+ fn release ( self ) -> Self ;
524
525
}
525
526
526
- macro_rules! output_pin {
527
+ macro_rules! output_pin_push_pull {
527
528
( $COMP: ident, $pin: ty) => {
528
529
impl OutputPin <$COMP> for $pin {
529
530
fn setup( & self ) {
530
531
self . set_alt_mode( AltFunction :: AF7 )
531
532
}
533
+
534
+ fn release( self ) -> Self {
535
+ self . into_push_pull_output( )
536
+ }
537
+ }
538
+ } ;
539
+ }
540
+
541
+ macro_rules! output_pin_open_drain {
542
+ ( $COMP: ident, $pin: ty) => {
543
+ impl OutputPin <$COMP> for $pin {
544
+ fn setup( & self ) {
545
+ self . set_alt_mode( AltFunction :: AF7 )
546
+ }
547
+
548
+ fn release( self ) -> Self {
549
+ self . into_open_drain_output( )
550
+ }
532
551
}
533
552
} ;
534
553
}
535
554
536
- output_pin ! ( COMP1 , gpioa:: PA0 <Output <PushPull >>) ;
537
- output_pin ! ( COMP1 , gpioa:: PA0 <Output <OpenDrain >>) ;
538
- output_pin ! ( COMP1 , gpioa:: PA6 <Output <PushPull >>) ;
539
- output_pin ! ( COMP1 , gpioa:: PA6 <Output <OpenDrain >>) ;
540
- output_pin ! ( COMP1 , gpioa:: PA11 <Output <PushPull >>) ;
541
- output_pin ! ( COMP1 , gpioa:: PA11 <Output <OpenDrain >>) ;
542
- output_pin ! ( COMP1 , gpiob:: PB0 <Output <PushPull >>) ;
543
- output_pin ! ( COMP1 , gpiob:: PB0 <Output <OpenDrain >>) ;
544
- output_pin ! ( COMP1 , gpiob:: PB10 <Output <PushPull >>) ;
545
- output_pin ! ( COMP1 , gpiob:: PB10 <Output <OpenDrain >>) ;
546
-
547
- output_pin ! ( COMP2 , gpioa:: PA2 <Output <PushPull >>) ;
548
- output_pin ! ( COMP2 , gpioa:: PA2 <Output <OpenDrain >>) ;
549
- output_pin ! ( COMP2 , gpioa:: PA7 <Output <PushPull >>) ;
550
- output_pin ! ( COMP2 , gpioa:: PA7 <Output <OpenDrain >>) ;
551
- output_pin ! ( COMP2 , gpioa:: PA12 <Output <PushPull >>) ;
552
- output_pin ! ( COMP2 , gpioa:: PA12 <Output <OpenDrain >>) ;
553
- output_pin ! ( COMP2 , gpiob:: PB5 <Output <PushPull >>) ;
554
- output_pin ! ( COMP2 , gpiob:: PB5 <Output <OpenDrain >>) ;
555
- output_pin ! ( COMP2 , gpiob:: PB11 <Output <PushPull >>) ;
556
- output_pin ! ( COMP2 , gpiob:: PB11 <Output <OpenDrain >>) ;
555
+ output_pin_push_pull ! ( COMP1 , gpioa:: PA0 <Output <PushPull >>) ;
556
+ output_pin_open_drain ! ( COMP1 , gpioa:: PA0 <Output <OpenDrain >>) ;
557
+ output_pin_push_pull ! ( COMP1 , gpioa:: PA6 <Output <PushPull >>) ;
558
+ output_pin_open_drain ! ( COMP1 , gpioa:: PA6 <Output <OpenDrain >>) ;
559
+ output_pin_push_pull ! ( COMP1 , gpioa:: PA11 <Output <PushPull >>) ;
560
+ output_pin_open_drain ! ( COMP1 , gpioa:: PA11 <Output <OpenDrain >>) ;
561
+ output_pin_push_pull ! ( COMP1 , gpiob:: PB0 <Output <PushPull >>) ;
562
+ output_pin_open_drain ! ( COMP1 , gpiob:: PB0 <Output <OpenDrain >>) ;
563
+ output_pin_push_pull ! ( COMP1 , gpiob:: PB10 <Output <PushPull >>) ;
564
+ output_pin_open_drain ! ( COMP1 , gpiob:: PB10 <Output <OpenDrain >>) ;
565
+
566
+ output_pin_push_pull ! ( COMP2 , gpioa:: PA2 <Output <PushPull >>) ;
567
+ output_pin_open_drain ! ( COMP2 , gpioa:: PA2 <Output <OpenDrain >>) ;
568
+ output_pin_push_pull ! ( COMP2 , gpioa:: PA7 <Output <PushPull >>) ;
569
+ output_pin_open_drain ! ( COMP2 , gpioa:: PA7 <Output <OpenDrain >>) ;
570
+ output_pin_push_pull ! ( COMP2 , gpioa:: PA12 <Output <PushPull >>) ;
571
+ output_pin_open_drain ! ( COMP2 , gpioa:: PA12 <Output <OpenDrain >>) ;
572
+ output_pin_push_pull ! ( COMP2 , gpiob:: PB5 <Output <PushPull >>) ;
573
+ output_pin_open_drain ! ( COMP2 , gpiob:: PB5 <Output <OpenDrain >>) ;
574
+ output_pin_push_pull ! ( COMP2 , gpiob:: PB11 <Output <PushPull >>) ;
575
+ output_pin_open_drain ! ( COMP2 , gpiob:: PB11 <Output <OpenDrain >>) ;
0 commit comments