Skip to content

Instantly share code, notes, and snippets.

@SteelPh0enix
Last active February 10, 2023 18:04
Show Gist options
  • Save SteelPh0enix/58362b6ff626a0dea7e95907170b8e35 to your computer and use it in GitHub Desktop.
Save SteelPh0enix/58362b6ff626a0dea7e95907170b8e35 to your computer and use it in GitHub Desktop.
#![no_std]
#![no_main]
use cortex_m_rt::entry;
use cortex_m_semihosting::hprintln;
use panic_semihosting as _;
use stm32f4::stm32f401::Peripherals;
fn init_board() -> Peripherals {
// LED on PA5
// Button on PC13
let p = Peripherals::take().unwrap();
let rcc = &p.RCC;
let pa = &p.GPIOA;
let pc = &p.GPIOC;
rcc.ahb1enr
.modify(|_, w| w.gpioaen().enabled().gpiocen().enabled());
pa.moder.modify(|_, w| w.moder5().output());
pc.moder.modify(|_, w| w.moder13().input());
p
}
fn toggle_led(p: &Peripherals) {
p.GPIOA.odr.modify(|r, w| w.odr5().bit(!r.odr5().bit()));
}
#[entry]
fn main() -> ! {
hprintln!("Hello, world!");
let p = init_board();
toggle_led(&p);
toggle_led(&p);
toggle_led(&p);
toggle_led(&p);
hprintln!("Goodbye!");
loop {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment