@@ -10,29 +10,28 @@ use panic_halt as _;
10
10
use bxcan:: filter:: Mask32 ;
11
11
use cortex_m_rt:: entry;
12
12
use nb:: block;
13
- use stm32f1xx_hal:: { pac, prelude:: * } ;
13
+ use stm32f1xx_hal:: { pac, prelude:: * , rcc } ;
14
14
15
15
#[ entry]
16
16
fn main ( ) -> ! {
17
17
let dp = pac:: Peripherals :: take ( ) . unwrap ( ) ;
18
18
19
19
let mut flash = dp. FLASH . constrain ( ) ;
20
- let rcc = dp. RCC . constrain ( ) ;
21
20
22
21
// To meet CAN clock accuracy requirements an external crystal or ceramic
23
22
// resonator must be used. The blue pill has a 8MHz external crystal.
24
23
// Other boards might have a crystal with another frequency or none at all.
25
- rcc. cfgr . use_hse ( 8 . MHz ( ) ) . freeze ( & mut flash. acr ) ;
24
+ let mut rcc = dp . RCC . freeze ( rcc :: Config :: hse ( 8 . MHz ( ) ) , & mut flash. acr ) ;
26
25
27
26
let mut can1 = {
28
- let gpioa = dp. GPIOA . split ( ) ;
27
+ let gpioa = dp. GPIOA . split ( & mut rcc ) ;
29
28
let rx = gpioa. pa11 ;
30
29
let tx = gpioa. pa12 ;
31
30
32
31
#[ cfg( not( feature = "connectivity" ) ) ]
33
- let can = dp. CAN . can ( dp. USB , ( tx, rx) ) ;
32
+ let can = dp. CAN . can ( dp. USB , ( tx, rx) , & mut rcc ) ;
34
33
#[ cfg( feature = "connectivity" ) ]
35
- let can = dp. CAN1 . can ( ( tx, rx) ) ;
34
+ let can = dp. CAN1 . can ( ( tx, rx) , & mut rcc ) ;
36
35
37
36
// APB1 (PCLK1): 8MHz, Bit rate: 125kBit/s, Sample Point 87.5%
38
37
// Value was calculated with http://www.bittiming.can-wiki.info/
@@ -47,8 +46,8 @@ fn main() -> ! {
47
46
48
47
#[ cfg( feature = "connectivity" ) ]
49
48
let _can2 = {
50
- let gpiob = dp. GPIOB . split ( ) ;
51
- let can = dp. CAN2 . can ( ( gpiob. pb6 , gpiob. pb5 ) ) ;
49
+ let gpiob = dp. GPIOB . split ( & mut rcc ) ;
50
+ let can = dp. CAN2 . can ( ( gpiob. pb6 , gpiob. pb5 ) , & mut rcc ) ;
52
51
53
52
// APB1 (PCLK1): 8MHz, Bit rate: 125kBit/s, Sample Point 87.5%
54
53
// Value was calculated with http://www.bittiming.can-wiki.info/
0 commit comments