delay.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //! "Blinky" using delays instead of a timer
  2. #![deny(unsafe_code)]
  3. #![no_main]
  4. #![no_std]
  5. use panic_halt as _;
  6. use cortex_m_rt::entry;
  7. use embedded_hal::digital::v2::OutputPin;
  8. use stm32f1xx_hal::{delay::Delay, pac, prelude::*};
  9. #[entry]
  10. fn main() -> ! {
  11. let dp = pac::Peripherals::take().unwrap();
  12. let cp = cortex_m::Peripherals::take().unwrap();
  13. let mut flash = dp.FLASH.constrain();
  14. let mut rcc = dp.RCC.constrain();
  15. let clocks = rcc.cfgr.freeze(&mut flash.acr);
  16. let mut gpioc = dp.GPIOC.split(&mut rcc.apb2);
  17. #[cfg(feature = "stm32f100")]
  18. let mut led = gpioc.pc9.into_push_pull_output(&mut gpioc.crh);
  19. #[cfg(feature = "stm32f101")]
  20. let mut led = gpioc.pc9.into_push_pull_output(&mut gpioc.crh);
  21. #[cfg(any(feature = "stm32f103", feature = "stm32f105", feature = "stm32f107"))]
  22. let mut led = gpioc.pc13.into_push_pull_output(&mut gpioc.crh);
  23. let mut delay = Delay::new(cp.SYST, clocks);
  24. loop {
  25. led.set_high().unwrap();
  26. delay.delay_ms(1_000_u16);
  27. led.set_low().unwrap();
  28. delay.delay_ms(1_000_u16);
  29. }
  30. }