start tutorial
This commit is contained in:
12
tutorial/07-analog-readout/solution/.cargo/config.toml
Normal file
12
tutorial/07-analog-readout/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/07-analog-readout/solution/Cargo.toml
Normal file
22
tutorial/07-analog-readout/solution/Cargo.toml
Normal file
@@ -0,0 +1,22 @@
|
||||
[package]
|
||||
name = "step07_analog_readout_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/07-analog-readout/solution/memory.x
Normal file
5
tutorial/07-analog-readout/solution/memory.x
Normal file
@@ -0,0 +1,5 @@
|
||||
MEMORY
|
||||
{
|
||||
FLASH : ORIGIN = 0x08000000, LENGTH = 64K
|
||||
RAM : ORIGIN = 0x20000000, LENGTH = 20K
|
||||
}
|
||||
4
tutorial/07-analog-readout/solution/rust-toolchain.toml
Normal file
4
tutorial/07-analog-readout/solution/rust-toolchain.toml
Normal file
@@ -0,0 +1,4 @@
|
||||
[toolchain]
|
||||
channel = "stable"
|
||||
components = ["rustfmt"]
|
||||
targets = ["thumbv7m-none-eabi"]
|
||||
37
tutorial/07-analog-readout/solution/src/main.rs
Normal file
37
tutorial/07-analog-readout/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::{adc::Adc, pac, prelude::*, timer::Timer};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
fn classify(raw: u16) -> &'static str {
|
||||
match raw {
|
||||
0..=1365 => "low",
|
||||
1366..=2730 => "medium",
|
||||
_ => "high",
|
||||
}
|
||||
}
|
||||
|
||||
#[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 mut adc = Adc::new(dp.ADC1, &mut rcc);
|
||||
let mut analog_pin = gpioa.pa1.into_analog(&mut gpioa.crl);
|
||||
|
||||
let mut timer = Timer::syst(cp.SYST, &rcc.clocks).counter_hz();
|
||||
timer.start(10.Hz()).unwrap();
|
||||
|
||||
loop {
|
||||
let raw: u16 = adc.read(&mut analog_pin).unwrap();
|
||||
info!("adc raw={} level={}", raw, classify(raw));
|
||||
block!(timer.wait()).unwrap();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user