#![deny(unsafe_code)]
#![no_main]
#![no_std]
use panic_halt as _;
use cortex_m_rt::entry;
use stm32f4xx_hal::{pac, prelude::*, timer::Timer};
#[entry]
fn main() -> ! {
if let Some(dp) = pac::Peripherals::take() {
let rcc = dp.RCC.constrain();
let clocks = rcc.cfgr.freeze();
let gpioa = dp.GPIOA.split();
let gpioc = dp.GPIOC.split();
let channels = (gpioa.pa8.into_alternate(), gpioa.pa9.into_alternate());
let pwm = Timer::new(dp.TIM1, &clocks).pwm_hz(channels, 501.Hz());
let (mut ch1, _ch2) = pwm.split();
let max_duty = ch1.get_max_duty();
ch1.set_duty(max_duty / 2);
ch1.enable();
let pwm_reader_ch1 = gpioc.pc6.into_alternate();
let monitor = Timer::new(dp.TIM8, &clocks).pwm_input(500.Hz(), pwm_reader_ch1);
let _duty = monitor.get_duty_cycle();
}
loop {
cortex_m::asm::nop();
}
}