aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32h7/src
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-08-03 22:08:13 +0200
committerDario Nieuwenhuis <[email protected]>2021-08-05 19:14:09 +0200
commit0ea6a2d8905a146c8899239fe52e739404f13e7e (patch)
tree0fdc47c7558a062787afea6d1f6a7d0ce5a2f660 /examples/stm32h7/src
parenta4c0ee6df7cd54a3b31524e2c6aaf2b15b61a4d2 (diff)
time: replace dyn clock/alarm with a global Driver trait
Diffstat (limited to 'examples/stm32h7/src')
-rw-r--r--examples/stm32h7/src/bin/blinky.rs17
-rw-r--r--examples/stm32h7/src/bin/eth.rs13
-rw-r--r--examples/stm32h7/src/bin/spi.rs10
-rw-r--r--examples/stm32h7/src/bin/spi_dma.rs10
-rw-r--r--examples/stm32h7/src/bin/usart.rs11
-rw-r--r--examples/stm32h7/src/bin/usart_dma.rs11
6 files changed, 9 insertions, 63 deletions
diff --git a/examples/stm32h7/src/bin/blinky.rs b/examples/stm32h7/src/bin/blinky.rs
index 3291f5e81..b5e0c18a5 100644
--- a/examples/stm32h7/src/bin/blinky.rs
+++ b/examples/stm32h7/src/bin/blinky.rs
@@ -6,30 +6,29 @@
6 6
7#[path = "../example_common.rs"] 7#[path = "../example_common.rs"]
8mod example_common; 8mod example_common;
9use embassy::executor::Spawner;
10use embassy::time::{Duration, Timer};
11use embassy_stm32::dbgmcu::Dbgmcu;
9use embassy_stm32::gpio::{Level, Output, Speed}; 12use embassy_stm32::gpio::{Level, Output, Speed};
13use embassy_stm32::Peripherals;
10use embedded_hal::digital::v2::OutputPin; 14use embedded_hal::digital::v2::OutputPin;
11use example_common::*; 15use example_common::*;
12 16
13use cortex_m_rt::entry; 17#[embassy::main]
14use embassy_stm32::dbgmcu::Dbgmcu; 18async fn main(_spawner: Spawner, p: Peripherals) {
15
16#[entry]
17fn main() -> ! {
18 info!("Hello World!"); 19 info!("Hello World!");
19 20
20 unsafe { Dbgmcu::enable_all() }; 21 unsafe { Dbgmcu::enable_all() };
21 22
22 let p = embassy_stm32::init(Default::default());
23
24 let mut led = Output::new(p.PB14, Level::High, Speed::Low); 23 let mut led = Output::new(p.PB14, Level::High, Speed::Low);
25 24
26 loop { 25 loop {
27 info!("high"); 26 info!("high");
28 led.set_high().unwrap(); 27 led.set_high().unwrap();
29 cortex_m::asm::delay(10_000_000); 28 Timer::after(Duration::from_millis(500)).await;
30 29
31 info!("low"); 30 info!("low");
32 led.set_low().unwrap(); 31 led.set_low().unwrap();
33 cortex_m::asm::delay(10_000_000); 32 Timer::after(Duration::from_millis(500)).await;
34 } 33 }
35} 34}
diff --git a/examples/stm32h7/src/bin/eth.rs b/examples/stm32h7/src/bin/eth.rs
index 6c4ba6eb9..e8d13876a 100644
--- a/examples/stm32h7/src/bin/eth.rs
+++ b/examples/stm32h7/src/bin/eth.rs
@@ -19,7 +19,6 @@ use embassy_macros::interrupt_take;
19use embassy_net::{ 19use embassy_net::{
20 Config as NetConfig, Ipv4Address, Ipv4Cidr, StackResources, StaticConfigurator, TcpSocket, 20 Config as NetConfig, Ipv4Address, Ipv4Cidr, StackResources, StaticConfigurator, TcpSocket,
21}; 21};
22use embassy_stm32::clock::{Alarm, Clock};
23use embassy_stm32::dbgmcu::Dbgmcu; 22use embassy_stm32::dbgmcu::Dbgmcu;
24use embassy_stm32::eth::lan8742a::LAN8742A; 23use embassy_stm32::eth::lan8742a::LAN8742A;
25use embassy_stm32::eth::{Ethernet, State}; 24use embassy_stm32::eth::{Ethernet, State};
@@ -27,7 +26,7 @@ use embassy_stm32::rng::Random;
27use embassy_stm32::{interrupt, peripherals}; 26use embassy_stm32::{interrupt, peripherals};
28use heapless::Vec; 27use heapless::Vec;
29use panic_probe as _; 28use panic_probe as _;
30use peripherals::{RNG, TIM2}; 29use peripherals::RNG;
31 30
32#[embassy::task] 31#[embassy::task]
33async fn main_task( 32async fn main_task(
@@ -86,8 +85,6 @@ fn _embassy_rand(buf: &mut [u8]) {
86static mut RNG_INST: Option<Random<RNG>> = None; 85static mut RNG_INST: Option<Random<RNG>> = None;
87 86
88static EXECUTOR: Forever<Executor> = Forever::new(); 87static EXECUTOR: Forever<Executor> = Forever::new();
89static TIMER_RTC: Forever<Clock<TIM2>> = Forever::new();
90static ALARM: Forever<Alarm<TIM2>> = Forever::new();
91static STATE: Forever<State<'static, 4, 4>> = Forever::new(); 88static STATE: Forever<State<'static, 4, 4>> = Forever::new();
92static ETH: Forever<Ethernet<'static, LAN8742A, 4, 4>> = Forever::new(); 89static ETH: Forever<Ethernet<'static, LAN8742A, 4, 4>> = Forever::new();
93static CONFIG: Forever<StaticConfigurator> = Forever::new(); 90static CONFIG: Forever<StaticConfigurator> = Forever::new();
@@ -105,13 +102,6 @@ fn main() -> ! {
105 102
106 let p = embassy_stm32::init(config()); 103 let p = embassy_stm32::init(config());
107 104
108 let rtc_int = interrupt_take!(TIM2);
109 let rtc = TIMER_RTC.put(Clock::new(p.TIM2, rtc_int));
110 rtc.start();
111 let alarm = ALARM.put(rtc.alarm1());
112
113 unsafe { embassy::time::set_clock(rtc) };
114
115 let rng = Random::new(p.RNG); 105 let rng = Random::new(p.RNG);
116 unsafe { 106 unsafe {
117 RNG_INST.replace(rng); 107 RNG_INST.replace(rng);
@@ -136,7 +126,6 @@ fn main() -> ! {
136 let config = CONFIG.put(config); 126 let config = CONFIG.put(config);
137 127
138 let executor = EXECUTOR.put(Executor::new()); 128 let executor = EXECUTOR.put(Executor::new());
139 executor.set_alarm(alarm);
140 129
141 executor.run(move |spawner| { 130 executor.run(move |spawner| {
142 unwrap!(spawner.spawn(main_task(eth, config, spawner))); 131 unwrap!(spawner.spawn(main_task(eth, config, spawner)));
diff --git a/examples/stm32h7/src/bin/spi.rs b/examples/stm32h7/src/bin/spi.rs
index 5175538df..047b65849 100644
--- a/examples/stm32h7/src/bin/spi.rs
+++ b/examples/stm32h7/src/bin/spi.rs
@@ -9,7 +9,6 @@ mod example_common;
9 9
10use core::fmt::Write; 10use core::fmt::Write;
11use embassy::executor::Executor; 11use embassy::executor::Executor;
12use embassy::time::Clock;
13use embassy::util::Forever; 12use embassy::util::Forever;
14use embassy_stm32::dma::NoDma; 13use embassy_stm32::dma::NoDma;
15use embassy_stm32::spi; 14use embassy_stm32::spi;
@@ -38,14 +37,6 @@ async fn main_task(mut spi: spi::Spi<'static, SPI3, NoDma, NoDma>) {
38 } 37 }
39} 38}
40 39
41struct ZeroClock;
42
43impl Clock for ZeroClock {
44 fn now(&self) -> u64 {
45 0
46 }
47}
48
49static EXECUTOR: Forever<Executor> = Forever::new(); 40static EXECUTOR: Forever<Executor> = Forever::new();
50 41
51#[entry] 42#[entry]
@@ -69,7 +60,6 @@ fn main() -> ! {
69 spi::Config::default(), 60 spi::Config::default(),
70 ); 61 );
71 62
72 unsafe { embassy::time::set_clock(&ZeroClock) };
73 let executor = EXECUTOR.put(Executor::new()); 63 let executor = EXECUTOR.put(Executor::new());
74 64
75 executor.run(|spawner| { 65 executor.run(|spawner| {
diff --git a/examples/stm32h7/src/bin/spi_dma.rs b/examples/stm32h7/src/bin/spi_dma.rs
index 3b9043bc2..f11b7eb45 100644
--- a/examples/stm32h7/src/bin/spi_dma.rs
+++ b/examples/stm32h7/src/bin/spi_dma.rs
@@ -9,7 +9,6 @@ mod example_common;
9 9
10use core::fmt::Write; 10use core::fmt::Write;
11use embassy::executor::Executor; 11use embassy::executor::Executor;
12use embassy::time::Clock;
13use embassy::util::Forever; 12use embassy::util::Forever;
14use embassy_stm32::time::U32Ext; 13use embassy_stm32::time::U32Ext;
15use embassy_traits::spi::FullDuplex; 14use embassy_traits::spi::FullDuplex;
@@ -34,14 +33,6 @@ async fn main_task(mut spi: spi::Spi<'static, SPI3, DMA1_CH3, DMA1_CH4>) {
34 } 33 }
35} 34}
36 35
37struct ZeroClock;
38
39impl Clock for ZeroClock {
40 fn now(&self) -> u64 {
41 0
42 }
43}
44
45static EXECUTOR: Forever<Executor> = Forever::new(); 36static EXECUTOR: Forever<Executor> = Forever::new();
46 37
47#[entry] 38#[entry]
@@ -65,7 +56,6 @@ fn main() -> ! {
65 spi::Config::default(), 56 spi::Config::default(),
66 ); 57 );
67 58
68 unsafe { embassy::time::set_clock(&ZeroClock) };
69 let executor = EXECUTOR.put(Executor::new()); 59 let executor = EXECUTOR.put(Executor::new());
70 60
71 executor.run(|spawner| { 61 executor.run(|spawner| {
diff --git a/examples/stm32h7/src/bin/usart.rs b/examples/stm32h7/src/bin/usart.rs
index 5fa21b6a2..9c93d3f22 100644
--- a/examples/stm32h7/src/bin/usart.rs
+++ b/examples/stm32h7/src/bin/usart.rs
@@ -8,7 +8,6 @@
8mod example_common; 8mod example_common;
9use cortex_m::prelude::_embedded_hal_blocking_serial_Write; 9use cortex_m::prelude::_embedded_hal_blocking_serial_Write;
10use embassy::executor::Executor; 10use embassy::executor::Executor;
11use embassy::time::Clock;
12use embassy::util::Forever; 11use embassy::util::Forever;
13use embassy_stm32::dma::NoDma; 12use embassy_stm32::dma::NoDma;
14use embassy_stm32::usart::{Config, Uart}; 13use embassy_stm32::usart::{Config, Uart};
@@ -34,14 +33,6 @@ async fn main_task() {
34 } 33 }
35} 34}
36 35
37struct ZeroClock;
38
39impl Clock for ZeroClock {
40 fn now(&self) -> u64 {
41 0
42 }
43}
44
45static EXECUTOR: Forever<Executor> = Forever::new(); 36static EXECUTOR: Forever<Executor> = Forever::new();
46 37
47#[entry] 38#[entry]
@@ -52,8 +43,6 @@ fn main() -> ! {
52 Dbgmcu::enable_all(); 43 Dbgmcu::enable_all();
53 } 44 }
54 45
55 unsafe { embassy::time::set_clock(&ZeroClock) };
56
57 let executor = EXECUTOR.put(Executor::new()); 46 let executor = EXECUTOR.put(Executor::new());
58 47
59 executor.run(|spawner| { 48 executor.run(|spawner| {
diff --git a/examples/stm32h7/src/bin/usart_dma.rs b/examples/stm32h7/src/bin/usart_dma.rs
index 26cc3c5da..3f70a82b0 100644
--- a/examples/stm32h7/src/bin/usart_dma.rs
+++ b/examples/stm32h7/src/bin/usart_dma.rs
@@ -8,7 +8,6 @@
8mod example_common; 8mod example_common;
9use core::fmt::Write; 9use core::fmt::Write;
10use embassy::executor::Executor; 10use embassy::executor::Executor;
11use embassy::time::Clock;
12use embassy::util::Forever; 11use embassy::util::Forever;
13use embassy_stm32::dbgmcu::Dbgmcu; 12use embassy_stm32::dbgmcu::Dbgmcu;
14use embassy_stm32::dma::NoDma; 13use embassy_stm32::dma::NoDma;
@@ -36,14 +35,6 @@ async fn main_task() {
36 } 35 }
37} 36}
38 37
39struct ZeroClock;
40
41impl Clock for ZeroClock {
42 fn now(&self) -> u64 {
43 0
44 }
45}
46
47static EXECUTOR: Forever<Executor> = Forever::new(); 38static EXECUTOR: Forever<Executor> = Forever::new();
48 39
49#[entry] 40#[entry]
@@ -54,8 +45,6 @@ fn main() -> ! {
54 Dbgmcu::enable_all(); 45 Dbgmcu::enable_all();
55 } 46 }
56 47
57 unsafe { embassy::time::set_clock(&ZeroClock) };
58
59 let executor = EXECUTOR.put(Executor::new()); 48 let executor = EXECUTOR.put(Executor::new());
60 49
61 executor.run(|spawner| { 50 executor.run(|spawner| {