Merge pull request #2119 from JuliDi/fmc-sram-adc
STM32: Add raw access to FMC peripheral and fix typo in build.rs
This commit is contained in:
		@@ -828,7 +828,7 @@ fn main() {
 | 
				
			|||||||
        (("fmc", "NCE"), quote!(crate::fmc::NCEPin)),
 | 
					        (("fmc", "NCE"), quote!(crate::fmc::NCEPin)),
 | 
				
			||||||
        (("fmc", "NOE"), quote!(crate::fmc::NOEPin)),
 | 
					        (("fmc", "NOE"), quote!(crate::fmc::NOEPin)),
 | 
				
			||||||
        (("fmc", "NWE"), quote!(crate::fmc::NWEPin)),
 | 
					        (("fmc", "NWE"), quote!(crate::fmc::NWEPin)),
 | 
				
			||||||
        (("fmc", "Clk"), quote!(crate::fmc::ClkPin)),
 | 
					        (("fmc", "CLK"), quote!(crate::fmc::ClkPin)),
 | 
				
			||||||
        (("fmc", "BA0"), quote!(crate::fmc::BA0Pin)),
 | 
					        (("fmc", "BA0"), quote!(crate::fmc::BA0Pin)),
 | 
				
			||||||
        (("fmc", "BA1"), quote!(crate::fmc::BA1Pin)),
 | 
					        (("fmc", "BA1"), quote!(crate::fmc::BA1Pin)),
 | 
				
			||||||
        (("timer", "CH1"), quote!(crate::timer::Channel1Pin)),
 | 
					        (("timer", "CH1"), quote!(crate::timer::Channel1Pin)),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,37 @@ pub struct Fmc<'d, T: Instance> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
unsafe impl<'d, T> Send for Fmc<'d, T> where T: Instance {}
 | 
					unsafe impl<'d, T> Send for Fmc<'d, T> where T: Instance {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl<'d, T> Fmc<'d, T>
 | 
				
			||||||
 | 
					where
 | 
				
			||||||
 | 
					    T: Instance,
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// Create a raw FMC instance.
 | 
				
			||||||
 | 
					    ///
 | 
				
			||||||
 | 
					    /// **Note:** This is currently used to provide access to some basic FMC functions
 | 
				
			||||||
 | 
					    /// for manual configuration for memory types that stm32-fmc does not support.
 | 
				
			||||||
 | 
					    pub fn new_raw(_instance: impl Peripheral<P = T> + 'd) -> Self {
 | 
				
			||||||
 | 
					        Self { peri: PhantomData }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Enable the FMC peripheral and reset it.
 | 
				
			||||||
 | 
					    pub fn enable(&mut self) {
 | 
				
			||||||
 | 
					        T::enable_and_reset();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Enable the memory controller on applicable chips.
 | 
				
			||||||
 | 
					    pub fn memory_controller_enable(&mut self) {
 | 
				
			||||||
 | 
					        // fmc v1 and v2 does not have the fmcen bit
 | 
				
			||||||
 | 
					        // fsmc v1, v2 and v3 does not have the fmcen bit
 | 
				
			||||||
 | 
					        // This is a "not" because it is expected that all future versions have this bit
 | 
				
			||||||
 | 
					        #[cfg(not(any(fmc_v1x3, fmc_v2x1, fsmc_v1x0, fsmc_v1x3, fsmc_v2x3, fsmc_v3x1)))]
 | 
				
			||||||
 | 
					        T::REGS.bcr1().modify(|r| r.set_fmcen(true));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub fn source_clock_hz(&self) -> u32 {
 | 
				
			||||||
 | 
					        <T as crate::rcc::sealed::RccPeripheral>::frequency().0
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unsafe impl<'d, T> stm32_fmc::FmcPeripheral for Fmc<'d, T>
 | 
					unsafe impl<'d, T> stm32_fmc::FmcPeripheral for Fmc<'d, T>
 | 
				
			||||||
where
 | 
					where
 | 
				
			||||||
    T: Instance,
 | 
					    T: Instance,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user