52 lines
1.6 KiB
Rust
52 lines
1.6 KiB
Rust
#![deny(unsafe_code)]
|
|
#![allow(clippy::empty_loop)]
|
|
#![no_main]
|
|
#![no_std]
|
|
|
|
// Halt on panic
|
|
use panic_halt as _; // panic handler
|
|
|
|
use cortex_m_rt::entry;
|
|
use stm32f4xx_hal::{self as hal};
|
|
|
|
use crate::hal::{pac, prelude::*};
|
|
|
|
mod leds;
|
|
use crate::leds::{Leds, ToggleLed};
|
|
mod state_machine;
|
|
use crate::state_machine::StateMachine;
|
|
|
|
#[entry]
|
|
fn main() -> ! {
|
|
if let (Some(dp), Some(cp)) = (
|
|
pac::Peripherals::take(),
|
|
cortex_m::peripheral::Peripherals::take(),
|
|
) {
|
|
//GPIOD ophalen
|
|
let gpiod = dp.GPIOD.split();
|
|
//led pinnen uphalen
|
|
let mut green_pin = &mut gpiod.pd12.into_push_pull_output();
|
|
let mut red_pin = &mut gpiod.pd14.into_push_pull_output();
|
|
let mut blue_pin = &mut gpiod.pd15.into_push_pull_output();
|
|
let mut green = ToggleLed::new(&mut green_pin).expect("faild to set green led");
|
|
let mut red = ToggleLed::new(&mut red_pin).expect("faild to set red led");
|
|
let mut blue = ToggleLed::new(&mut blue_pin).expect("faild to set blue led");
|
|
let mut leds = Leds::new(&mut red, &mut green, &mut blue);
|
|
//leds struct en state machine maken
|
|
let mut state_machine = StateMachine::new(&mut leds);
|
|
|
|
//Klok instellen
|
|
let rcc = dp.RCC.constrain();
|
|
let clocks = rcc.cfgr.sysclk(48.MHz()).freeze();
|
|
|
|
|
|
// Create a delay abstraction based on SysTick
|
|
let mut delay = cp.SYST.delay(&clocks);
|
|
loop {
|
|
let _ = state_machine.second_passed();
|
|
delay.delay_ms(1000_u32);
|
|
}
|
|
}
|
|
|
|
loop {}
|
|
} |