@@ -15,7 +15,7 @@ use crate::{
15
15
gpio:: { gpioa, gpiob, gpioc} ,
16
16
pac:: { ADC1 , ADC1_2 , ADC2 } ,
17
17
} ;
18
- use stm32f3:: stm32f303:: adc1_2:: ccr:: CKMODE_A ;
18
+ use stm32f3:: stm32f303:: { adc1 :: cfgr :: ALIGN_A , adc1_2:: ccr:: CKMODE_A } ;
19
19
const MAX_ADVREGEN_STARTUP_US : u32 = 10 ;
20
20
21
21
#[ cfg( any(
@@ -35,7 +35,7 @@ use crate::{
35
35
pub struct Adc < ADC > {
36
36
pub rb : ADC ,
37
37
clocks : Clocks ,
38
- ckmode : CKMODE ,
38
+ ckmode : CkMode ,
39
39
operation_mode : Option < OperationMode > ,
40
40
}
41
41
@@ -88,30 +88,29 @@ pub enum OperationMode {
88
88
}
89
89
90
90
#[ derive( Clone , Copy , PartialEq ) ]
91
- /// ADC CKMODE
91
+ /// ADC CkMode
92
92
// TODO: Add ASYNCHRONOUS mode
93
- pub enum CKMODE {
93
+ pub enum CkMode {
94
94
// ASYNCHRONOUS = 0,
95
95
SYNCDIV1 = 1 ,
96
96
SYNCDIV2 = 2 ,
97
97
SYNCDIV4 = 4 ,
98
98
}
99
99
100
- impl Default for CKMODE {
100
+ impl Default for CkMode {
101
101
fn default ( ) -> Self {
102
- CKMODE :: SYNCDIV2
102
+ CkMode :: SYNCDIV2
103
103
}
104
104
}
105
105
106
106
// ADC3_2 returns a pointer to a adc1_2 type, so this from is ok for both.
107
- #[ cfg( feature = "stm32f303" ) ]
108
- impl From < CKMODE > for CKMODE_A {
109
- fn from ( ckmode : CKMODE ) -> Self {
107
+ impl From < CkMode > for CKMODE_A {
108
+ fn from ( ckmode : CkMode ) -> Self {
110
109
match ckmode {
111
- //CKMODE ::ASYNCHRONOUS => CKMODE_A::ASYNCHRONOUS,
112
- CKMODE :: SYNCDIV1 => CKMODE_A :: SYNCDIV1 ,
113
- CKMODE :: SYNCDIV2 => CKMODE_A :: SYNCDIV2 ,
114
- CKMODE :: SYNCDIV4 => CKMODE_A :: SYNCDIV4 ,
110
+ //CkMode ::ASYNCHRONOUS => CKMODE_A::ASYNCHRONOUS,
111
+ CkMode :: SYNCDIV1 => CKMODE_A :: SYNCDIV1 ,
112
+ CkMode :: SYNCDIV2 => CKMODE_A :: SYNCDIV2 ,
113
+ CkMode :: SYNCDIV4 => CKMODE_A :: SYNCDIV4 ,
115
114
}
116
115
}
117
116
}
@@ -130,12 +129,11 @@ impl Default for Align {
130
129
}
131
130
}
132
131
133
- impl Align {
134
- /// Conversion to bits for ALIGN in ADCx_CFGR
135
- fn bitvalue ( & self ) -> bool {
136
- match self {
137
- Align :: Right => false ,
138
- Align :: Left => true ,
132
+ impl From < Align > for ALIGN_A {
133
+ fn from ( align : Align ) -> ALIGN_A {
134
+ match align {
135
+ Align :: Right => ALIGN_A :: RIGHT ,
136
+ Align :: Left => ALIGN_A :: LEFT ,
139
137
}
140
138
}
141
139
}
@@ -297,7 +295,7 @@ macro_rules! adc_hal {
297
295
rb: $ADC,
298
296
adc_common : & mut $ADC_COMMON,
299
297
ahb: & mut AHB ,
300
- ckmode: CKMODE ,
298
+ ckmode: CkMode ,
301
299
clocks: Clocks ,
302
300
) -> Self {
303
301
let mut this_adc = Self {
@@ -323,10 +321,10 @@ macro_rules! adc_hal {
323
321
this_adc
324
322
}
325
323
326
- /// Software can use CKMODE ::SYNCDIV1 only if
324
+ /// Software can use CkMode ::SYNCDIV1 only if
327
325
/// hclk and sysclk are the same. (see reference manual 15.3.3)
328
326
fn clocks_welldefined( & self , clocks: Clocks ) -> bool {
329
- if ( self . ckmode == CKMODE :: SYNCDIV1 )
327
+ if ( self . ckmode == CkMode :: SYNCDIV1 )
330
328
{
331
329
clocks. hclk( ) . 0 == clocks. sysclk( ) . 0
332
330
} else {
@@ -355,7 +353,7 @@ macro_rules! adc_hal {
355
353
}
356
354
357
355
fn set_align( & self , align: Align ) {
358
- self . rb. cfgr. modify( |_, w| w. align( ) . bit ( align. bitvalue ( ) ) ) ;
356
+ self . rb. cfgr. modify( |_, w| w. align( ) . variant ( align. into ( ) ) ) ;
359
357
}
360
358
361
359
fn enable( & mut self ) {
@@ -367,7 +365,6 @@ macro_rules! adc_hal {
367
365
self . rb. cr. modify( |_, w| w. aden( ) . clear_bit( ) ) ;
368
366
}
369
367
370
-
371
368
/// Calibrate according to 15.3.8 in the Reference Manual
372
369
fn calibrate( & mut self ) {
373
370
if !self . rb. cr. read( ) . advregen( ) . is_enabled( ) {
@@ -384,7 +381,6 @@ macro_rules! adc_hal {
384
381
while !self . rb. cr. read( ) . adcal( ) . is_complete( ) { }
385
382
}
386
383
387
-
388
384
fn wait_adc_clk_cycles( & self , cycles: u32 ) {
389
385
let adc_clk_cycle = self . clocks. hclk( ) . 0 / ( self . ckmode as u32 ) ;
390
386
asm:: delay( adc_clk_cycle * cycles) ;
0 commit comments