Merge commit '82f528927b2fde275c2e9b6fd737baf439cb296a'
This commit is contained in:
		
						commit
						ce0e1a5db3
					
				
							
								
								
									
										2
									
								
								ci.sh
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								ci.sh
									
									
									
									
									
								
							| @ -117,12 +117,14 @@ cargo batch  \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f429zi --out-dir out/tests/nucleo-stm32f429zi \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32g491re --out-dir out/tests/nucleo-stm32g491re \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32g071rb --out-dir out/tests/nucleo-stm32g071rb \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32c031c6 --out-dir out/tests/nucleo-stm32c031c6 \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32h755zi --out-dir out/tests/nucleo-stm32h755zi \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32wb55rg --out-dir out/tests/nucleo-stm32wb55rg \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32h563zi --out-dir out/tests/nucleo-stm32h563zi \ | ||||
|     --- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32u585ai --out-dir out/tests/iot-stm32u585ai \ | ||||
|     --- build --release --manifest-path tests/rp/Cargo.toml --target thumbv6m-none-eabi --out-dir out/tests/rpi-pico \ | ||||
|     --- build --release --manifest-path tests/nrf/Cargo.toml --target thumbv7em-none-eabi --out-dir out/tests/nrf52840-dk \ | ||||
|     --- build --release --manifest-path tests/riscv32/Cargo.toml --target riscv32imac-unknown-none-elf \ | ||||
|     $BUILD_EXTRA | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -27,7 +27,7 @@ defmt = { version = "0.3", optional = true } | ||||
| digest = "0.10" | ||||
| log = { version = "0.4", optional = true  } | ||||
| ed25519-dalek = { version = "1.0.1", default_features = false, features = ["u32_backend"], optional = true } | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync" } | ||||
| embedded-storage = "0.3.0" | ||||
| embedded-storage-async = { version = "0.4.0", optional = true} | ||||
| salty = { git = "https://github.com/ycrypto/salty.git", rev = "a9f17911a5024698406b75c0fac56ab5ccf6a8c7", optional = true } | ||||
|  | ||||
| @ -36,7 +36,7 @@ prio-bits-8 = [] | ||||
| defmt = { version = "0.3", optional = true } | ||||
| log = { version = "0.4.14", optional = true } | ||||
| 
 | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../embassy-executor"} | ||||
| embassy-macros = { version = "0.1.0", path = "../embassy-macros"} | ||||
| embassy-hal-common = { version = "0.1.0", path = "../embassy-hal-common"} | ||||
|  | ||||
| @ -17,7 +17,7 @@ std = [] | ||||
| nightly = ["embedded-hal-async", "embedded-storage-async"] | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embedded-hal-02 = { package = "embedded-hal", version = "0.2.6", features = ["unproven"] } | ||||
| embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.10" } | ||||
| embedded-hal-async = { version = "=0.2.0-alpha.1", optional = true } | ||||
|  | ||||
| @ -8,6 +8,9 @@ mod thread { | ||||
|     use core::marker::PhantomData; | ||||
|     use core::sync::atomic::{AtomicBool, Ordering}; | ||||
| 
 | ||||
|     #[cfg(feature = "nightly")] | ||||
|     pub use embassy_macros::main_riscv as main; | ||||
| 
 | ||||
|     use crate::raw::{Pender, PenderInner}; | ||||
|     use crate::{raw, Spawner}; | ||||
| 
 | ||||
|  | ||||
| @ -92,7 +92,7 @@ macro_rules! impl_peripheral { | ||||
|             type P = $type; | ||||
| 
 | ||||
|             #[inline] | ||||
|             unsafe fn clone_unchecked(&mut self) -> Self::P { | ||||
|             unsafe fn clone_unchecked(&self) -> Self::P { | ||||
|                 $type { ..*self } | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -39,7 +39,7 @@ impl<'a, T> PeripheralRef<'a, T> { | ||||
|     /// You should strongly prefer using `reborrow()` instead. It returns a
 | ||||
|     /// `PeripheralRef` that borrows `self`, which allows the borrow checker
 | ||||
|     /// to enforce this at compile time.
 | ||||
|     pub unsafe fn clone_unchecked(&mut self) -> PeripheralRef<'a, T> | ||||
|     pub unsafe fn clone_unchecked(&self) -> PeripheralRef<'a, T> | ||||
|     where | ||||
|         T: Peripheral<P = T>, | ||||
|     { | ||||
| @ -146,14 +146,14 @@ pub trait Peripheral: Sized { | ||||
|     ///
 | ||||
|     /// You should strongly prefer using `into_ref()` instead. It returns a
 | ||||
|     /// `PeripheralRef`, which allows the borrow checker to enforce this at compile time.
 | ||||
|     unsafe fn clone_unchecked(&mut self) -> Self::P; | ||||
|     unsafe fn clone_unchecked(&self) -> Self::P; | ||||
| 
 | ||||
|     /// Convert a value into a `PeripheralRef`.
 | ||||
|     ///
 | ||||
|     /// When called on an owned `T`, yields a `PeripheralRef<'static, T>`.
 | ||||
|     /// When called on an `&'a mut T`, yields a `PeripheralRef<'a, T>`.
 | ||||
|     #[inline] | ||||
|     fn into_ref<'a>(mut self) -> PeripheralRef<'a, Self::P> | ||||
|     fn into_ref<'a>(self) -> PeripheralRef<'a, Self::P> | ||||
|     where | ||||
|         Self: 'a, | ||||
|     { | ||||
| @ -161,14 +161,14 @@ pub trait Peripheral: Sized { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl<'b, T: DerefMut> Peripheral for T | ||||
| impl<'b, T: Deref> Peripheral for T | ||||
| where | ||||
|     T::Target: Peripheral, | ||||
| { | ||||
|     type P = <T::Target as Peripheral>::P; | ||||
| 
 | ||||
|     #[inline] | ||||
|     unsafe fn clone_unchecked(&mut self) -> Self::P { | ||||
|         self.deref_mut().clone_unchecked() | ||||
|     unsafe fn clone_unchecked(&self) -> Self::P { | ||||
|         self.deref().clone_unchecked() | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -29,7 +29,7 @@ defmt = { version = "0.3", optional = true } | ||||
| log = { version = "0.4.14", optional = true } | ||||
| 
 | ||||
| embassy-time = { version = "0.1.0", path = "../embassy-time" } | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../embassy-stm32", default-features = false, optional = true } | ||||
| embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.10" } | ||||
| embedded-hal-async = { version = "=0.2.0-alpha.1" } | ||||
|  | ||||
| @ -13,6 +13,6 @@ target = "thumbv7em-none-eabi" | ||||
| defmt = { version = "0.3", optional = true } | ||||
| log = { version = "0.4.14", optional = true } | ||||
| 
 | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-futures = { version = "0.1.0", path = "../embassy-futures" } | ||||
| embassy-net-driver = { version = "0.1.0", path = "../embassy-net-driver" } | ||||
|  | ||||
| @ -43,7 +43,7 @@ smoltcp = { version = "0.9.0", default-features = false, features = [ | ||||
| embassy-net-driver = { version = "0.1.0", path = "../embassy-net-driver" } | ||||
| embassy-hal-common = { version = "0.1.0", path = "../embassy-hal-common" } | ||||
| embassy-time = { version = "0.1.0", path = "../embassy-time" } | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embedded-io = { version = "0.4.0", optional = true } | ||||
| 
 | ||||
| managed = { version = "0.8.0", default-features = false, features = [ "map" ] } | ||||
|  | ||||
| @ -80,7 +80,7 @@ _gpio-p1 = [] | ||||
| [dependencies] | ||||
| embassy-executor = { version = "0.1.0", path = "../embassy-executor", optional = true } | ||||
| embassy-time = { version = "0.1.0", path = "../embassy-time", optional = true } | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-cortex-m = { version = "0.1.0", path = "../embassy-cortex-m", features = ["prio-bits-3"]} | ||||
| embassy-hal-common = {version = "0.1.0", path = "../embassy-hal-common" } | ||||
| embassy-embedded-hal = {version = "0.1.0", path = "../embassy-embedded-hal" } | ||||
|  | ||||
| @ -342,7 +342,7 @@ impl<'d, U: UarteInstance, T: TimerInstance> BufferedUarte<'d, U, T> { | ||||
|         r.enable.write(|w| w.enable().enabled()); | ||||
| 
 | ||||
|         // Configure byte counter.
 | ||||
|         let mut timer = Timer::new_counter(timer); | ||||
|         let timer = Timer::new_counter(timer); | ||||
|         timer.cc(1).write(rx_buffer.len() as u32 * 2); | ||||
|         timer.cc(1).short_compare_clear(); | ||||
|         timer.clear(); | ||||
|  | ||||
| @ -315,7 +315,7 @@ impl<'d, const N: usize> Saadc<'d, N> { | ||||
|             Ppi::new_one_to_one(ppi_ch1, Event::from_reg(&r.events_end), Task::from_reg(&r.tasks_start)); | ||||
|         start_ppi.enable(); | ||||
| 
 | ||||
|         let mut timer = Timer::new(timer); | ||||
|         let timer = Timer::new(timer); | ||||
|         timer.set_frequency(frequency); | ||||
|         timer.cc(0).write(sample_counter); | ||||
|         timer.cc(0).short_compare_clear(); | ||||
|  | ||||
| @ -117,7 +117,7 @@ impl<'d, T: Instance> Timer<'d, T> { | ||||
| 
 | ||||
|         let regs = T::regs(); | ||||
| 
 | ||||
|         let mut this = Self { _p: timer }; | ||||
|         let this = Self { _p: timer }; | ||||
| 
 | ||||
|         // Stop the timer before doing anything else,
 | ||||
|         // since changing BITMODE while running can cause 'unpredictable behaviour' according to the specification.
 | ||||
| @ -213,13 +213,13 @@ impl<'d, T: Instance> Timer<'d, T> { | ||||
|     ///
 | ||||
|     /// # Panics
 | ||||
|     /// Panics if `n` >= the number of CC registers this timer has (4 for a normal timer, 6 for an extended timer).
 | ||||
|     pub fn cc(&mut self, n: usize) -> Cc<T> { | ||||
|     pub fn cc(&self, n: usize) -> Cc<'d, T> { | ||||
|         if n >= T::CCS { | ||||
|             panic!("Cannot get CC register {} of timer with {} CC registers.", n, T::CCS); | ||||
|         } | ||||
|         Cc { | ||||
|             n, | ||||
|             _p: self._p.reborrow(), | ||||
|             _p: unsafe { self._p.clone_unchecked() }, | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -205,7 +205,7 @@ impl<'d, T: Instance> Uarte<'d, T> { | ||||
|         ppi_ch1: impl Peripheral<P = impl ConfigurableChannel + 'd> + 'd, | ||||
|         ppi_ch2: impl Peripheral<P = impl ConfigurableChannel + 'd> + 'd, | ||||
|     ) -> (UarteTx<'d, T>, UarteRxWithIdle<'d, T, U>) { | ||||
|         let mut timer = Timer::new(timer); | ||||
|         let timer = Timer::new(timer); | ||||
| 
 | ||||
|         into_ref!(ppi_ch1, ppi_ch2); | ||||
| 
 | ||||
|  | ||||
| @ -153,7 +153,7 @@ impl<'d, T: Instance, V: VbusDetect + 'd> driver::Driver<'d> for Driver<'d, T, V | ||||
|         })) | ||||
|     } | ||||
| 
 | ||||
|     fn start(mut self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) { | ||||
|     fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe) { | ||||
|         ( | ||||
|             Bus { | ||||
|                 _p: unsafe { self._p.clone_unchecked() }, | ||||
|  | ||||
| @ -39,7 +39,7 @@ nightly = ["embassy-executor/nightly", "embedded-hal-1", "embedded-hal-async", " | ||||
| unstable-traits = ["embedded-hal-1", "embedded-hal-nb"] | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../embassy-executor" } | ||||
| embassy-time = { version = "0.1.0", path = "../embassy-time", features = [ "tick-hz-1_000_000" ] } | ||||
| embassy-futures = { version = "0.1.0", path = "../embassy-futures" } | ||||
|  | ||||
| @ -31,7 +31,7 @@ flavors = [ | ||||
| ] | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../embassy-executor" } | ||||
| embassy-time = { version = "0.1.0", path = "../embassy-time", optional = true } | ||||
| embassy-futures = { version = "0.1.0", path = "../embassy-futures" } | ||||
| @ -58,7 +58,7 @@ sdio-host = "0.5.0" | ||||
| embedded-sdmmc = { git = "https://github.com/embassy-rs/embedded-sdmmc-rs", rev = "46d1b1c2ff13e31e282ec1e352421721694f126a", optional = true } | ||||
| critical-section = "1.1" | ||||
| atomic-polyfill = "1.0.1" | ||||
| stm32-metapac = "5" | ||||
| stm32-metapac = "6" | ||||
| vcell = "0.1.3" | ||||
| bxcan = "0.7.0" | ||||
| nb = "1.0.0" | ||||
| @ -73,7 +73,7 @@ critical-section = { version = "1.1", features = ["std"] } | ||||
| [build-dependencies] | ||||
| proc-macro2 = "1.0.36" | ||||
| quote = "1.0.15" | ||||
| stm32-metapac = { version = "5", default-features = false, features = ["metadata"]} | ||||
| stm32-metapac = { version = "6", default-features = false, features = ["metadata"]} | ||||
| 
 | ||||
| [features] | ||||
| default = ["stm32-metapac/rt"] | ||||
|  | ||||
| @ -180,7 +180,7 @@ fn main() { | ||||
| 
 | ||||
|         #[cfg(flash)] | ||||
|         impl<'d> FlashLayout<'d> { | ||||
|             pub(crate) fn new(mut p: embassy_hal_common::PeripheralRef<'d, crate::peripherals::FLASH>) -> Self { | ||||
|             pub(crate) fn new(p: embassy_hal_common::PeripheralRef<'d, crate::peripherals::FLASH>) -> Self { | ||||
|                 Self { | ||||
|                     #(#inits),* | ||||
|                 } | ||||
|  | ||||
| @ -33,8 +33,7 @@ impl<'d> Flash<'d> { | ||||
|     } | ||||
| 
 | ||||
|     pub(crate) fn release(self) -> PeripheralRef<'d, crate::peripherals::FLASH> { | ||||
|         let mut flash = self; | ||||
|         unsafe { flash.inner.clone_unchecked() } | ||||
|         unsafe { self.inner.clone_unchecked() } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -67,7 +67,7 @@ mod alt_regions { | ||||
| 
 | ||||
|             // SAFETY: We never expose the cloned peripheral references, and their instance is not public.
 | ||||
|             // Also, all flash region operations are protected with a cs.
 | ||||
|             let mut p = self.release(); | ||||
|             let p = self.release(); | ||||
|             AltFlashLayout { | ||||
|                 bank1_region1: Bank1Region1(&BANK1_REGION1, unsafe { p.clone_unchecked() }), | ||||
|                 bank1_region2: Bank1Region2(&BANK1_REGION2, unsafe { p.clone_unchecked() }), | ||||
|  | ||||
| @ -29,7 +29,7 @@ impl<'d, T: Pin> Flex<'d, T> { | ||||
|     } | ||||
| 
 | ||||
|     #[inline] | ||||
|     pub fn degrade(mut self) -> Flex<'d, AnyPin> { | ||||
|     pub fn degrade(self) -> Flex<'d, AnyPin> { | ||||
|         // Safety: We are about to drop the other copy of this pin, so
 | ||||
|         // this clone is safe.
 | ||||
|         let pin = unsafe { self.pin.clone_unchecked() }; | ||||
|  | ||||
| @ -148,7 +148,7 @@ impl Into<Pllp> for PLLMainDiv { | ||||
|         match self { | ||||
|             PLLMainDiv::Div2 => Pllp::DIV2, | ||||
|             PLLMainDiv::Div4 => Pllp::DIV4, | ||||
|             PLLMainDiv::Div6 => Pllp::DIV8, | ||||
|             PLLMainDiv::Div6 => Pllp::DIV6, | ||||
|             PLLMainDiv::Div8 => Pllp::DIV8, | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -8,31 +8,31 @@ use core::ops::{Div, Mul}; | ||||
| pub struct Hertz(pub u32); | ||||
| 
 | ||||
| impl Hertz { | ||||
|     pub fn hz(hertz: u32) -> Self { | ||||
|     pub const fn hz(hertz: u32) -> Self { | ||||
|         Self(hertz) | ||||
|     } | ||||
| 
 | ||||
|     pub fn khz(kilohertz: u32) -> Self { | ||||
|     pub const fn khz(kilohertz: u32) -> Self { | ||||
|         Self(kilohertz * 1_000) | ||||
|     } | ||||
| 
 | ||||
|     pub fn mhz(megahertz: u32) -> Self { | ||||
|     pub const fn mhz(megahertz: u32) -> Self { | ||||
|         Self(megahertz * 1_000_000) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// This is a convenience shortcut for [`Hertz::hz`]
 | ||||
| pub fn hz(hertz: u32) -> Hertz { | ||||
| pub const fn hz(hertz: u32) -> Hertz { | ||||
|     Hertz::hz(hertz) | ||||
| } | ||||
| 
 | ||||
| /// This is a convenience shortcut for [`Hertz::khz`]
 | ||||
| pub fn khz(kilohertz: u32) -> Hertz { | ||||
| pub const fn khz(kilohertz: u32) -> Hertz { | ||||
|     Hertz::khz(kilohertz) | ||||
| } | ||||
| 
 | ||||
| /// This is a convenience shortcut for [`Hertz::mhz`]
 | ||||
| pub fn mhz(megahertz: u32) -> Hertz { | ||||
| pub const fn mhz(megahertz: u32) -> Hertz { | ||||
|     Hertz::mhz(megahertz) | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										22
									
								
								embassy-sync/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								embassy-sync/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| # Changelog | ||||
| 
 | ||||
| All notable changes to this project will be documented in this file. | ||||
| 
 | ||||
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||||
| and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||||
| 
 | ||||
| ## 0.2.0 - 2023-04-13 | ||||
| 
 | ||||
| - pubsub: Fix messages not getting popped when the last subscriber that needed them gets dropped. | ||||
| - pubsub: Move instead of clone messages when the last subscriber pops them. | ||||
| - pubsub: Pop messages which count is 0 after unsubscribe. | ||||
| - Update `embedded-io` from `0.3` to `0.4` (uses `async fn` in traits). | ||||
| - impl `Default` for `WakerRegistration` | ||||
| - impl `Default` for `Signal` | ||||
| - Remove unnecessary uses of `atomic-polyfill` | ||||
| - Add `#[must_use]` to all futures. | ||||
| 
 | ||||
| 
 | ||||
| ## 0.1.0 - 2022-08-26 | ||||
| 
 | ||||
| - First release | ||||
| @ -1,6 +1,6 @@ | ||||
| [package] | ||||
| name = "embassy-sync" | ||||
| version = "0.1.0" | ||||
| version = "0.2.0" | ||||
| edition = "2021" | ||||
| description = "no-std, no-alloc synchronization primitives with async support" | ||||
| repository = "https://github.com/embassy-rs/embassy" | ||||
|  | ||||
							
								
								
									
										24
									
								
								embassy-time/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								embassy-time/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| # Changelog | ||||
| 
 | ||||
| All notable changes to this project will be documented in this file. | ||||
| 
 | ||||
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||||
| and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||||
| 
 | ||||
| ## 0.1.1 - 2023-04-13 | ||||
| 
 | ||||
| - Update `embedded-hal-async` to `0.2.0-alpha.1` (uses `async fn` in traits). | ||||
| - Update `embedded-hal v1` to `1.0.0-alpha.10`. (Note: v0.2 support is kept unchanged). | ||||
| - Remove dep on `embassy-sync`. | ||||
| - Fix reentrancy issues in the `std` time driver (#1177) | ||||
| - Add `Duration::from_hz()`. | ||||
| - impl `From` conversions to/from `core::time::Duration`. | ||||
| - Add `#[must_use]` to all futures. | ||||
| - Add inherent `async fn tick()` to `Ticker`, so you can use it directly without the `Stream` trait. | ||||
| - Add more tick rates. | ||||
| - impl `Default` for `Signal` | ||||
| - Remove unnecessary uses of `atomic-polyfill` | ||||
| 
 | ||||
| ## 0.1.0 - 2022-08-26 | ||||
| 
 | ||||
| - First release | ||||
| @ -1,6 +1,6 @@ | ||||
| [package] | ||||
| name = "embassy-time" | ||||
| version = "0.1.0" | ||||
| version = "0.1.1" | ||||
| edition = "2021" | ||||
| description = "Instant and Duration for embedded no-std systems, with async timer support" | ||||
| repository = "https://github.com/embassy-rs/embassy" | ||||
| @ -156,7 +156,6 @@ embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.10", option | ||||
| embedded-hal-async = { version = "=0.2.0-alpha.1", optional = true} | ||||
| 
 | ||||
| futures-util = { version = "0.3.17", default-features = false } | ||||
| embassy-sync = { version = "0.1", path = "../embassy-sync" } | ||||
| atomic-polyfill = "1.0.1" | ||||
| critical-section = "1.1" | ||||
| cfg-if = "1.0.0" | ||||
|  | ||||
| @ -5,8 +5,7 @@ use std::time::{Duration as StdDuration, Instant as StdInstant}; | ||||
| use std::{mem, ptr, thread}; | ||||
| 
 | ||||
| use atomic_polyfill::{AtomicU8, Ordering}; | ||||
| use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; | ||||
| use embassy_sync::blocking_mutex::Mutex as EmbassyMutex; | ||||
| use critical_section::Mutex as CsMutex; | ||||
| 
 | ||||
| use crate::driver::{AlarmHandle, Driver}; | ||||
| 
 | ||||
| @ -40,7 +39,7 @@ struct TimeDriver { | ||||
|     // The STD Driver implementation requires the alarms' mutex to be reentrant, which the STD Mutex isn't
 | ||||
|     // Fortunately, mutexes based on the `critical-section` crate are reentrant, because the critical sections
 | ||||
|     // themselves are reentrant
 | ||||
|     alarms: UninitCell<EmbassyMutex<CriticalSectionRawMutex, RefCell<[AlarmState; ALARM_COUNT]>>>, | ||||
|     alarms: UninitCell<CsMutex<RefCell<[AlarmState; ALARM_COUNT]>>>, | ||||
|     zero_instant: UninitCell<StdInstant>, | ||||
|     signaler: UninitCell<Signaler>, | ||||
| } | ||||
| @ -58,8 +57,7 @@ crate::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { | ||||
| impl TimeDriver { | ||||
|     fn init(&self) { | ||||
|         self.once.call_once(|| unsafe { | ||||
|             self.alarms | ||||
|                 .write(EmbassyMutex::new(RefCell::new([ALARM_NEW; ALARM_COUNT]))); | ||||
|             self.alarms.write(CsMutex::new(RefCell::new([ALARM_NEW; ALARM_COUNT]))); | ||||
|             self.zero_instant.write(StdInstant::now()); | ||||
|             self.signaler.write(Signaler::new()); | ||||
| 
 | ||||
| @ -72,7 +70,8 @@ impl TimeDriver { | ||||
|         loop { | ||||
|             let now = DRIVER.now(); | ||||
| 
 | ||||
|             let next_alarm = unsafe { DRIVER.alarms.as_ref() }.lock(|alarms| { | ||||
|             let next_alarm = critical_section::with(|cs| { | ||||
|                 let alarms = unsafe { DRIVER.alarms.as_ref() }.borrow(cs); | ||||
|                 loop { | ||||
|                     let pending = alarms | ||||
|                         .borrow_mut() | ||||
| @ -139,8 +138,8 @@ impl Driver for TimeDriver { | ||||
| 
 | ||||
|     fn set_alarm_callback(&self, alarm: AlarmHandle, callback: fn(*mut ()), ctx: *mut ()) { | ||||
|         self.init(); | ||||
|         unsafe { self.alarms.as_ref() }.lock(|alarms| { | ||||
|             let mut alarms = alarms.borrow_mut(); | ||||
|         critical_section::with(|cs| { | ||||
|             let mut alarms = unsafe { self.alarms.as_ref() }.borrow_ref_mut(cs); | ||||
|             let alarm = &mut alarms[alarm.id() as usize]; | ||||
|             alarm.callback = callback as *const (); | ||||
|             alarm.ctx = ctx; | ||||
| @ -149,9 +148,8 @@ impl Driver for TimeDriver { | ||||
| 
 | ||||
|     fn set_alarm(&self, alarm: AlarmHandle, timestamp: u64) -> bool { | ||||
|         self.init(); | ||||
|         unsafe { self.alarms.as_ref() }.lock(|alarms| { | ||||
|             let mut alarms = alarms.borrow_mut(); | ||||
| 
 | ||||
|         critical_section::with(|cs| { | ||||
|             let mut alarms = unsafe { self.alarms.as_ref() }.borrow_ref_mut(cs); | ||||
|             let alarm = &mut alarms[alarm.id() as usize]; | ||||
|             alarm.timestamp = timestamp; | ||||
|             unsafe { self.signaler.as_ref() }.signal(); | ||||
|  | ||||
| @ -2,8 +2,7 @@ use core::cell::RefCell; | ||||
| use core::cmp::{min, Ordering}; | ||||
| use core::task::Waker; | ||||
| 
 | ||||
| use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; | ||||
| use embassy_sync::blocking_mutex::Mutex; | ||||
| use critical_section::Mutex; | ||||
| use heapless::Vec; | ||||
| 
 | ||||
| use crate::driver::{allocate_alarm, set_alarm, set_alarm_callback, AlarmHandle}; | ||||
| @ -129,7 +128,7 @@ impl InnerQueue { | ||||
| } | ||||
| 
 | ||||
| struct Queue { | ||||
|     inner: Mutex<CriticalSectionRawMutex, RefCell<Option<InnerQueue>>>, | ||||
|     inner: Mutex<RefCell<Option<InnerQueue>>>, | ||||
| } | ||||
| 
 | ||||
| impl Queue { | ||||
| @ -140,8 +139,8 @@ impl Queue { | ||||
|     } | ||||
| 
 | ||||
|     fn schedule_wake(&'static self, at: Instant, waker: &Waker) { | ||||
|         self.inner.lock(|inner| { | ||||
|             let mut inner = inner.borrow_mut(); | ||||
|         critical_section::with(|cs| { | ||||
|             let mut inner = self.inner.borrow_ref_mut(cs); | ||||
| 
 | ||||
|             if inner.is_none() {} | ||||
| 
 | ||||
| @ -159,8 +158,7 @@ impl Queue { | ||||
|     } | ||||
| 
 | ||||
|     fn handle_alarm(&self) { | ||||
|         self.inner | ||||
|             .lock(|inner| inner.borrow_mut().as_mut().unwrap().handle_alarm()); | ||||
|         critical_section::with(|cs| self.inner.borrow_ref_mut(cs).as_mut().unwrap().handle_alarm()) | ||||
|     } | ||||
| 
 | ||||
|     fn handle_alarm_callback(ctx: *mut ()) { | ||||
|  | ||||
| @ -10,7 +10,7 @@ target = "thumbv7em-none-eabi" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-usb = { version = "0.1.0", path = "../embassy-usb" } | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-futures = { version = "0.1.0", path = "../embassy-futures" } | ||||
| futures = { version = "0.3", default-features = false } | ||||
| static_cell = "1" | ||||
|  | ||||
| @ -41,7 +41,7 @@ max-handler-count-8 = [] | ||||
| [dependencies] | ||||
| embassy-futures = { version = "0.1.0", path = "../embassy-futures" } | ||||
| embassy-usb-driver = { version = "0.1.0", path = "../embassy-usb-driver" } | ||||
| embassy-sync = { version = "0.1.0", path = "../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../embassy-sync" } | ||||
| embassy-net-driver-channel = { version = "0.1.0", path = "../embassy-net-driver-channel" } | ||||
| 
 | ||||
| defmt = { version = "0.3", optional = true } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers", "arch-cortex-m", "executor-thread"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly"] } | ||||
| embassy-nrf = { version = "0.1.0", path = "../../../../embassy-nrf", features = ["time-driver-rtc1", "gpiote", "nightly"] } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers", "arch-cortex-m", "executor-thread"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly"] } | ||||
| embassy-rp = { version = "0.1.0", path = "../../../../embassy-rp", features = ["time-driver", "unstable-traits", "nightly"] } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32f303re", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32f767zi", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32h743zi", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l072cz", "time-driver-any", "exti", "memory-x"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l151cb-a", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32l475vg", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../../../embassy-time", features = ["nightly", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../../../embassy-stm32", features = ["unstable-traits", "nightly", "stm32wl55jc-cm4", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -16,7 +16,7 @@ log = [ | ||||
| ] | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync" } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "rtos-trace", "rtos-trace-interrupt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time" } | ||||
| embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac"] } | ||||
|  | ||||
| @ -11,7 +11,7 @@ nightly = ["embassy-executor/nightly", "embassy-nrf/nightly", "embassy-net/night | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } | ||||
| embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac", "time"] } | ||||
|  | ||||
| @ -6,7 +6,7 @@ license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = [ | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = [ | ||||
|     "defmt", | ||||
| ] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread",  | ||||
|  | ||||
| @ -7,7 +7,7 @@ license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime"] } | ||||
| embassy-rp = { version = "0.1.0", path = "../../embassy-rp", features = ["defmt", "unstable-traits", "nightly", "unstable-pac", "time-driver", "pio", "critical-section-impl"] } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["log"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["log"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-std", "executor-thread", "log", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["log", "std", "nightly"] } | ||||
| embassy-net = { version = "0.1.0", path = "../../embassy-net", features=[ "std", "nightly", "log", "medium-ethernet", "tcp", "udp", "dns", "dhcpv4", "unstable-traits", "proto-ipv6"] } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "time-driver-any", "stm32c031c6", "memory-x", "unstable-pac", "exti"]  } | ||||
|  | ||||
| @ -12,7 +12,7 @@ cortex-m-rt = "0.7.0" | ||||
| defmt = "0.3" | ||||
| defmt-rtt = "0.4" | ||||
| panic-probe = "0.3" | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "memory-x", "stm32f091rc", "time-driver-any", "exti", "unstable-pac"] } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f103c8", "unstable-pac", "memory-x", "time-driver-any", "unstable-traits" ]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f207zg", "unstable-pac", "memory-x", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f303ze", "unstable-pac", "memory-x", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt", "integrated-timers", "arch-cortex-m", "executor-thread", "executor-interrupt"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "unstable-traits", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32f429zi", "unstable-pac", "memory-x", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32f767zi", "unstable-pac", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "time-driver-any", "stm32g071rb", "memory-x", "unstable-pac", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "time-driver-any", "stm32g491re", "memory-x", "unstable-pac", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "unstable-traits", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32h563zi", "time-driver-any", "exti", "unstable-pac", "unstable-traits"] } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "unstable-traits", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32h743bi", "time-driver-any", "exti", "unstable-pac", "unstable-traits"] } | ||||
|  | ||||
| @ -9,7 +9,7 @@ default = ["nightly"] | ||||
| nightly = ["embassy-stm32/nightly", "embassy-lora", "lorawan-device", "lorawan", "embedded-io/async"] | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["defmt", "stm32l072cz", "time-driver-any", "exti", "unstable-traits", "memory-x"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32l151cb-a", "time-driver-any", "memory-x"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal" } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "stm32l552ze", "time-driver-any", "exti", "unstable-traits", "memory-x"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "stm32u585ai", "time-driver-any", "memory-x" ]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wb55cc", "time-driver-any", "exti"]  } | ||||
|  | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wl55jc-cm4", "time-driver-any", "memory-x", "unstable-pac", "exti"]  } | ||||
|  | ||||
| @ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" | ||||
| crate-type = ["cdylib"] | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["log"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["log"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-wasm", "executor-thread", "log", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["log", "wasm", "nightly"] } | ||||
| 
 | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| # Before upgrading check that everything is available on all tier1 targets here: | ||||
| # https://rust-lang.github.io/rustup-components-history | ||||
| [toolchain] | ||||
| channel = "nightly-2023-04-02" | ||||
| channel = "nightly-2023-04-11" | ||||
| components = [ "rust-src", "rustfmt", "llvm-tools-preview" ] | ||||
| targets = [ | ||||
|     "thumbv7em-none-eabi", | ||||
|  | ||||
| @ -6,7 +6,7 @@ license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt", "nightly"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt", "nightly"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "nightly", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "nightly", "defmt-timestamp-uptime"] } | ||||
| embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["defmt", "nightly", "unstable-traits", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac"] } | ||||
|  | ||||
							
								
								
									
										5
									
								
								tests/riscv32/.cargo/config.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tests/riscv32/.cargo/config.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| [target.riscv32imac-unknown-none-elf] | ||||
| runner = "true" | ||||
| 
 | ||||
| [build] | ||||
| target = "riscv32imac-unknown-none-elf" | ||||
							
								
								
									
										46
									
								
								tests/riscv32/Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								tests/riscv32/Cargo.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| [package] | ||||
| edition = "2021" | ||||
| name = "embassy-riscv-tests" | ||||
| version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| critical-section = { version = "1.1.1", features = ["restore-state-bool"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync" } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-riscv32", "nightly", "executor-thread"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time" } | ||||
| embassy-futures = { version = "0.1.0", path = "../../embassy-futures" } | ||||
| 
 | ||||
| riscv-rt = "0.11" | ||||
| riscv = { version = "0.10", features = ["critical-section-single-hart"] } | ||||
| 
 | ||||
| 
 | ||||
| [profile.dev] | ||||
| debug = 2 | ||||
| debug-assertions = true | ||||
| opt-level = 's' | ||||
| overflow-checks = true | ||||
| 
 | ||||
| [profile.release] | ||||
| codegen-units = 1 | ||||
| debug = 2 | ||||
| debug-assertions = false | ||||
| incremental = false | ||||
| lto = "fat" | ||||
| opt-level = 's' | ||||
| overflow-checks = false | ||||
| 
 | ||||
| # do not optimize proc-macro crates = faster builds from scratch | ||||
| [profile.dev.build-override] | ||||
| codegen-units = 8 | ||||
| debug = false | ||||
| debug-assertions = false | ||||
| opt-level = 0 | ||||
| overflow-checks = false | ||||
| 
 | ||||
| [profile.release.build-override] | ||||
| codegen-units = 8 | ||||
| debug = false | ||||
| debug-assertions = false | ||||
| opt-level = 0 | ||||
| overflow-checks = false | ||||
							
								
								
									
										8
									
								
								tests/riscv32/build.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								tests/riscv32/build.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| use std::error::Error; | ||||
| 
 | ||||
| fn main() -> Result<(), Box<dyn Error>> { | ||||
|     println!("cargo:rustc-link-arg-bins=-Tmemory.x"); | ||||
|     println!("cargo:rustc-link-arg-bins=-Tlink.x"); | ||||
| 
 | ||||
|     Ok(()) | ||||
| } | ||||
							
								
								
									
										14
									
								
								tests/riscv32/memory.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								tests/riscv32/memory.x
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| MEMORY | ||||
| { | ||||
|   ROM : ORIGIN = 0x80000000, LENGTH = 0x00020000 | ||||
|   RAM : ORIGIN = 0x84000000, LENGTH = 0x00008000 | ||||
| } | ||||
| 
 | ||||
| REGION_ALIAS("REGION_TEXT", ROM); | ||||
| REGION_ALIAS("REGION_RODATA", ROM); | ||||
| REGION_ALIAS("REGION_DATA", RAM); | ||||
| REGION_ALIAS("REGION_BSS", RAM); | ||||
| REGION_ALIAS("REGION_HEAP", RAM); | ||||
| REGION_ALIAS("REGION_STACK", RAM); | ||||
| 
 | ||||
| _stack_start = ORIGIN(RAM) + LENGTH(RAM) - 4; | ||||
							
								
								
									
										16
									
								
								tests/riscv32/src/bin/empty.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								tests/riscv32/src/bin/empty.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| #![no_std] | ||||
| #![no_main] | ||||
| #![feature(type_alias_impl_trait)] | ||||
| 
 | ||||
| use embassy_executor::Spawner; | ||||
| 
 | ||||
| #[panic_handler] | ||||
| fn panic(_info: &core::panic::PanicInfo) -> ! { | ||||
|     loop {} | ||||
| } | ||||
| 
 | ||||
| #[embassy_executor::main] | ||||
| async fn main(_spawner: Spawner) { | ||||
|     // Don't do anything, just make sure it compiles.
 | ||||
|     loop {} | ||||
| } | ||||
| @ -5,7 +5,7 @@ version = "0.1.0" | ||||
| license = "MIT OR Apache-2.0" | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt"] } | ||||
| embassy-rp = { version = "0.1.0", path = "../../embassy-rp", features = ["nightly", "defmt", "unstable-pac", "unstable-traits", "time-driver", "critical-section-impl"]  } | ||||
|  | ||||
| @ -8,6 +8,7 @@ license = "MIT OR Apache-2.0" | ||||
| stm32f103c8 = ["embassy-stm32/stm32f103c8"]     # Blue Pill | ||||
| stm32f429zi = ["embassy-stm32/stm32f429zi"]     # Nucleo | ||||
| stm32g071rb = ["embassy-stm32/stm32g071rb"]     # Nucleo | ||||
| stm32c031c6 = ["embassy-stm32/stm32c031c6"]     # Nucleo | ||||
| stm32g491re = ["embassy-stm32/stm32g491re"]     # Nucleo | ||||
| stm32h755zi = ["embassy-stm32/stm32h755zi-cm7"] # Nucleo | ||||
| stm32wb55rg = ["embassy-stm32/stm32wb55rg"]     # Nucleo | ||||
| @ -15,10 +16,10 @@ stm32h563zi = ["embassy-stm32/stm32h563zi"]     # Nucleo | ||||
| stm32u585ai = ["embassy-stm32/stm32u585ai"]     # IoT board | ||||
| 
 | ||||
| [dependencies] | ||||
| embassy-sync = { version = "0.1.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | ||||
| embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | ||||
| embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "tick-hz-32_768"] } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "memory-x", "time-driver-tim2"]  } | ||||
| embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "unstable-pac", "memory-x", "time-driver-any"]  } | ||||
| 
 | ||||
| defmt = "0.3.0" | ||||
| defmt-rtt = "0.4" | ||||
|  | ||||
| @ -9,7 +9,13 @@ fn main() -> Result<(), Box<dyn Error>> { | ||||
|     println!("cargo:rerun-if-changed=link_ram.x"); | ||||
| 
 | ||||
|     println!("cargo:rustc-link-arg-bins=--nmagic"); | ||||
| 
 | ||||
|     // too little RAM to run from RAM.
 | ||||
|     #[cfg(any(feature = "stm32c031c6"))] | ||||
|     println!("cargo:rustc-link-arg-bins=-Tlink.x"); | ||||
|     #[cfg(not(any(feature = "stm32c031c6")))] | ||||
|     println!("cargo:rustc-link-arg-bins=-Tlink_ram.x"); | ||||
| 
 | ||||
|     println!("cargo:rustc-link-arg-bins=-Tdefmt.x"); | ||||
| 
 | ||||
|     Ok(()) | ||||
|  | ||||
| @ -32,6 +32,8 @@ async fn main(_spawner: Spawner) { | ||||
|     let (mut a, mut b) = (p.PD9, p.PD8); | ||||
|     #[cfg(feature = "stm32h563zi")] | ||||
|     let (mut a, mut b) = (p.PB6, p.PB7); | ||||
|     #[cfg(feature = "stm32c031c6")] | ||||
|     let (mut a, mut b) = (p.PB6, p.PB7); | ||||
| 
 | ||||
|     // Test initial output
 | ||||
|     { | ||||
|  | ||||
| @ -32,6 +32,8 @@ async fn main(_spawner: Spawner) { | ||||
|     let (spi, sck, mosi, miso) = (p.SPI1, p.PE13, p.PE15, p.PE14); | ||||
|     #[cfg(feature = "stm32h563zi")] | ||||
|     let (spi, sck, mosi, miso) = (p.SPI4, p.PE12, p.PE14, p.PE13); | ||||
|     #[cfg(feature = "stm32c031c6")] | ||||
|     let (spi, sck, mosi, miso) = (p.SPI1, p.PA5, p.PA7, p.PA6); | ||||
| 
 | ||||
|     info!("asdfa;"); | ||||
|     let mut spi = Spi::new( | ||||
| @ -49,7 +51,7 @@ async fn main(_spawner: Spawner) { | ||||
| 
 | ||||
|     // Arduino pins D11 and D12 (MOSI-MISO) are connected together with a 1K resistor.
 | ||||
|     // so we should get the data we sent back.
 | ||||
|     let mut buf = data; | ||||
|     let mut buf = [0; 9]; | ||||
|     spi.blocking_transfer(&mut buf, &data).unwrap(); | ||||
|     assert_eq!(buf, data); | ||||
| 
 | ||||
|  | ||||
| @ -31,6 +31,8 @@ async fn main(_spawner: Spawner) { | ||||
|     let (spi, sck, mosi, miso, tx_dma, rx_dma) = (p.SPI1, p.PE13, p.PE15, p.PE14, p.GPDMA1_CH0, p.GPDMA1_CH1); | ||||
|     #[cfg(feature = "stm32h563zi")] | ||||
|     let (spi, sck, mosi, miso, tx_dma, rx_dma) = (p.SPI4, p.PE12, p.PE14, p.PE13, p.GPDMA1_CH0, p.GPDMA1_CH1); | ||||
|     #[cfg(feature = "stm32c031c6")] | ||||
|     let (spi, sck, mosi, miso, tx_dma, rx_dma) = (p.SPI1, p.PA5, p.PA7, p.PA6, p.DMA1_CH1, p.DMA1_CH2); | ||||
| 
 | ||||
|     let mut spi = Spi::new( | ||||
|         spi, | ||||
|  | ||||
| @ -34,6 +34,8 @@ async fn main(_spawner: Spawner) { | ||||
|     let (tx, rx, usart, irq) = (p.PD8, p.PD9, p.USART3, interrupt::take!(USART3)); | ||||
|     #[cfg(feature = "stm32h563zi")] | ||||
|     let (tx, rx, usart, irq) = (p.PB6, p.PB7, p.LPUART1, interrupt::take!(LPUART1)); | ||||
|     #[cfg(feature = "stm32c031c6")] | ||||
|     let (tx, rx, usart, irq) = (p.PB6, p.PB7, p.USART1, interrupt::take!(USART1)); | ||||
| 
 | ||||
|     let config = Config::default(); | ||||
|     let mut usart = Uart::new(usart, rx, tx, irq, NoDma, NoDma, config); | ||||
|  | ||||
| @ -71,6 +71,9 @@ async fn main(_spawner: Spawner) { | ||||
|         p.GPDMA1_CH0, | ||||
|         p.GPDMA1_CH1, | ||||
|     ); | ||||
|     #[cfg(feature = "stm32c031c6")] | ||||
|     let (tx, rx, usart, irq, tx_dma, rx_dma) = | ||||
|         (p.PB6, p.PB7, p.USART1, interrupt::take!(USART1), p.DMA1_CH1, p.DMA1_CH2); | ||||
| 
 | ||||
|     let config = Config::default(); | ||||
|     let mut usart = Uart::new(usart, rx, tx, irq, tx_dma, rx_dma, config); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user