adc_temperature.rs 868 B

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