48 lines
1.0 KiB
Rust
48 lines
1.0 KiB
Rust
|
#![no_std]
|
||
|
#![no_main]
|
||
|
|
||
|
use esp_hal::clock::ClockControl;
|
||
|
use esp_hal::delay::Delay;
|
||
|
use esp_hal::gpio::IO;
|
||
|
use esp_hal::peripherals::Peripherals;
|
||
|
use esp_hal::prelude::*;
|
||
|
|
||
|
use panic_halt as _;
|
||
|
|
||
|
#[entry]
|
||
|
fn main() -> ! {
|
||
|
let p = Peripherals::take();
|
||
|
let sys = p.SYSTEM.split();
|
||
|
let clocks = ClockControl::boot_defaults(sys.clock_control).freeze();
|
||
|
|
||
|
let io = IO::new(p.GPIO, p.IO_MUX);
|
||
|
|
||
|
let mut r = io.pins.gpio5.into_push_pull_output();
|
||
|
let mut g = io.pins.gpio6.into_push_pull_output();
|
||
|
let mut b = io.pins.gpio7.into_push_pull_output();
|
||
|
|
||
|
let _btn = io.pins.gpio9.into_pull_up_input();
|
||
|
|
||
|
let delay = Delay::new(&clocks);
|
||
|
|
||
|
for [r_state, g_state, b_state] in [
|
||
|
[true, false, false],
|
||
|
[true, true, false],
|
||
|
[false, true, false],
|
||
|
[false, true, true],
|
||
|
[false, false, true],
|
||
|
[true, false, true],
|
||
|
]
|
||
|
.iter()
|
||
|
.cycle()
|
||
|
{
|
||
|
r.set_state(*r_state);
|
||
|
g.set_state(*g_state);
|
||
|
b.set_state(*b_state);
|
||
|
|
||
|
delay.delay_millis(200u32);
|
||
|
}
|
||
|
|
||
|
loop {}
|
||
|
}
|