adc_temperature.rs 828 B

123456789101112131415161718192021222324252627282930313233343536
  1. #![deny(unsafe_code)]
  2. #![no_main]
  3. #![no_std]
  4. use panic_semihosting as _;
  5. use stm32f1xx_hal::{
  6. prelude::*,
  7. pac,
  8. adc,
  9. };
  10. use cortex_m_rt::entry;
  11. use cortex_m_semihosting::hprintln;
  12. #[entry]
  13. fn main() -> ! {
  14. // Aquire peripherals
  15. let p = pac::Peripherals::take().unwrap();
  16. let mut flash = p.FLASH.constrain();
  17. let mut rcc = p.RCC.constrain();
  18. let clocks = rcc.cfgr.use_hse(8.mhz()).sysclk(56.mhz()).pclk1(28.mhz()).adcclk(14.mhz()).freeze(&mut flash.acr);
  19. hprintln!("sysclk freq: {}", clocks.sysclk().0).unwrap();
  20. hprintln!("adc freq: {}", clocks.adcclk().0).unwrap();
  21. // Setup ADC
  22. let mut adc = adc::Adc::adc1(p.ADC1, &mut rcc.apb2, clocks);
  23. // Read temperature sensor
  24. loop {
  25. let temp = adc.read_temp();
  26. hprintln!("temp: {}", temp).unwrap();
  27. }
  28. }