r_d_inclita_sofware/
main.rs1#![no_std]
2#![no_main]
3#![warn(unused_crate_dependencies)]
4mod hardware_cfg;
5mod sensors;
6mod storage;
7mod telemetry;
8use crate::hardware_cfg::Board;
9use cortex_m as _;
10use defmt::*; use embassy_executor::Spawner;
12use embassy_stm32::gpio::Output;
13use embassy_time::Timer;
14use {defmt_rtt as _, panic_probe as _};
15
16#[embassy_executor::main]
17async fn main(spawner: Spawner) {
18 let config = Board::set_clock();
19 let p = embassy_stm32::init(config);
20
21 info!("Hello from STM32 :) ");
22
23 let board = Board::new(p);
24 spawner
26 .spawn(another_blinker(board.led_other_function))
27 .unwrap();
28
29 spawner
30 .spawn(storage::sd_card::sd_logger_task(board.sd_spi, board.sd_cs))
31 .unwrap();
32 #[cfg(not(feature = "mock-sensors"))]
33 {
34 info!("Compiling in FLIGHT MODE");
35 spawner
36 .spawn(sensors::bno055::bno055_logger_task(board.imu))
37 .unwrap();
38 spawner
39 .spawn(sensors::ms5611::ms5611_task(
40 board.altimeter,
41 board.altimeter_cs,
42 ))
43 .unwrap();
44 spawner
45 .spawn(sensors::adxl345::adxl343_task(board.accel))
46 .unwrap();
47 spawner
55 .spawn(sensors::gps::gps_task(board.gps_uart))
56 .unwrap();
57 }
58
59 #[cfg(feature = "mock-sensors")]
61 {
62 info!("Compiling in TEST MODE");
63 spawner.spawn(sensors::mock::mock_imu_task()).unwrap();
64 spawner.spawn(sensors::mock::mock_baro_task()).unwrap();
65 }
66}
67#[embassy_executor::task]
68async fn another_blinker(mut led: Output<'static>) {
69 loop {
70 led.set_high();
71 Timer::after_millis(1000).await;
72 led.set_low();
73 Timer::after_millis(1000).await;
74 }
75}