@@ -650,7 +650,7 @@ macro_rules! serialdma {
650650
651651 impl Rx <$USARTX> {
652652 pub fn with_dma( self , channel: $dmarxch) -> $rxdma {
653- unsafe { ( * $USARTX:: ptr( ) ) . cr3. write ( | w| w. dmar( ) . set_bit( ) ) ; }
653+ unsafe { ( * $USARTX:: ptr( ) ) . cr3. modify ( |_ , w| w. dmar( ) . set_bit( ) ) ; }
654654 RxDma {
655655 payload: self ,
656656 channel,
@@ -660,7 +660,7 @@ macro_rules! serialdma {
660660
661661 impl Tx <$USARTX> {
662662 pub fn with_dma( self , channel: $dmatxch) -> $txdma {
663- unsafe { ( * $USARTX:: ptr( ) ) . cr3. write ( | w| w. dmat( ) . set_bit( ) ) ; }
663+ unsafe { ( * $USARTX:: ptr( ) ) . cr3. modify ( |_ , w| w. dmat( ) . set_bit( ) ) ; }
664664 TxDma {
665665 payload: self ,
666666 channel,
@@ -675,7 +675,7 @@ macro_rules! serialdma {
675675 }
676676 pub fn release( mut self ) -> ( Rx <$USARTX>, $dmarxch) {
677677 self . stop( ) ;
678- unsafe { ( * $USARTX:: ptr( ) ) . cr3. write ( | w| w. dmar( ) . clear_bit( ) ) ; }
678+ unsafe { ( * $USARTX:: ptr( ) ) . cr3. modify ( |_ , w| w. dmar( ) . clear_bit( ) ) ; }
679679 let RxDma { payload, channel} = self ;
680680 (
681681 payload,
@@ -691,7 +691,7 @@ macro_rules! serialdma {
691691 }
692692 pub fn release( mut self ) -> ( Tx <$USARTX>, $dmatxch) {
693693 self . stop( ) ;
694- unsafe { ( * $USARTX:: ptr( ) ) . cr3. write ( | w| w. dmat( ) . clear_bit( ) ) ; }
694+ unsafe { ( * $USARTX:: ptr( ) ) . cr3. modify ( |_ , w| w. dmat( ) . clear_bit( ) ) ; }
695695 let TxDma { payload, channel} = self ;
696696 (
697697 payload,
0 commit comments