@@ -120,17 +120,24 @@ pub struct DMA;
120
120
121
121
#[ allow( non_upper_case_globals) ]
122
122
pub trait SerialExt < Config > : Sized + Instance {
123
- const NoTx : Option < Self :: Tx < PushPull > > = None ;
124
- const NoRx : Option < Self :: Rx < PushPull > > = None ;
125
123
fn usart < Otype > (
126
124
self ,
127
- pins : (
128
- Option < impl Into < Self :: Tx < Otype > > > ,
129
- Option < impl Into < Self :: Rx < PushPull > > > ,
130
- ) ,
125
+ pins : ( impl Into < Self :: Tx < Otype > > , impl Into < Self :: Rx < PushPull > > ) ,
131
126
config : impl Into < Config > ,
132
127
rcc : & mut Rcc ,
133
128
) -> Result < Serial < Self , Otype > , InvalidConfig > ;
129
+ fn tx < Otype > (
130
+ self ,
131
+ tx : impl Into < Self :: Tx < Otype > > ,
132
+ config : impl Into < Config > ,
133
+ rcc : & mut Rcc ,
134
+ ) -> Result < Serial < Self , Otype > , InvalidConfig > ;
135
+ fn rx (
136
+ self ,
137
+ rx : impl Into < Self :: Rx < PushPull > > ,
138
+ config : impl Into < Config > ,
139
+ rcc : & mut Rcc ,
140
+ ) -> Result < Serial < Self > , InvalidConfig > ;
134
141
}
135
142
136
143
impl < USART : Instance , Otype > fmt:: Write for Serial < USART , Otype >
@@ -501,19 +508,43 @@ macro_rules! uart_lp {
501
508
impl SerialExt <LowPowerConfig > for $USARTX {
502
509
fn usart<Otype >(
503
510
self ,
504
- pins: (
505
- Option <impl Into <Self :: Tx <Otype >>>,
506
- Option <impl Into <Self :: Rx <PushPull >>>,
507
- ) ,
511
+ pins: ( impl Into <Self :: Tx <Otype >>, impl Into <Self :: Rx <PushPull >>) ,
508
512
config: impl Into <LowPowerConfig >,
509
513
rcc: & mut Rcc ,
510
514
) -> Result <Serial <Self , Otype >, InvalidConfig > {
511
515
Serial :: $usartX( self , pins, config, rcc)
512
516
}
517
+ fn tx<Otype >(
518
+ self ,
519
+ tx: impl Into <Self :: Tx <Otype >>,
520
+ config: impl Into <LowPowerConfig >,
521
+ rcc: & mut Rcc ,
522
+ ) -> Result <Serial <Self , Otype >, InvalidConfig > {
523
+ Serial :: <Self , _>:: _new( self , ( Some ( tx) , None :: <Self :: Rx <PushPull >>) , config, rcc)
524
+ }
525
+ fn rx(
526
+ self ,
527
+ rx: impl Into <Self :: Rx <PushPull >>,
528
+ config: impl Into <LowPowerConfig >,
529
+ rcc: & mut Rcc ,
530
+ ) -> Result <Serial <Self >, InvalidConfig > {
531
+ Serial :: <Self , _>:: _new( self , ( None :: <Self :: Tx <PushPull >>, Some ( rx) ) , config, rcc)
532
+ }
513
533
}
514
534
515
535
impl <Otype > Serial <$USARTX, Otype > {
516
536
pub fn $usartX(
537
+ usart: $USARTX,
538
+ pins: (
539
+ impl Into <<$USARTX as CommonPins >:: Tx <Otype >>,
540
+ impl Into <<$USARTX as CommonPins >:: Rx <PushPull >>,
541
+ ) ,
542
+ config: impl Into <LowPowerConfig >,
543
+ rcc: & mut Rcc ,
544
+ ) -> Result <Self , InvalidConfig > {
545
+ Self :: _new( usart, ( Some ( pins. 0 ) , Some ( pins. 1 ) ) , config, rcc)
546
+ }
547
+ fn _new(
517
548
usart: $USARTX,
518
549
pins: (
519
550
Option <impl Into <<$USARTX as CommonPins >:: Tx <Otype >>>,
@@ -629,19 +660,43 @@ macro_rules! uart_full {
629
660
impl SerialExt <FullConfig > for $USARTX {
630
661
fn usart<Otype >(
631
662
self ,
632
- pins: (
633
- Option <impl Into <Self :: Tx <Otype >>>,
634
- Option <impl Into <Self :: Rx <PushPull >>>,
635
- ) ,
663
+ pins: ( impl Into <Self :: Tx <Otype >>, impl Into <Self :: Rx <PushPull >>) ,
636
664
config: impl Into <FullConfig >,
637
665
rcc: & mut Rcc ,
638
666
) -> Result <Serial <Self , Otype >, InvalidConfig > {
639
667
Serial :: $usartX( self , pins, config, rcc)
640
668
}
669
+ fn tx<Otype >(
670
+ self ,
671
+ tx: impl Into <Self :: Tx <Otype >>,
672
+ config: impl Into <FullConfig >,
673
+ rcc: & mut Rcc ,
674
+ ) -> Result <Serial <Self , Otype >, InvalidConfig > {
675
+ Serial :: <Self , _>:: _new( self , ( Some ( tx) , None :: <Self :: Rx <PushPull >>) , config, rcc)
676
+ }
677
+ fn rx(
678
+ self ,
679
+ rx: impl Into <Self :: Rx <PushPull >>,
680
+ config: impl Into <FullConfig >,
681
+ rcc: & mut Rcc ,
682
+ ) -> Result <Serial <Self >, InvalidConfig > {
683
+ Serial :: <Self , _>:: _new( self , ( None :: <Self :: Tx <PushPull >>, Some ( rx) ) , config, rcc)
684
+ }
641
685
}
642
686
643
687
impl <Otype > Serial <$USARTX, Otype > {
644
688
pub fn $usartX(
689
+ usart: $USARTX,
690
+ pins: (
691
+ impl Into <<$USARTX as CommonPins >:: Tx <Otype >>,
692
+ impl Into <<$USARTX as CommonPins >:: Rx <PushPull >>,
693
+ ) ,
694
+ config: impl Into <FullConfig >,
695
+ rcc: & mut Rcc ,
696
+ ) -> Result <Self , InvalidConfig > {
697
+ Self :: _new( usart, ( Some ( pins. 0 ) , Some ( pins. 1 ) ) , config, rcc)
698
+ }
699
+ fn _new(
645
700
usart: $USARTX,
646
701
pins: (
647
702
Option <impl Into <<$USARTX as CommonPins >:: Tx <Otype >>>,
0 commit comments