diff options
author | chemicstry <chemicstry@gmail.com> | 2022-06-23 02:27:39 +0300 |
---|---|---|
committer | chemicstry <chemicstry@gmail.com> | 2022-06-23 02:27:39 +0300 |
commit | 3cdd8c1aebaebd7464fa3477ce63525a101dcf72 (patch) | |
tree | b2884853b64b9790e8d5613f2c2193260eee6972 /examples/stm32f4/src/bin | |
parent | 4a6f69e2d9e1c18ff5999a6aa049c280a6b8dcc4 (diff) | |
download | embassy-3cdd8c1aebaebd7464fa3477ce63525a101dcf72.zip |
Fix PWM for advanced timers
Diffstat (limited to 'examples/stm32f4/src/bin')
-rw-r--r-- | examples/stm32f4/src/bin/pwm.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/stm32f4/src/bin/pwm.rs b/examples/stm32f4/src/bin/pwm.rs new file mode 100644 index 00000000..4073f538 --- /dev/null +++ b/examples/stm32f4/src/bin/pwm.rs @@ -0,0 +1,42 @@ +#![no_std] +#![no_main] +#![feature(type_alias_impl_trait)] + +use defmt::*; +use embassy::executor::Spawner; +use embassy::time::{Duration, Timer}; +use embassy_stm32::pwm::simple_pwm::SimplePwm; +use embassy_stm32::pwm::Channel; +use embassy_stm32::time::{Hertz, U32Ext}; +use embassy_stm32::{Config, Peripherals}; +use {defmt_rtt as _, panic_probe as _}; + +fn config() -> Config { + let mut config = Config::default(); + config.rcc.hse = Some(Hertz(8_000_000)); + config.rcc.sys_ck = Some(Hertz(84_000_000)); + config +} + +#[embassy::main(config = "config()")] +async fn main(_spawner: Spawner, p: Peripherals) { + info!("Hello World!"); + + let mut pwm = SimplePwm::new_1ch(p.TIM1, p.PE9, 10000.hz()); + let max = pwm.get_max_duty(); + pwm.enable(Channel::Ch1); + + info!("PWM initialized"); + info!("PWM max duty {}", max); + + loop { + pwm.set_duty(Channel::Ch1, 0); + Timer::after(Duration::from_millis(300)).await; + pwm.set_duty(Channel::Ch1, max / 4); + Timer::after(Duration::from_millis(300)).await; + pwm.set_duty(Channel::Ch1, max / 2); + Timer::after(Duration::from_millis(300)).await; + pwm.set_duty(Channel::Ch1, max - 1); + Timer::after(Duration::from_millis(300)).await; + } +} |