Use RccPeripheral for adc_v2
This commit is contained in:
		
							parent
							
								
									d49d1b6b1c
								
							
						
					
					
						commit
						9dca368c3d
					
				@ -30,9 +30,9 @@ pub(crate) mod sealed {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[cfg(not(adc_f1))]
 | 
					#[cfg(not(any(adc_f1, adc_v2)))]
 | 
				
			||||||
pub trait Instance: sealed::Instance + 'static {}
 | 
					pub trait Instance: sealed::Instance + 'static {}
 | 
				
			||||||
#[cfg(adc_f1)]
 | 
					#[cfg(any(adc_f1, adc_v2))]
 | 
				
			||||||
pub trait Instance: sealed::Instance + crate::rcc::RccPeripheral + 'static {}
 | 
					pub trait Instance: sealed::Instance + crate::rcc::RccPeripheral + 'static {}
 | 
				
			||||||
#[cfg(all(not(adc_f1), not(adc_v1)))]
 | 
					#[cfg(all(not(adc_f1), not(adc_v1)))]
 | 
				
			||||||
pub trait Common: sealed::Common + 'static {}
 | 
					pub trait Common: sealed::Common + 'static {}
 | 
				
			||||||
 | 
				
			|||||||
@ -12,21 +12,6 @@ pub const VREF_DEFAULT_MV: u32 = 3300;
 | 
				
			|||||||
/// VREF voltage used for factory calibration of VREFINTCAL register.
 | 
					/// VREF voltage used for factory calibration of VREFINTCAL register.
 | 
				
			||||||
pub const VREF_CALIB_MV: u32 = 3300;
 | 
					pub const VREF_CALIB_MV: u32 = 3300;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[cfg(not(any(rcc_f4, rcc_f7)))]
 | 
					 | 
				
			||||||
fn enable() {
 | 
					 | 
				
			||||||
    todo!()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[cfg(any(rcc_f4, rcc_f7))]
 | 
					 | 
				
			||||||
fn enable() {
 | 
					 | 
				
			||||||
    critical_section::with(|_| unsafe {
 | 
					 | 
				
			||||||
        // TODO do not enable all adc clocks if not needed
 | 
					 | 
				
			||||||
        crate::pac::RCC.apb2enr().modify(|w| w.set_adc1en(true));
 | 
					 | 
				
			||||||
        crate::pac::RCC.apb2enr().modify(|w| w.set_adc2en(true));
 | 
					 | 
				
			||||||
        crate::pac::RCC.apb2enr().modify(|w| w.set_adc3en(true));
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub enum Resolution {
 | 
					pub enum Resolution {
 | 
				
			||||||
    TwelveBit,
 | 
					    TwelveBit,
 | 
				
			||||||
    TenBit,
 | 
					    TenBit,
 | 
				
			||||||
@ -164,9 +149,10 @@ where
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    pub fn new(_peri: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
					    pub fn new(_peri: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
				
			||||||
        into_ref!(_peri);
 | 
					        into_ref!(_peri);
 | 
				
			||||||
        enable();
 | 
					        T::enable();
 | 
				
			||||||
 | 
					        T::reset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let presc = unsafe { Prescaler::from_pclk2(crate::rcc::get_freqs().apb2) };
 | 
					        let presc = unsafe { Prescaler::from_pclk2(T::frequency()) };
 | 
				
			||||||
        unsafe {
 | 
					        unsafe {
 | 
				
			||||||
            T::common_regs().ccr().modify(|w| w.set_adcpre(presc.adcpre()));
 | 
					            T::common_regs().ccr().modify(|w| w.set_adcpre(presc.adcpre()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -288,3 +274,9 @@ where
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl<'d, T: Instance> Drop for Adc<'d, T> {
 | 
				
			||||||
 | 
					    fn drop(&mut self) {
 | 
				
			||||||
 | 
					        T::disable();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user