Add embassy-cortex-m crate.
- Move Interrupt and InterruptExecutor from `embassy` to `embassy-cortex-m`. - Move Unborrow from `embassy` to `embassy-hal-common` (nothing in `embassy` requires it anymore) - Move PeripheralMutex from `embassy-hal-common` to `embassy-cortex-m`.
This commit is contained in:
@ -34,6 +34,7 @@ flavors = [
|
||||
|
||||
[dependencies]
|
||||
embassy = { version = "0.1.0", path = "../embassy" }
|
||||
embassy-cortex-m = { version = "0.1.0", path = "../embassy-cortex-m", features = ["prio-bits-4"]}
|
||||
embassy-macros = { version = "0.1.0", path = "../embassy-macros", features = ["stm32"] }
|
||||
embassy-hal-common = {version = "0.1.0", path = "../embassy-hal-common" }
|
||||
embassy-net = { version = "0.1.0", path = "../embassy-net", optional = true }
|
||||
|
@ -96,8 +96,9 @@ fn main() {
|
||||
g.extend(quote! {
|
||||
pub mod interrupt {
|
||||
use crate::pac::Interrupt as InterruptEnum;
|
||||
use embassy_macros::cortex_m_interrupt_declare as declare;
|
||||
#(
|
||||
embassy::interrupt::declare!(#irqs);
|
||||
declare!(#irqs);
|
||||
)*
|
||||
}
|
||||
});
|
||||
|
@ -1,8 +1,8 @@
|
||||
use crate::adc::{AdcPin, Instance};
|
||||
use crate::rcc::get_freqs;
|
||||
use crate::time::Hertz;
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
use embedded_hal_02::blocking::delay::DelayUs;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
use crate::adc::{AdcPin, Instance};
|
||||
use crate::time::Hertz;
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
use embedded_hal_02::blocking::delay::DelayUs;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::adc::{AdcPin, Instance};
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
use embedded_hal_02::blocking::delay::DelayUs;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
use core::marker::PhantomData;
|
||||
|
||||
use crate::time::{Hertz, U32Ext};
|
||||
use crate::Unborrow;
|
||||
use atomic_polyfill::AtomicU8;
|
||||
use atomic_polyfill::Ordering;
|
||||
use embassy::util::Unborrow;
|
||||
use embedded_hal_02::blocking::delay::DelayUs;
|
||||
use pac::adc::vals::{Adcaldif, Boost, Difsel, Exten, Pcsel};
|
||||
use pac::adccommon::vals::Presc;
|
||||
|
@ -1,7 +1,7 @@
|
||||
use core::marker::PhantomData;
|
||||
use core::ops::{Deref, DerefMut};
|
||||
|
||||
use embassy::util::Unborrow;
|
||||
use crate::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
use crate::gpio::sealed::AFType;
|
||||
|
@ -3,7 +3,7 @@ use core::marker::PhantomData;
|
||||
use crate::pac::CRC as PAC_CRC;
|
||||
use crate::peripherals::CRC;
|
||||
use crate::rcc::sealed::RccPeripheral;
|
||||
use embassy::util::Unborrow;
|
||||
use crate::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
pub struct Crc<'d> {
|
||||
|
@ -4,7 +4,7 @@ use crate::pac::crc::vals;
|
||||
use crate::pac::CRC as PAC_CRC;
|
||||
use crate::peripherals::CRC;
|
||||
use crate::rcc::sealed::RccPeripheral;
|
||||
use embassy::util::Unborrow;
|
||||
use crate::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
pub struct Crc<'d> {
|
||||
|
@ -1,7 +1,7 @@
|
||||
use crate::dac::{DacPin, Instance};
|
||||
use crate::pac::dac;
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
|
||||
|
@ -1,8 +1,8 @@
|
||||
use core::marker::PhantomData;
|
||||
use core::task::Poll;
|
||||
|
||||
use embassy::interrupt::{Interrupt, InterruptExt};
|
||||
use embassy::util::Unborrow;
|
||||
use crate::interrupt::{Interrupt, InterruptExt};
|
||||
use crate::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::unborrow;
|
||||
use futures::future::poll_fn;
|
||||
|
@ -3,7 +3,7 @@
|
||||
use core::sync::atomic::{fence, Ordering};
|
||||
use core::task::Waker;
|
||||
|
||||
use embassy::interrupt::{Interrupt, InterruptExt};
|
||||
use crate::interrupt::{Interrupt, InterruptExt};
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
|
||||
use crate::_generated::BDMA_CHANNEL_COUNT;
|
||||
|
@ -1,7 +1,7 @@
|
||||
use core::sync::atomic::{fence, Ordering};
|
||||
use core::task::Waker;
|
||||
|
||||
use embassy::interrupt::{Interrupt, InterruptExt};
|
||||
use crate::interrupt::{Interrupt, InterruptExt};
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
|
||||
use crate::_generated::DMA_CHANNEL_COUNT;
|
||||
|
@ -1,7 +1,7 @@
|
||||
use core::sync::atomic::{fence, Ordering};
|
||||
use core::task::Waker;
|
||||
|
||||
use embassy::interrupt::{Interrupt, InterruptExt};
|
||||
use crate::interrupt::{Interrupt, InterruptExt};
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
|
||||
use crate::_generated::GPDMA_CHANNEL_COUNT;
|
||||
|
@ -10,13 +10,13 @@ mod gpdma;
|
||||
#[cfg(dmamux)]
|
||||
pub use dmamux::*;
|
||||
|
||||
use crate::Unborrow;
|
||||
use core::future::Future;
|
||||
use core::marker::PhantomData;
|
||||
use core::mem;
|
||||
use core::pin::Pin;
|
||||
use core::task::Waker;
|
||||
use core::task::{Context, Poll};
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
#[cfg(feature = "unstable-pac")]
|
||||
|
@ -4,9 +4,9 @@ use core::marker::PhantomData;
|
||||
use core::sync::atomic::{fence, Ordering};
|
||||
use core::task::Waker;
|
||||
|
||||
use embassy::util::Unborrow;
|
||||
use crate::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::peripheral::{PeripheralMutex, PeripheralState, StateStorage};
|
||||
use embassy_cortex_m::peripheral::{PeripheralMutex, PeripheralState, StateStorage};
|
||||
use embassy_hal_common::unborrow;
|
||||
use embassy_net::{Device, DeviceCapabilities, LinkState, PacketBuf, MTU};
|
||||
|
||||
|
@ -2,9 +2,9 @@ use core::marker::PhantomData;
|
||||
use core::sync::atomic::{fence, Ordering};
|
||||
use core::task::Waker;
|
||||
|
||||
use embassy::util::Unborrow;
|
||||
use crate::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::peripheral::{PeripheralMutex, PeripheralState, StateStorage};
|
||||
use embassy_cortex_m::peripheral::{PeripheralMutex, PeripheralState, StateStorage};
|
||||
use embassy_hal_common::unborrow;
|
||||
use embassy_net::{Device, DeviceCapabilities, LinkState, PacketBuf, MTU};
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
use crate::Unborrow;
|
||||
use core::future::Future;
|
||||
use core::marker::PhantomData;
|
||||
use core::pin::Pin;
|
||||
use core::task::{Context, Poll};
|
||||
use embassy::util::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::unsafe_impl_unborrow;
|
||||
|
||||
@ -366,8 +366,8 @@ macro_rules! enable_irq {
|
||||
|
||||
/// safety: must be called only once
|
||||
pub(crate) unsafe fn init() {
|
||||
use embassy::interrupt::Interrupt;
|
||||
use embassy::interrupt::InterruptExt;
|
||||
use crate::interrupt::Interrupt;
|
||||
use crate::interrupt::InterruptExt;
|
||||
|
||||
foreach_exti_irq!(enable_irq);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::peripherals::FLASH;
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
use embedded_storage::nor_flash::{
|
||||
|
@ -1,5 +1,5 @@
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
use crate::gpio::sealed::AFType;
|
||||
|
@ -1,7 +1,7 @@
|
||||
#![macro_use]
|
||||
use crate::Unborrow;
|
||||
use core::convert::Infallible;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::{unborrow, unsafe_impl_unborrow};
|
||||
|
||||
use crate::pac;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![macro_use]
|
||||
|
||||
use embassy::interrupt::Interrupt;
|
||||
use crate::interrupt::Interrupt;
|
||||
|
||||
#[cfg_attr(i2c_v1, path = "v1.rs")]
|
||||
#[cfg_attr(i2c_v2, path = "v2.rs")]
|
||||
|
@ -1,5 +1,5 @@
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
use crate::gpio::sealed::AFType;
|
||||
|
@ -2,9 +2,9 @@ use core::cmp;
|
||||
use core::marker::PhantomData;
|
||||
use core::task::Poll;
|
||||
|
||||
use crate::interrupt::InterruptExt;
|
||||
use crate::Unborrow;
|
||||
use atomic_polyfill::{AtomicUsize, Ordering};
|
||||
use embassy::interrupt::InterruptExt;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::drop::OnDrop;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
@ -1,6 +1,5 @@
|
||||
pub use bare_metal::Mutex;
|
||||
pub use critical_section::CriticalSection;
|
||||
pub use embassy::interrupt::{take, Interrupt};
|
||||
pub use embassy_hal_common::interrupt::Priority4 as Priority;
|
||||
pub use embassy_cortex_m::interrupt::*;
|
||||
|
||||
pub use crate::_generated::interrupt::*;
|
||||
|
@ -4,14 +4,6 @@
|
||||
feature(generic_associated_types, type_alias_impl_trait)
|
||||
)]
|
||||
|
||||
#[cfg(feature = "unstable-pac")]
|
||||
pub use stm32_metapac as pac;
|
||||
#[cfg(not(feature = "unstable-pac"))]
|
||||
pub(crate) use stm32_metapac as pac;
|
||||
|
||||
pub use embassy::util::Unborrow;
|
||||
pub use embassy_hal_common::unborrow;
|
||||
|
||||
// This must go FIRST so that all the other modules see its macros.
|
||||
pub mod fmt;
|
||||
include!(concat!(env!("OUT_DIR"), "/_macros.rs"));
|
||||
@ -79,8 +71,17 @@ pub(crate) mod _generated {
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/_generated.rs"));
|
||||
}
|
||||
|
||||
// Reexports
|
||||
pub use _generated::{peripherals, Peripherals};
|
||||
pub use embassy_macros::interrupt;
|
||||
pub use embassy_cortex_m::executor;
|
||||
pub use embassy_hal_common::{unborrow, Unborrow};
|
||||
pub use embassy_macros::cortex_m_interrupt as interrupt;
|
||||
|
||||
#[cfg(feature = "unstable-pac")]
|
||||
pub use stm32_metapac as pac;
|
||||
#[cfg(not(feature = "unstable-pac"))]
|
||||
pub(crate) use stm32_metapac as pac;
|
||||
|
||||
#[non_exhaustive]
|
||||
pub struct Config {
|
||||
|
@ -1,5 +1,5 @@
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
use super::*;
|
||||
|
@ -1,6 +1,6 @@
|
||||
use core::marker::PhantomData;
|
||||
|
||||
use embassy::util::Unborrow;
|
||||
use crate::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
use stm32_metapac::rcc::vals::{Mco1, Mco2};
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
use stm32_metapac::PWR;
|
||||
|
||||
use crate::pac::rcc::vals::{Hpre, Msirange, Pllsrc, Ppre, Sw};
|
||||
use crate::pac::{FLASH, RCC};
|
||||
use crate::rcc::{set_freqs, Clocks};
|
||||
@ -295,6 +297,8 @@ impl Default for Config {
|
||||
}
|
||||
|
||||
pub(crate) unsafe fn init(config: Config) {
|
||||
PWR.cr1()
|
||||
.modify(|w| w.set_vos(stm32_metapac::pwr::vals::Vos::RANGE0));
|
||||
let (sys_clk, sw) = match config.mux {
|
||||
ClockSrc::MSI(range) => {
|
||||
// Enable MSI
|
||||
|
@ -1,8 +1,8 @@
|
||||
#![macro_use]
|
||||
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use core::task::Poll;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::unborrow;
|
||||
use futures::future::poll_fn;
|
||||
|
@ -4,8 +4,8 @@ use core::default::Default;
|
||||
use core::marker::PhantomData;
|
||||
use core::task::Poll;
|
||||
|
||||
use embassy::interrupt::InterruptExt;
|
||||
use embassy::util::Unborrow;
|
||||
use crate::interrupt::InterruptExt;
|
||||
use crate::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::drop::OnDrop;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
@ -1,8 +1,8 @@
|
||||
#![macro_use]
|
||||
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use core::ptr;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
use futures::future::join;
|
||||
|
||||
|
@ -77,6 +77,7 @@ pub use value_error::ValueError;
|
||||
|
||||
use embassy_hal_common::ratio::Ratio;
|
||||
|
||||
use crate::Unborrow;
|
||||
use crate::{
|
||||
dma::NoDma,
|
||||
pac,
|
||||
@ -85,7 +86,6 @@ use crate::{
|
||||
spi::{BitOrder, Config as SpiConfig, MisoPin, MosiPin, SckPin, Spi, MODE_0},
|
||||
time::Hertz,
|
||||
};
|
||||
use embassy::util::Unborrow;
|
||||
|
||||
/// Passthrough for SPI errors (for now)
|
||||
pub type Error = crate::spi::Error;
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::interrupt::InterruptExt;
|
||||
use atomic_polyfill::{AtomicU32, AtomicU8};
|
||||
use core::cell::Cell;
|
||||
use core::convert::TryInto;
|
||||
@ -5,7 +6,6 @@ use core::sync::atomic::{compiler_fence, Ordering};
|
||||
use core::{mem, ptr};
|
||||
use embassy::blocking_mutex::raw::CriticalSectionRawMutex;
|
||||
use embassy::blocking_mutex::Mutex;
|
||||
use embassy::interrupt::InterruptExt;
|
||||
use embassy::time::driver::{AlarmHandle, Driver};
|
||||
use embassy::time::TICKS_PER_SECOND;
|
||||
use stm32_metapac::timer::regs;
|
||||
|
@ -1,4 +1,4 @@
|
||||
use embassy::interrupt::Interrupt;
|
||||
use crate::interrupt::Interrupt;
|
||||
|
||||
use crate::rcc::{sealed::RccPeripheral as __RccPeri, RccPeripheral};
|
||||
use crate::time::Hertz;
|
||||
|
@ -2,7 +2,7 @@ use atomic_polyfill::{compiler_fence, Ordering};
|
||||
use core::future::Future;
|
||||
use core::task::Poll;
|
||||
use embassy::waitqueue::WakerRegistration;
|
||||
use embassy_hal_common::peripheral::{PeripheralMutex, PeripheralState, StateStorage};
|
||||
use embassy_cortex_m::peripheral::{PeripheralMutex, PeripheralState, StateStorage};
|
||||
use embassy_hal_common::ring_buffer::RingBuffer;
|
||||
use futures::future::poll_fn;
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
#![macro_use]
|
||||
|
||||
use crate::interrupt::Interrupt;
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::interrupt::Interrupt;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
use crate::dma::NoDma;
|
||||
|
@ -1,4 +1,4 @@
|
||||
use embassy::interrupt::Interrupt;
|
||||
use crate::interrupt::Interrupt;
|
||||
|
||||
use crate::rcc::RccPeripheral;
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
#![macro_use]
|
||||
|
||||
use crate::interrupt::InterruptExt;
|
||||
use crate::Unborrow;
|
||||
use atomic_polyfill::{AtomicBool, AtomicU8};
|
||||
use core::marker::PhantomData;
|
||||
use core::sync::atomic::Ordering;
|
||||
use core::task::Poll;
|
||||
use embassy::interrupt::InterruptExt;
|
||||
use embassy::time::{block_for, Duration};
|
||||
use embassy::util::Unborrow;
|
||||
use embassy::waitqueue::AtomicWaker;
|
||||
use embassy_hal_common::unborrow;
|
||||
use embassy_usb::driver::{self, EndpointAllocError, EndpointError, Event, Unsupported};
|
||||
|
@ -1,5 +1,5 @@
|
||||
use crate::Unborrow;
|
||||
use core::marker::PhantomData;
|
||||
use embassy::util::Unborrow;
|
||||
use embassy_hal_common::unborrow;
|
||||
|
||||
use crate::gpio::sealed::AFType;
|
||||
|
Reference in New Issue
Block a user