add last years rust report
This commit is contained in:
111
report-3/rust_report.md
Normal file
111
report-3/rust_report.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
---
|
||||||
|
sub_title: "Real Time Systems 10"
|
||||||
|
class_code: "ELERTS10"
|
||||||
|
toc: true
|
||||||
|
auther:
|
||||||
|
- name: "Finley van Reenen (0964590)"
|
||||||
|
email: "mail@lailatheelf.nl"
|
||||||
|
name_short: "E.L.F. van Reenen"
|
||||||
|
---
|
||||||
|
|
||||||
|
# RTS10 - Rust opdracht
|
||||||
|
|
||||||
|
Ik heb niet genoeg tijd gehad om dat dit vak te werken, dus mijn code werkt niet zoals dat het moet, het werkt wel. Ik heb veel geëxperimenteerd met Rustlings, ik hierdoor nog enthousiaster geworden om Rust beter te leren. Het is echt een andere denkwijze als C/C++. Rust laat je echt goed denken hoe de code moet werkten en maakt het erg moeilijk om onzichtbare bugs te maken.
|
||||||
|
|
||||||
|
## code
|
||||||
|
|
||||||
|
```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 as hal;
|
||||||
|
|
||||||
|
use crate::hal::{pac, prelude::*};
|
||||||
|
use cortex_m_semihosting::hprintln;
|
||||||
|
|
||||||
|
enum MainStates {
|
||||||
|
Rood,
|
||||||
|
Groen,
|
||||||
|
Orange,
|
||||||
|
BrugOpen_on,
|
||||||
|
BrugOpen_off
|
||||||
|
}
|
||||||
|
|
||||||
|
#[entry]
|
||||||
|
fn main() -> ! {
|
||||||
|
if let (Some(dp), Some(cp)) = (
|
||||||
|
pac::Peripherals::take(),
|
||||||
|
cortex_m::peripheral::Peripherals::take(),
|
||||||
|
) {
|
||||||
|
//GPIOD ophalen
|
||||||
|
let gpiod = dp.GPIOD.split();
|
||||||
|
let mut led_rood = gpiod.pd14.into_push_pull_output();
|
||||||
|
let mut led_groen = gpiod.pd12.into_push_pull_output();
|
||||||
|
let mut led_orange = gpiod.pd13.into_push_pull_output();
|
||||||
|
|
||||||
|
//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);
|
||||||
|
let mut main_state : MainStates = MainStates::Rood;
|
||||||
|
loop {
|
||||||
|
match main_state {
|
||||||
|
MainStates::Rood => {
|
||||||
|
hprintln!("Rood");
|
||||||
|
led_rood.set_high();
|
||||||
|
led_groen.set_low();
|
||||||
|
led_orange.set_low();
|
||||||
|
delay.delay(4.secs());
|
||||||
|
main_state = MainStates::Groen;
|
||||||
|
},
|
||||||
|
MainStates::Groen => {
|
||||||
|
hprintln!("Groen");
|
||||||
|
led_rood.set_low();
|
||||||
|
led_groen.set_high();
|
||||||
|
led_orange.set_low();
|
||||||
|
delay.delay(3.secs());
|
||||||
|
main_state = MainStates::Orange;
|
||||||
|
},
|
||||||
|
MainStates::Orange => {
|
||||||
|
hprintln!("Orange");
|
||||||
|
led_rood.set_low();
|
||||||
|
led_groen.set_low();
|
||||||
|
led_orange.set_high();
|
||||||
|
delay.delay(1.secs());
|
||||||
|
main_state = MainStates::BrugOpen_on;
|
||||||
|
},
|
||||||
|
MainStates::BrugOpen_on => {
|
||||||
|
hprintln!("Brug open - on");
|
||||||
|
led_rood.set_high();
|
||||||
|
led_groen.set_low();
|
||||||
|
led_orange.set_low();
|
||||||
|
delay.delay(2.secs());
|
||||||
|
main_state = MainStates::BrugOpen_off;
|
||||||
|
},
|
||||||
|
MainStates::BrugOpen_off => {
|
||||||
|
hprintln!("Brug open - off");
|
||||||
|
led_rood.set_low();
|
||||||
|
led_groen.set_low();
|
||||||
|
led_orange.set_low();
|
||||||
|
delay.delay(1.secs());
|
||||||
|
main_state = MainStates::BrugOpen_on;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loop {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user