#![no_std]
#![no_main]
use esp_hal::main;
#[panic_handler]
fn panic(_: &core::panic::PanicInfo) -> ! {
loop {}
}
use esp_hal::ledc::channel::ChannelIFace;
use esp_hal::ledc::timer::TimerIFace;
use esp_hal::ledc::{channel, timer, LSGlobalClkSource, Ledc, LowSpeed};
use esp_hal::time::Rate;
#[main]
fn main() -> ! {
let peripherals = esp_hal::init(esp_hal::Config::default());
let led02 = peripherals.GPIO2;
//检查按钮状态并相应地设置LED状态。
// 超声波 vcc 电源 trig 触发信号 Echo 回传信号 GDN 地线
let mut ledc = Ledc::new(peripherals.LEDC);
ledc.set_global_slow_clock(LSGlobalClkSource::APBClk);
let mut lstimer0 = ledc.timer::<LowSpeed>(timer::Number::Timer0);
lstimer0
.configure(timer::config::Config {
duty: timer::config::Duty::Duty5Bit,
clock_source: timer::LSClockSource::APBClk,
frequency: Rate::from_khz(24),
})
.unwrap();
let mut channel0 = ledc.channel(channel::Number::Channel0, led02);
channel0
.configure(channel::config::Config {
timer: &lstimer0,
duty_pct: 10,
pin_config: channel::config::PinConfig::PushPull,
})
.unwrap();
loop {
channel0.start_duty_fade(0, 100, 1000).unwrap();
while channel0.is_duty_fade_running() {}
channel0.start_duty_fade(100, 0, 1000).unwrap();
while channel0.is_duty_fade_running() {}
}
}