pwm_input.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //! Testing PWM input
  2. #![deny(unsafe_code)]
  3. #![deny(warnings)]
  4. #![no_main]
  5. #![no_std]
  6. extern crate cortex_m;
  7. extern crate cortex_m_rt as rt;
  8. extern crate panic_abort;
  9. extern crate stm32f1xx_hal as hal;
  10. use hal::prelude::*;
  11. use hal::pwm_input::*;
  12. use hal::stm32;
  13. use rt::{entry, exception, ExceptionFrame};
  14. #[entry]
  15. fn main() -> ! {
  16. let p = stm32::Peripherals::take().unwrap();
  17. let mut flash = p.FLASH.constrain();
  18. let mut rcc = p.RCC.constrain();
  19. let clocks = rcc.cfgr.freeze(&mut flash.acr);
  20. let mut afio = p.AFIO.constrain(&mut rcc.apb2);
  21. let mut dbg = p.DBG;
  22. let mut gpiob = p.GPIOB.split(&mut rcc.apb2);
  23. let pb4 = gpiob.pb4.into_alternate_open_drain(&mut gpiob.crl);
  24. let pb5 = gpiob.pb5.into_alternate_open_drain(&mut gpiob.crl);
  25. let pwm_input = p.TIM3.pwm_input(
  26. (pb4, pb5),
  27. &mut rcc.apb1,
  28. &mut afio.mapr,
  29. &mut dbg,
  30. &clocks,
  31. Configuration::Frequency(10.khz()),
  32. );
  33. loop {
  34. let _freq = pwm_input
  35. .read_frequency(ReadMode::Instant, &clocks)
  36. .unwrap();
  37. let _duty_cycle = pwm_input.read_duty(ReadMode::Instant).unwrap();
  38. }
  39. }