RTIC blinky works, defmt is problematic..
All checks were successful
Rust/sat-rs/pipeline/head This commit looks good

This commit is contained in:
Robin Müller 2024-05-20 13:30:52 +02:00
parent 26046f5230
commit db3c4e12fc
5 changed files with 20 additions and 24 deletions

View File

@ -529,7 +529,7 @@ dependencies = [
] ]
[[package]] [[package]]
name = "satrs-stm32h7-rtic" name = "satrs-stm32h7-nucleo-rtic"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"cortex-m", "cortex-m",

View File

@ -1,9 +1,9 @@
[package] [package]
authors = ["Robin Mueller <robin.mueller.m@gmail.com>"] authors = ["Robin Mueller <robin.mueller.m@gmail.com>"]
name = "satrs-stm32h7-rtic" name = "satrs-stm32h7-nucleo-rtic"
edition = "2021" edition = "2021"
version = "0.1.0" version = "0.1.0"
default-run = "satrs-stm32h7-rtic" default-run = "satrs-stm32h7-nucleo-rtic"
[lib] [lib]
harness = false harness = false

View File

@ -5,14 +5,12 @@
#![no_std] #![no_std]
#![no_main] #![no_main]
use satrs_stm32h7_rtic as _; use satrs_stm32h7_nucleo_rtic as _;
use stm32h7xx_hal::{block, prelude::*, timer::Timer}; use stm32h7xx_hal::{block, prelude::*, timer::Timer};
use cortex_m_rt::entry; use cortex_m_rt::entry;
// use embedded_hal::digital::v2::OutputPin;
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
// Get access to the device specific peripherals from the peripheral access crate // Get access to the device specific peripherals from the peripheral access crate
@ -45,6 +43,8 @@ fn main() -> ! {
let mut timer = Timer::tim1(dp.TIM1, ccdr.peripheral.TIM1, &ccdr.clocks); let mut timer = Timer::tim1(dp.TIM1, ccdr.peripheral.TIM1, &ccdr.clocks);
timer.start(1.Hz()); timer.start(1.Hz());
defmt::info!("starting stm32h7 blinky example");
// Wait for the timer to trigger an update and change the state of the LED // Wait for the timer to trigger an update and change the state of the LED
loop { loop {
ld1.toggle(); ld1.toggle();

View File

@ -1,11 +1,11 @@
#![no_main] #![no_main]
#![no_std] #![no_std]
use satrs_stm32h7_rtic as _; // global logger + panicking-behavior + memory layout use satrs_stm32h7_nucleo_rtic as _; // global logger + panicking-behavior + memory layout
#[cortex_m_rt::entry] #[cortex_m_rt::entry]
fn main() -> ! { fn main() -> ! {
defmt::println!("Hello, world!"); defmt::println!("Hello, world!");
satrs_stm32h7_rtic::exit() satrs_stm32h7_nucleo_rtic::exit()
} }

View File

@ -2,7 +2,7 @@
#![no_std] #![no_std]
use rtic::app; use rtic::app;
use satrs_stm32h7_rtic as _; use satrs_stm32h7_nucleo_rtic as _; // global logger + panicking-behavior + memory layout
const DEFAULT_BLINK_FREQ_MS: u32 = 1000; const DEFAULT_BLINK_FREQ_MS: u32 = 1000;
@ -20,7 +20,7 @@ mod app {
} }
struct Leds { struct Leds {
led0: Pin<'A', 1, Output>, led0: Pin<'B', 0, Output>,
led1: Pin<'B', 7, Output>, led1: Pin<'B', 7, Output>,
led2: Pin<'B', 14, Output>, led2: Pin<'B', 14, Output>,
} }
@ -38,38 +38,32 @@ mod app {
// Try to keep the clock configuration similar to one used in STM examples: // Try to keep the clock configuration similar to one used in STM examples:
// https://github.com/STMicroelectronics/STM32CubeH7/blob/master/Projects/NUCLEO-H743ZI/Examples/GPIO/GPIO_EXTI/Src/main.c // https://github.com/STMicroelectronics/STM32CubeH7/blob/master/Projects/NUCLEO-H743ZI/Examples/GPIO/GPIO_EXTI/Src/main.c
let ccdr = rcc let ccdr = rcc
/*
.sys_ck(400.MHz()) .sys_ck(400.MHz())
.hclk(200.MHz()) .hclk(200.MHz())
*/
.use_hse(8.MHz()) .use_hse(8.MHz())
.bypass_hse() .bypass_hse()
/*
.pclk1(100.MHz()) .pclk1(100.MHz())
.pclk2(100.MHz()) .pclk2(100.MHz())
.pclk3(100.MHz()) .pclk3(100.MHz())
.pclk4(100.MHz()) .pclk4(100.MHz())
*/
.freeze(pwrcfg, &cx.device.SYSCFG); .freeze(pwrcfg, &cx.device.SYSCFG);
// Initialize the systick interrupt & obtain the token to prove that we did // Initialize the systick interrupt & obtain the token to prove that we did
let systick_mono_token = rtic_monotonics::create_systick_token!(); let systick_mono_token = rtic_monotonics::create_systick_token!();
Systick::start( Systick::start(
cx.core.SYST, cx.core.SYST,
8_000_000, ccdr.clocks.sys_ck().to_Hz(),
//ccdr.clocks.sys_ck().to_Hz(),
//8_000_000,
systick_mono_token, systick_mono_token,
); );
defmt::info!("Starting sat-rs demo application for the STM32H743ZIT"); defmt::info!("Starting sat-rs demo application for the STM32H743ZIT");
let gpioa = cx.device.GPIOA.split(ccdr.peripheral.GPIOA);
let gpiob = cx.device.GPIOB.split(ccdr.peripheral.GPIOB); let gpiob = cx.device.GPIOB.split(ccdr.peripheral.GPIOB);
let led0 = gpioa.pa1.into_push_pull_output(); let led0 = gpiob.pb0.into_push_pull_output();
let led1 = gpiob.pb7.into_push_pull_output(); let led1 = gpiob.pb7.into_push_pull_output();
let led2 = gpiob.pb14.into_push_pull_output(); let led2 = gpiob.pb14.into_push_pull_output();
let leds = Leds { led0, led1, led2 }; let leds = Leds { led0, led1, led2 };
blink::spawn().expect("spawning blink task failed");
( (
Shared { Shared {
blink_freq: MillisDurationU32::from_ticks(DEFAULT_BLINK_FREQ_MS), blink_freq: MillisDurationU32::from_ticks(DEFAULT_BLINK_FREQ_MS),
@ -81,10 +75,12 @@ mod app {
#[task(local = [leds], shared=[blink_freq])] #[task(local = [leds], shared=[blink_freq])]
async fn blink(mut cx: blink::Context) { async fn blink(mut cx: blink::Context) {
let leds = cx.local.leds; let leds = cx.local.leds;
loop {
leds.led0.toggle(); leds.led0.toggle();
leds.led1.toggle(); leds.led1.toggle();
leds.led2.toggle(); leds.led2.toggle();
let current_blink_freq = cx.shared.blink_freq.lock(|current| *current); let current_blink_freq = cx.shared.blink_freq.lock(|current| *current);
Systick::delay(current_blink_freq).await; Systick::delay(current_blink_freq).await;
} }
}
} }