@@ -6,7 +6,7 @@ use crate::dmamux::DmaMuxIndex;
6
6
use crate :: gpio:: AltFunction ;
7
7
use crate :: gpio:: { gpioa:: * , gpiob:: * , gpioc:: * , gpiod:: * } ;
8
8
use crate :: prelude:: * ;
9
- use crate :: rcc:: Rcc ;
9
+ use crate :: rcc:: * ;
10
10
use crate :: stm32:: * ;
11
11
12
12
use cortex_m:: interrupt;
@@ -332,6 +332,16 @@ macro_rules! uart_basic {
332
332
( $USARTX: ident,
333
333
$usartX: ident, $apbXenr: ident, $usartXen: ident, $clk_mul: expr
334
334
) => {
335
+ impl Enable for $USARTX {
336
+ fn enable( rcc: & mut Rcc ) {
337
+ rcc. rb. $apbXenr. modify( |_, w| w. $usartXen( ) . set_bit( ) ) ;
338
+ }
339
+
340
+ fn disable( rcc: & mut Rcc ) {
341
+ rcc. rb. $apbXenr. modify( |_, w| w. $usartXen( ) . clear_bit( ) ) ;
342
+ }
343
+ }
344
+
335
345
impl SerialExt <$USARTX, BasicConfig > for $USARTX {
336
346
fn usart<TX , RX >(
337
347
self ,
@@ -361,7 +371,8 @@ macro_rules! uart_basic {
361
371
RX : RxPin <$USARTX>,
362
372
{
363
373
// Enable clock for USART
364
- rcc. rb. $apbXenr. modify( |_, w| w. $usartXen( ) . set_bit( ) ) ;
374
+ $USARTX:: enable( rcc) ;
375
+
365
376
let clk = rcc. clocks. apb_clk. 0 as u64 ;
366
377
let bdr = config. baudrate. 0 as u64 ;
367
378
let div = ( $clk_mul * clk) / bdr;
@@ -462,6 +473,16 @@ macro_rules! uart_full {
462
473
( $USARTX: ident,
463
474
$usartX: ident, $apbXenr: ident, $usartXen: ident, $clk_mul: expr
464
475
) => {
476
+ impl Enable for $USARTX {
477
+ fn enable( rcc: & mut Rcc ) {
478
+ rcc. rb. $apbXenr. modify( |_, w| w. $usartXen( ) . set_bit( ) ) ;
479
+ }
480
+
481
+ fn disable( rcc: & mut Rcc ) {
482
+ rcc. rb. $apbXenr. modify( |_, w| w. $usartXen( ) . clear_bit( ) ) ;
483
+ }
484
+ }
485
+
465
486
impl SerialExt <$USARTX, FullConfig > for $USARTX {
466
487
fn usart<TX , RX >(
467
488
self ,
@@ -491,7 +512,7 @@ macro_rules! uart_full {
491
512
RX : RxPin <$USARTX>,
492
513
{
493
514
// Enable clock for USART
494
- rcc . rb . $apbXenr . modify ( |_ , w| w . $usartXen ( ) . set_bit ( ) ) ;
515
+ $USARTX :: enable ( rcc ) ;
495
516
496
517
let clk = rcc. clocks. apb_clk. 0 as u64 ;
497
518
let bdr = config. baudrate. 0 as u64 ;
0 commit comments