8
8
#![ no_main]
9
9
10
10
use panic_semihosting as _;
11
- use stm32f4xx_hal as hal;
11
+ use stm32f4xx_hal:: { self as hal, rcc :: Config } ;
12
12
13
13
use crate :: hal:: {
14
14
gpio:: { Edge , Input , PA0 } ,
15
15
interrupt, pac,
16
16
prelude:: * ,
17
- rcc:: { Clocks , Rcc } ,
17
+ rcc:: Rcc ,
18
18
spi:: { Mode , Phase , Polarity , Spi } ,
19
19
timer:: { CounterUs , Event , FTimer , Flag , Timer } ,
20
20
} ;
@@ -84,14 +84,12 @@ fn main() -> ! {
84
84
let cp = cortex_m:: peripheral:: Peripherals :: take ( ) . unwrap ( ) ;
85
85
dp. RCC . apb2enr ( ) . write ( |w| w. syscfgen ( ) . enabled ( ) ) ;
86
86
87
- let rcc = dp. RCC . constrain ( ) ;
87
+ let mut rcc = setup_clocks ( dp. RCC ) ;
88
88
89
- let clocks = setup_clocks ( rcc) ;
89
+ let mut syscfg = dp . SYSCFG . constrain ( & mut rcc) ;
90
90
91
- let mut syscfg = dp. SYSCFG . constrain ( ) ;
92
-
93
- let gpioa = dp. GPIOA . split ( ) ;
94
- let gpioe = dp. GPIOE . split ( ) ;
91
+ let gpioa = dp. GPIOA . split ( & mut rcc) ;
92
+ let gpioe = dp. GPIOE . split ( & mut rcc) ;
95
93
96
94
let mut board_btn = gpioa. pa0 . into_pull_down_input ( ) ;
97
95
board_btn. make_interrupt_source ( & mut syscfg) ;
@@ -117,17 +115,17 @@ fn main() -> ! {
117
115
phase : Phase :: CaptureOnFirstTransition ,
118
116
} ,
119
117
2000 . kHz ( ) ,
120
- & clocks ,
118
+ & mut rcc ,
121
119
) ;
122
120
123
121
// Set up the LEDs. On the stm32f429i-disco they are connected to pin PG13 and PG14.
124
- let gpiog = dp. GPIOG . split ( ) ;
122
+ let gpiog = dp. GPIOG . split ( & mut rcc ) ;
125
123
let mut led3 = gpiog. pg13 . into_push_pull_output ( ) ;
126
124
let mut led4 = gpiog. pg14 . into_push_pull_output ( ) ;
127
125
128
126
let dc = gpioe. pe3 . into_push_pull_output ( ) ;
129
127
let mut ss = gpioe. pe4 . into_push_pull_output ( ) ;
130
- let mut delay = Timer :: syst ( cp. SYST , & clocks) . delay ( ) ;
128
+ let mut delay = Timer :: syst ( cp. SYST , & rcc . clocks ) . delay ( ) ;
131
129
132
130
ss. set_high ( ) ;
133
131
delay. delay_ms ( 100 ) ;
@@ -142,7 +140,7 @@ fn main() -> ! {
142
140
disp. flush ( ) . unwrap ( ) ;
143
141
144
142
// Create a 1ms periodic interrupt from TIM2
145
- let mut timer = FTimer :: new ( dp. TIM2 , & clocks ) . counter ( ) ;
143
+ let mut timer = FTimer :: new ( dp. TIM2 , & mut rcc ) . counter ( ) ;
146
144
timer. start ( 1 . secs ( ) ) . unwrap ( ) ;
147
145
timer. listen ( Event :: Update ) ;
148
146
@@ -223,13 +221,14 @@ fn main() -> ! {
223
221
}
224
222
}
225
223
226
- fn setup_clocks ( rcc : Rcc ) -> Clocks {
227
- rcc. cfgr
228
- . hclk ( 180 . MHz ( ) )
229
- . sysclk ( 180 . MHz ( ) )
230
- . pclk1 ( 45 . MHz ( ) )
231
- . pclk2 ( 90 . MHz ( ) )
232
- . freeze ( )
224
+ fn setup_clocks ( rcc : pac:: RCC ) -> Rcc {
225
+ rcc. freeze (
226
+ Config :: hsi ( )
227
+ . hclk ( 180 . MHz ( ) )
228
+ . sysclk ( 180 . MHz ( ) )
229
+ . pclk1 ( 45 . MHz ( ) )
230
+ . pclk2 ( 90 . MHz ( ) ) ,
231
+ )
233
232
}
234
233
235
234
#[ interrupt]
0 commit comments