diff options
| author | chemicstry <[email protected]> | 2022-08-04 03:02:57 +0300 |
|---|---|---|
| committer | chemicstry <[email protected]> | 2022-08-04 03:02:57 +0300 |
| commit | 5f01e56728c3a06f1d2298dea6dde000a43acc83 (patch) | |
| tree | 9932cf2bb9ffb07a167d036eb92596e6d94b0281 /examples | |
| parent | 1924f2d67d32a4466e71ef0aabc84305a9e8e165 (diff) | |
Merge v1, v2 DAC and update register definitions
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/stm32f1/Cargo.toml | 3 | ||||
| -rw-r--r-- | examples/stm32f1/src/bin/dac.rs | 37 |
2 files changed, 39 insertions, 1 deletions
diff --git a/examples/stm32f1/Cargo.toml b/examples/stm32f1/Cargo.toml index 9ce553b6d..638f1eff6 100644 --- a/examples/stm32f1/Cargo.toml +++ b/examples/stm32f1/Cargo.toml | |||
| @@ -6,7 +6,7 @@ version = "0.1.0" | |||
| 6 | [dependencies] | 6 | [dependencies] |
| 7 | embassy-util = { version = "0.1.0", path = "../../embassy-util", features = ["defmt"] } | 7 | embassy-util = { version = "0.1.0", path = "../../embassy-util", features = ["defmt"] } |
| 8 | embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["defmt", "defmt-timestamp-uptime", "time-tick-32768hz"] } | 8 | embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["defmt", "defmt-timestamp-uptime", "time-tick-32768hz"] } |
| 9 | embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f103c8", "unstable-pac", "memory-x", "time-driver-any"] } | 9 | embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f103rc", "unstable-pac", "memory-x", "time-driver-any"] } |
| 10 | embassy-usb = { version = "0.1.0", path = "../../embassy-usb", features = ["defmt"] } | 10 | embassy-usb = { version = "0.1.0", path = "../../embassy-usb", features = ["defmt"] } |
| 11 | embassy-usb-serial = { version = "0.1.0", path = "../../embassy-usb-serial", features = ["defmt"] } | 11 | embassy-usb-serial = { version = "0.1.0", path = "../../embassy-usb-serial", features = ["defmt"] } |
| 12 | 12 | ||
| @@ -20,6 +20,7 @@ panic-probe = { version = "0.3", features = ["print-defmt"] } | |||
| 20 | futures = { version = "0.3.17", default-features = false, features = ["async-await"] } | 20 | futures = { version = "0.3.17", default-features = false, features = ["async-await"] } |
| 21 | heapless = { version = "0.7.5", default-features = false } | 21 | heapless = { version = "0.7.5", default-features = false } |
| 22 | nb = "1.0.0" | 22 | nb = "1.0.0" |
| 23 | micromath = "2.0.0" | ||
| 23 | 24 | ||
| 24 | [profile.dev] | 25 | [profile.dev] |
| 25 | opt-level = "s" | 26 | opt-level = "s" |
diff --git a/examples/stm32f1/src/bin/dac.rs b/examples/stm32f1/src/bin/dac.rs new file mode 100644 index 000000000..392f5bf4d --- /dev/null +++ b/examples/stm32f1/src/bin/dac.rs | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | #![no_std] | ||
| 2 | #![no_main] | ||
| 3 | #![feature(type_alias_impl_trait)] | ||
| 4 | |||
| 5 | use defmt::*; | ||
| 6 | use embassy_executor::executor::Spawner; | ||
| 7 | use embassy_stm32::dac::{Channel, Dac, Value}; | ||
| 8 | use embassy_stm32::Peripherals; | ||
| 9 | use {defmt_rtt as _, panic_probe as _}; | ||
| 10 | |||
| 11 | #[embassy_executor::main] | ||
| 12 | async fn main(_spawner: Spawner, p: Peripherals) -> ! { | ||
| 13 | info!("Hello World, dude!"); | ||
| 14 | |||
| 15 | let mut dac = Dac::new_1ch(p.DAC, p.PA4); | ||
| 16 | |||
| 17 | loop { | ||
| 18 | for v in 0..=255 { | ||
| 19 | unwrap!(dac.set(Channel::Ch1, Value::Bit8(to_sine_wave(v)))); | ||
| 20 | unwrap!(dac.trigger(Channel::Ch1)); | ||
| 21 | } | ||
| 22 | } | ||
| 23 | } | ||
| 24 | |||
| 25 | use micromath::F32Ext; | ||
| 26 | |||
| 27 | fn to_sine_wave(v: u8) -> u8 { | ||
| 28 | if v >= 128 { | ||
| 29 | // top half | ||
| 30 | let r = 3.14 * ((v - 128) as f32 / 128.0); | ||
| 31 | (r.sin() * 128.0 + 127.0) as u8 | ||
| 32 | } else { | ||
| 33 | // bottom half | ||
| 34 | let r = 3.14 + 3.14 * (v as f32 / 128.0); | ||
| 35 | (r.sin() * 128.0 + 127.0) as u8 | ||
| 36 | } | ||
| 37 | } | ||
