start tutorial
This commit is contained in:
12
tutorial/06-button-input/solution/.cargo/config.toml
Normal file
12
tutorial/06-button-input/solution/.cargo/config.toml
Normal file
@@ -0,0 +1,12 @@
|
||||
[target.thumbv7m-none-eabi]
|
||||
runner = "probe-rs run --chip STM32F103C8"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-Tlink.x",
|
||||
"-C", "link-arg=-Tdefmt.x",
|
||||
]
|
||||
|
||||
[build]
|
||||
target = "thumbv7m-none-eabi"
|
||||
|
||||
[env]
|
||||
DEFMT_LOG = "info"
|
||||
22
tutorial/06-button-input/solution/Cargo.toml
Normal file
22
tutorial/06-button-input/solution/Cargo.toml
Normal file
@@ -0,0 +1,22 @@
|
||||
[package]
|
||||
name = "step06_button_input_solution"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
cortex-m = "0.7.7"
|
||||
cortex-m-rt = "0.7.5"
|
||||
defmt = "0.3.10"
|
||||
defmt-rtt = "0.4.2"
|
||||
panic-probe = { version = "0.3.2", features = ["print-defmt"] }
|
||||
nb = "1.1.0"
|
||||
|
||||
[dependencies.stm32f1xx-hal]
|
||||
version = "0.11.0"
|
||||
features = ["rt", "stm32f103", "medium"]
|
||||
|
||||
[profile.release]
|
||||
codegen-units = 1
|
||||
debug = 2
|
||||
lto = true
|
||||
opt-level = "z"
|
||||
5
tutorial/06-button-input/solution/memory.x
Normal file
5
tutorial/06-button-input/solution/memory.x
Normal file
@@ -0,0 +1,5 @@
|
||||
MEMORY
|
||||
{
|
||||
FLASH : ORIGIN = 0x08000000, LENGTH = 64K
|
||||
RAM : ORIGIN = 0x20000000, LENGTH = 20K
|
||||
}
|
||||
4
tutorial/06-button-input/solution/rust-toolchain.toml
Normal file
4
tutorial/06-button-input/solution/rust-toolchain.toml
Normal file
@@ -0,0 +1,4 @@
|
||||
[toolchain]
|
||||
channel = "stable"
|
||||
components = ["rustfmt"]
|
||||
targets = ["thumbv7m-none-eabi"]
|
||||
37
tutorial/06-button-input/solution/src/main.rs
Normal file
37
tutorial/06-button-input/solution/src/main.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
|
||||
use cortex_m_rt::entry;
|
||||
use defmt::info;
|
||||
use nb::block;
|
||||
use stm32f1xx_hal::{pac, prelude::*, timer::Timer};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
#[entry]
|
||||
fn main() -> ! {
|
||||
let cp = cortex_m::Peripherals::take().unwrap();
|
||||
let dp = pac::Peripherals::take().unwrap();
|
||||
|
||||
let mut rcc = dp.RCC.constrain();
|
||||
let mut gpioa = dp.GPIOA.split(&mut rcc);
|
||||
let button = gpioa.pa0.into_pull_up_input(&mut gpioa.crl);
|
||||
|
||||
let mut timer = Timer::syst(cp.SYST, &rcc.clocks).counter_hz();
|
||||
timer.start(40.Hz()).unwrap();
|
||||
|
||||
let mut last_pressed = false;
|
||||
|
||||
loop {
|
||||
let pressed = button.is_low();
|
||||
if pressed != last_pressed {
|
||||
if pressed {
|
||||
info!("button: pressed");
|
||||
} else {
|
||||
info!("button: released");
|
||||
}
|
||||
last_pressed = pressed;
|
||||
}
|
||||
|
||||
block!(timer.wait()).unwrap();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user