From af4fed51ae3777758c09ea1d7235e8848c1f754e Mon Sep 17 00:00:00 2001 From: cscherr Date: Thu, 24 Apr 2025 12:25:44 +0200 Subject: [PATCH] refactor: use a proper delay instead of a useless for loop It blinks every 500ms or so! --- Cargo.lock | 1 + Cargo.toml | 1 + src/main.rs | 19 +++++++++---------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c979f3..1161d32 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -123,6 +123,7 @@ checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" name = "nucleo-l053r8-blink" version = "0.1.0" dependencies = [ + "cortex-m", "cortex-m-rt", "panic-halt", "stm32l0xx-hal", diff --git a/Cargo.toml b/Cargo.toml index 0778c4c..5f86f78 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ edition = "2024" [dependencies] +cortex-m = "0.7.7" cortex-m-rt = "0.7.5" panic-halt = "1.0.0" stm32l0xx-hal = { version = "0.10.0", features = [ diff --git a/src/main.rs b/src/main.rs index dce6abf..ffd83f8 100755 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,3 @@ -#![deny(unsafe_code)] #![no_main] #![no_std] @@ -10,6 +9,7 @@ use stm32l0xx_hal::{pac, prelude::*, rcc::Config}; #[entry] fn main() -> ! { let dp = pac::Peripherals::take().unwrap(); + let cp = cortex_m::Peripherals::take().unwrap(); // Configure the clock. let mut rcc = dp.RCC.freeze(Config::hsi16()); @@ -21,15 +21,14 @@ fn main() -> ! { // Configure PA1 as output. let mut led = gpioa.pa5.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(); - } + // Get the delay provider. + let mut delay = cp.SYST.delay(rcc.clocks); - // Set the LED low one million times in a row. - for _ in 0..1_000_000 { - led.set_low().unwrap(); - } + loop { + led.set_high().unwrap(); + delay.delay_ms(500_u16); + + led.set_low().unwrap(); + delay.delay_ms(500_u16); } }