#![no_std]
#![no_main]
use hal::timer::general_purpose_timer::{AnyTimer, Channel, ChannelConfig};
use py32f030_hal::{self as hal, mode::Blocking};
use {defmt_rtt as _, panic_probe as _};
#[cortex_m_rt::entry]
fn main() -> ! {
defmt::info!("timer pwm examples start...");
let p = hal::init(Default::default());
let gpioa = p.GPIOA.split();
let timer: AnyTimer<_, Blocking> = AnyTimer::new(p.TIM3).unwrap();
let mut pwm = timer.as_pwm();
pwm.set_channel_1_pin(Some(gpioa.PA2));
pwm.config(
Some(ChannelConfig::default()),
None,
None,
None,
);
pwm.set_frequency(1_000_000);
pwm.set_period(1000u16 - 1);
let max_duty = pwm.get_max_duty();
pwm.set_duty(Channel::CH1, max_duty / 3);
pwm.enable(Channel::CH1);
pwm.start();
loop {
cortex_m::asm::wfi();
}
}