feat: i think blinky would work but I'm loading wrong

This commit is contained in:
cscherr 2025-04-17 16:29:33 +02:00
parent 965bdc5b8e
commit 26f439acd0
Signed by: cscherrNT
GPG key ID: 8E2B45BC51A27EA7
4 changed files with 42 additions and 20 deletions

View file

@ -21,3 +21,7 @@ hal = { package = "stm32l0xx-hal", version = "0.10.0", features = [
name = "nucleo-l053r8-blink" name = "nucleo-l053r8-blink"
test = false test = false
bench = false bench = false
[profile.release]
opt-level = 'z' # turn on maximum optimizations. We only have 64kB
lto = true # Link-time-optimizations for further size reduction

13
Embed.toml Executable file
View file

@ -0,0 +1,13 @@
# i dont think this is used anywhere but am paranoid
[default.general]
chip = "STM32L053R8"
[default.rtt]
enabled = true
[default.probe]
protocol = "Swd"
[default.gdb]
enabled = false

View file

@ -1,9 +0,0 @@
// We could do a lot of fancy build tricks here, but all we need is a linker script from
// cortext-m-rt to include our memory map, so the tools know how much RAM and flash the chip has
// and where to find them.
fn main() {
// Set the linker script to the one provided by cortex-m-rt.
println!("cargo:rustc-link-arg=-Tlink.x");
// Apperently, this loads the memory map provided in `memory.x`
}

View file

@ -3,27 +3,41 @@
// We need to use cortex_m here so the linker can find it's critical-section, but we import is as // We need to use cortex_m here so the linker can find it's critical-section, but we import is as
// an underscore since we don't directly use any of its symbols. // an underscore since we don't directly use any of its symbols.
use cortex_m as _; extern crate cortex_m;
use cortex_m::delay::Delay;
// The entry import gives us a macro to indicate where the microcontroller should start the // The entry import gives us a macro to indicate where the microcontroller should start the
// program, and also sets up the FPU on our Cortex-M4F. // program, and also sets up the FPU on our Cortex-M4F.
use cortex_m_rt::entry; use cortex_m_rt::entry;
use hal::{pac, prelude::*, rcc::Config};
// Provides functions that allow printing back to probe-rs. // Provides functions that allow printing back to probe-rs.
use panic_rtt_target as _; use panic_rtt_target as _;
use rtt_target::{rprintln, rtt_init_print}; // use rtt_target::{rprintln, rtt_init_print};
use hal as _;
// Start here, and don't ever return from this function. // Start here, and don't ever return from this function.
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
// Initialise our debug printer. let dp = pac::Peripherals::take().unwrap();
rtt_init_print!();
// Send a message back via the debugger.
rprintln!("Hello, world!");
// Do nothing, forever. // Configure the clock.
loop {} let mut rcc = dp.RCC.freeze(Config::hsi16());
// Acquire the GPIOA peripheral. This also enables the clock for GPIOA in
// the RCC register.
let gpioa = dp.GPIOA.split(&mut rcc);
// Configure PA1 as output.
let mut led = gpioa.pa3.into_push_pull_output();
loop {
// Set the LED high one million times in a row.
for _ in 0..1_000_000 {
led.set_high().unwrap();
}
// Set the LED low one million times in a row.
for _ in 0..1_000_000 {
led.set_low().unwrap();
}
}
} }