12
12
pub use crate :: time:: U32Ext as _;
13
13
use crate :: {
14
14
delay:: * ,
15
+ dma:: { mux:: DmaMuxResources , traits:: TargetAddress , PeripheralToMemory } ,
15
16
gpio:: * ,
16
17
rcc:: Rcc ,
17
18
signature:: { VtempCal110 , VtempCal30 , VDDA_CALIB } ,
@@ -1191,7 +1192,7 @@ macro_rules! adc {
1191
1192
( additionals: $adc_type: ident => ( $common_type: ident) ) => {
1192
1193
} ;
1193
1194
1194
- ( $( $adc_type: ident => ( $enable_peripheral_fn_name: ident, $configure_clocks_fn_name: ident, ( $common_type: ident) ) ) ,+ $( , ) * ) => {
1195
+ ( $( $adc_type: ident => ( $enable_peripheral_fn_name: ident, $configure_clocks_fn_name: ident, $mux : expr , ( $common_type: ident) ) ) ,+ $( , ) * ) => {
1195
1196
$(
1196
1197
impl AdcConfig for stm32:: $adc_type {
1197
1198
#[ inline( always) ]
@@ -2139,6 +2140,17 @@ macro_rules! adc {
2139
2140
}
2140
2141
}
2141
2142
2143
+ unsafe impl TargetAddress <PeripheralToMemory > for Adc <stm32:: $adc_type, DMA > {
2144
+ #[ inline( always) ]
2145
+ fn address( & self ) -> u32 {
2146
+ self . adc. data_register_address( )
2147
+ }
2148
+
2149
+ type MemSize = u16 ;
2150
+
2151
+ const REQUEST_LINE : Option <u8 > = Some ( $mux as u8 ) ;
2152
+ }
2153
+
2142
2154
impl <PIN > OneShot <stm32:: $adc_type, u16 , PIN > for Adc <stm32:: $adc_type, Disabled >
2143
2155
where
2144
2156
PIN : Channel <stm32:: $adc_type, ID =u8 >,
@@ -2164,7 +2176,7 @@ macro_rules! adc {
2164
2176
feature = "stm32g491" ,
2165
2177
feature = "stm32g4a1" ,
2166
2178
) ) ]
2167
- adc ! ( ADC1 => ( enable_pheripheral12, configure_clock_source12, ( ADC12_COMMON ) ) ) ;
2179
+ adc ! ( ADC1 => ( enable_pheripheral12, configure_clock_source12, DmaMuxResources :: ADC1 , ( ADC12_COMMON ) ) ) ;
2168
2180
2169
2181
#[ cfg( any(
2170
2182
feature = "stm32g431" ,
@@ -2177,7 +2189,7 @@ adc!(ADC1 => (enable_pheripheral12, configure_clock_source12, (ADC12_COMMON) ));
2177
2189
feature = "stm32g491" ,
2178
2190
feature = "stm32g4a1" ,
2179
2191
) ) ]
2180
- adc ! ( ADC2 => ( enable_pheripheral12, configure_clock_source12, ( ADC12_COMMON ) ) ) ;
2192
+ adc ! ( ADC2 => ( enable_pheripheral12, configure_clock_source12, DmaMuxResources :: ADC2 , ( ADC12_COMMON ) ) ) ;
2181
2193
2182
2194
#[ cfg( any(
2183
2195
feature = "stm32g471" ,
@@ -2188,23 +2200,23 @@ adc!(ADC2 => (enable_pheripheral12, configure_clock_source12, (ADC12_COMMON) ));
2188
2200
feature = "stm32g491" ,
2189
2201
feature = "stm32g4a1" ,
2190
2202
) ) ]
2191
- adc ! ( ADC3 => ( enable_pheripheral345, configure_clock_source345, ( ADC345_COMMON ) ) ) ;
2203
+ adc ! ( ADC3 => ( enable_pheripheral345, configure_clock_source345, DmaMuxResources :: ADC3 , ( ADC345_COMMON ) ) ) ;
2192
2204
2193
2205
#[ cfg( any(
2194
2206
feature = "stm32g473" ,
2195
2207
feature = "stm32g474" ,
2196
2208
feature = "stm32g483" ,
2197
2209
feature = "stm32g484" ,
2198
2210
) ) ]
2199
- adc ! ( ADC4 => ( enable_pheripheral345, configure_clock_source345, ( ADC345_COMMON ) ) ) ;
2211
+ adc ! ( ADC4 => ( enable_pheripheral345, configure_clock_source345, DmaMuxResources :: ADC4 , ( ADC345_COMMON ) ) ) ;
2200
2212
2201
2213
#[ cfg( any(
2202
2214
feature = "stm32g473" ,
2203
2215
feature = "stm32g474" ,
2204
2216
feature = "stm32g483" ,
2205
2217
feature = "stm32g484" ,
2206
2218
) ) ]
2207
- adc ! ( ADC5 => ( enable_pheripheral345, configure_clock_source345, ( ADC345_COMMON ) ) ) ;
2219
+ adc ! ( ADC5 => ( enable_pheripheral345, configure_clock_source345, DmaMuxResources :: ADC5 , ( ADC345_COMMON ) ) ) ;
2208
2220
2209
2221
#[ cfg( any( feature = "stm32g431" , feature = "stm32g441" , feature = "stm32g471" , ) ) ]
2210
2222
adc_pins ! (
0 commit comments