stm32: consolidate functionality into new pkg
This commit is contained in:
parent
c8d90f3e75
commit
03ecc91d55
@ -4,6 +4,7 @@ members = [
|
|||||||
"embassy",
|
"embassy",
|
||||||
"embassy-traits",
|
"embassy-traits",
|
||||||
"embassy-nrf",
|
"embassy-nrf",
|
||||||
|
"embassy-stm32",
|
||||||
"embassy-stm32f4",
|
"embassy-stm32f4",
|
||||||
"embassy-stm32l0",
|
"embassy-stm32l0",
|
||||||
"embassy-nrf-examples",
|
"embassy-nrf-examples",
|
||||||
|
46
embassy-stm32/Cargo.toml
Normal file
46
embassy-stm32/Cargo.toml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
[package]
|
||||||
|
name = "embassy-stm32"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Dario Nieuwenhuis <dirbaio@dirbaio.net>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
defmt-trace = [ ]
|
||||||
|
defmt-debug = [ ]
|
||||||
|
defmt-info = [ ]
|
||||||
|
defmt-warn = [ ]
|
||||||
|
defmt-error = [ ]
|
||||||
|
|
||||||
|
stm32f401 = ["stm32f4xx-hal/stm32f401"]
|
||||||
|
stm32f405 = ["stm32f4xx-hal/stm32f405"]
|
||||||
|
stm32f407 = ["stm32f4xx-hal/stm32f407"]
|
||||||
|
stm32f410 = ["stm32f4xx-hal/stm32f410"]
|
||||||
|
stm32f411 = ["stm32f4xx-hal/stm32f411"]
|
||||||
|
stm32f412 = ["stm32f4xx-hal/stm32f412"]
|
||||||
|
stm32f413 = ["stm32f4xx-hal/stm32f413"]
|
||||||
|
stm32f415 = ["stm32f4xx-hal/stm32f405"]
|
||||||
|
stm32f417 = ["stm32f4xx-hal/stm32f407"]
|
||||||
|
stm32f423 = ["stm32f4xx-hal/stm32f413"]
|
||||||
|
stm32f427 = ["stm32f4xx-hal/stm32f427"]
|
||||||
|
stm32f429 = ["stm32f4xx-hal/stm32f429"]
|
||||||
|
stm32f437 = ["stm32f4xx-hal/stm32f427"]
|
||||||
|
stm32f439 = ["stm32f4xx-hal/stm32f429"]
|
||||||
|
stm32f446 = ["stm32f4xx-hal/stm32f446"]
|
||||||
|
stm32f469 = ["stm32f4xx-hal/stm32f469"]
|
||||||
|
stm32f479 = ["stm32f4xx-hal/stm32f469"]
|
||||||
|
|
||||||
|
stm32l0x1 = ["stm32l0xx-hal/stm32l0x1"]
|
||||||
|
stm32l0x2 = ["stm32l0xx-hal/stm32l0x2"]
|
||||||
|
stm32l0x3 = ["stm32l0xx-hal/stm32l0x3"]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
embassy = { version = "0.1.0", path = "../embassy" }
|
||||||
|
|
||||||
|
defmt = { version = "0.2.0", optional = true }
|
||||||
|
log = { version = "0.4.11", optional = true }
|
||||||
|
cortex-m-rt = "0.6.13"
|
||||||
|
cortex-m = "0.7.1"
|
||||||
|
embedded-hal = { version = "0.2.4" }
|
||||||
|
embedded-dma = { version = "0.1.2" }
|
||||||
|
stm32f4xx-hal = { version = "0.8.3", features = ["rt", "can"], git = "https://github.com/stm32-rs/stm32f4xx-hal.git", optional = true }
|
||||||
|
stm32l0xx-hal = { version = "0.7.0", features = ["rt"], git = "https://github.com/stm32-rs/stm32l0xx-hal.git", optional = true }
|
@ -1022,4 +1022,106 @@ mod irqs {
|
|||||||
declare!(DSIHOST);
|
declare!(DSIHOST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "stm32l0x1")]
|
||||||
|
mod irqs {
|
||||||
|
use super::*;
|
||||||
|
declare!(WWDG);
|
||||||
|
declare!(PVD);
|
||||||
|
declare!(RTC);
|
||||||
|
declare!(FLASH);
|
||||||
|
declare!(RCC);
|
||||||
|
declare!(EXTI0_1);
|
||||||
|
declare!(EXTI2_3);
|
||||||
|
declare!(EXTI4_15);
|
||||||
|
declare!(DMA1_CHANNEL1);
|
||||||
|
declare!(DMA1_CHANNEL2_3);
|
||||||
|
declare!(DMA1_CHANNEL4_7);
|
||||||
|
declare!(ADC_COMP);
|
||||||
|
declare!(LPTIM1);
|
||||||
|
declare!(USART4_USART5);
|
||||||
|
declare!(TIM2);
|
||||||
|
declare!(TIM3);
|
||||||
|
declare!(TIM6);
|
||||||
|
declare!(TIM7);
|
||||||
|
declare!(TIM21);
|
||||||
|
declare!(I2C3);
|
||||||
|
declare!(TIM22);
|
||||||
|
declare!(I2C1);
|
||||||
|
declare!(I2C2);
|
||||||
|
declare!(SPI1);
|
||||||
|
declare!(SPI2);
|
||||||
|
declare!(USART1);
|
||||||
|
declare!(USART2);
|
||||||
|
declare!(AES_RNG_LPUART1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "stm32l0x2")]
|
||||||
|
mod irqs {
|
||||||
|
use super::*;
|
||||||
|
declare!(WWDG);
|
||||||
|
declare!(PVD);
|
||||||
|
declare!(RTC);
|
||||||
|
declare!(RCC);
|
||||||
|
declare!(EXTI0_1);
|
||||||
|
declare!(EXTI2_3);
|
||||||
|
declare!(EXTI4_15);
|
||||||
|
declare!(TSC);
|
||||||
|
declare!(DMA1_CHANNEL1);
|
||||||
|
declare!(DMA1_CHANNEL2_3);
|
||||||
|
declare!(DMA1_CHANNEL4_7);
|
||||||
|
declare!(ADC_COMP);
|
||||||
|
declare!(LPTIM1);
|
||||||
|
declare!(USART4_USART5);
|
||||||
|
declare!(TIM2);
|
||||||
|
declare!(TIM3);
|
||||||
|
declare!(TIM6_DAC);
|
||||||
|
declare!(TIM7);
|
||||||
|
declare!(TIM21);
|
||||||
|
declare!(I2C3);
|
||||||
|
declare!(TIM22);
|
||||||
|
declare!(I2C1);
|
||||||
|
declare!(I2C2);
|
||||||
|
declare!(SPI1);
|
||||||
|
declare!(SPI2);
|
||||||
|
declare!(USART1);
|
||||||
|
declare!(USART2);
|
||||||
|
declare!(AES_RNG_LPUART1);
|
||||||
|
declare!(USB);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "stm32l0x3")]
|
||||||
|
mod irqs {
|
||||||
|
use super::*;
|
||||||
|
declare!(WWDG);
|
||||||
|
declare!(PVD);
|
||||||
|
declare!(RTC);
|
||||||
|
declare!(RCC);
|
||||||
|
declare!(EXTI0_1);
|
||||||
|
declare!(EXTI2_3);
|
||||||
|
declare!(EXTI4_15);
|
||||||
|
declare!(TSC);
|
||||||
|
declare!(DMA1_CHANNEL1);
|
||||||
|
declare!(DMA1_CHANNEL2_3);
|
||||||
|
declare!(DMA1_CHANNEL4_7);
|
||||||
|
declare!(ADC_COMP);
|
||||||
|
declare!(LPTIM1);
|
||||||
|
declare!(USART4_USART5);
|
||||||
|
declare!(TIM2);
|
||||||
|
declare!(TIM3);
|
||||||
|
declare!(TIM6_DAC);
|
||||||
|
declare!(TIM7);
|
||||||
|
declare!(TIM21);
|
||||||
|
declare!(I2C3);
|
||||||
|
declare!(TIM22);
|
||||||
|
declare!(I2C1);
|
||||||
|
declare!(I2C2);
|
||||||
|
declare!(SPI1);
|
||||||
|
declare!(SPI2);
|
||||||
|
declare!(USART1);
|
||||||
|
declare!(USART2);
|
||||||
|
declare!(AES_RNG_LPUART1);
|
||||||
|
declare!(LCD);
|
||||||
|
declare!(USB);
|
||||||
|
}
|
||||||
|
|
||||||
pub use irqs::*;
|
pub use irqs::*;
|
35
embassy-stm32/src/lib.rs
Normal file
35
embassy-stm32/src/lib.rs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#![no_std]
|
||||||
|
#![feature(generic_associated_types)]
|
||||||
|
#![feature(asm)]
|
||||||
|
#![feature(min_type_alias_impl_trait)]
|
||||||
|
#![feature(impl_trait_in_bindings)]
|
||||||
|
#![feature(type_alias_impl_trait)]
|
||||||
|
#![allow(incomplete_features)]
|
||||||
|
|
||||||
|
#[cfg(any(
|
||||||
|
feature = "stm32f401",
|
||||||
|
feature = "stm32f405",
|
||||||
|
feature = "stm32f407",
|
||||||
|
feature = "stm32f410",
|
||||||
|
feature = "stm32f411",
|
||||||
|
feature = "stm32f412",
|
||||||
|
feature = "stm32f413",
|
||||||
|
feature = "stm32f415",
|
||||||
|
feature = "stm32f417",
|
||||||
|
feature = "stm32f423",
|
||||||
|
feature = "stm32f427",
|
||||||
|
feature = "stm32f429",
|
||||||
|
feature = "stm32f437",
|
||||||
|
feature = "stm32f439",
|
||||||
|
feature = "stm32f446",
|
||||||
|
feature = "stm32f469",
|
||||||
|
feature = "stm32f479",
|
||||||
|
))]
|
||||||
|
pub use {stm32f4xx_hal as hal, stm32f4xx_hal::stm32 as pac};
|
||||||
|
|
||||||
|
#[cfg(any(feature = "stm32l0x1", feature = "stm32l0x2", feature = "stm32l0x3",))]
|
||||||
|
pub use {stm32l0xx_hal as hal, stm32l0xx_hal::pac};
|
||||||
|
|
||||||
|
pub mod fmt;
|
||||||
|
|
||||||
|
pub mod interrupt;
|
@ -11,27 +11,27 @@ defmt-info = [ ]
|
|||||||
defmt-warn = [ ]
|
defmt-warn = [ ]
|
||||||
defmt-error = [ ]
|
defmt-error = [ ]
|
||||||
|
|
||||||
stm32f401 = ["stm32f4xx-hal/stm32f401"]
|
stm32f401 = ["stm32f4xx-hal/stm32f401", "embassy-stm32/stm32f401"]
|
||||||
stm32f405 = ["stm32f4xx-hal/stm32f405"]
|
stm32f405 = ["stm32f4xx-hal/stm32f405", "embassy-stm32/stm32f405"]
|
||||||
stm32f407 = ["stm32f4xx-hal/stm32f407"]
|
stm32f407 = ["stm32f4xx-hal/stm32f407", "embassy-stm32/stm32f407"]
|
||||||
stm32f410 = ["stm32f4xx-hal/stm32f410"]
|
stm32f410 = ["stm32f4xx-hal/stm32f410", "embassy-stm32/stm32f410"]
|
||||||
stm32f411 = ["stm32f4xx-hal/stm32f411"]
|
stm32f411 = ["stm32f4xx-hal/stm32f411", "embassy-stm32/stm32f411"]
|
||||||
stm32f412 = ["stm32f4xx-hal/stm32f412"]
|
stm32f412 = ["stm32f4xx-hal/stm32f412", "embassy-stm32/stm32f412"]
|
||||||
stm32f413 = ["stm32f4xx-hal/stm32f413"]
|
stm32f413 = ["stm32f4xx-hal/stm32f413", "embassy-stm32/stm32f413"]
|
||||||
stm32f415 = ["stm32f4xx-hal/stm32f405"]
|
stm32f415 = ["stm32f4xx-hal/stm32f405", "embassy-stm32/stm32f415"]
|
||||||
stm32f417 = ["stm32f4xx-hal/stm32f407"]
|
stm32f417 = ["stm32f4xx-hal/stm32f407", "embassy-stm32/stm32f417"]
|
||||||
stm32f423 = ["stm32f4xx-hal/stm32f413"]
|
stm32f423 = ["stm32f4xx-hal/stm32f413", "embassy-stm32/stm32f423"]
|
||||||
stm32f427 = ["stm32f4xx-hal/stm32f427"]
|
stm32f427 = ["stm32f4xx-hal/stm32f427", "embassy-stm32/stm32f427"]
|
||||||
stm32f429 = ["stm32f4xx-hal/stm32f429"]
|
stm32f429 = ["stm32f4xx-hal/stm32f429", "embassy-stm32/stm32f429"]
|
||||||
stm32f437 = ["stm32f4xx-hal/stm32f427"]
|
stm32f437 = ["stm32f4xx-hal/stm32f427", "embassy-stm32/stm32f437"]
|
||||||
stm32f439 = ["stm32f4xx-hal/stm32f429"]
|
stm32f439 = ["stm32f4xx-hal/stm32f429", "embassy-stm32/stm32f439"]
|
||||||
stm32f446 = ["stm32f4xx-hal/stm32f446"]
|
stm32f446 = ["stm32f4xx-hal/stm32f446", "embassy-stm32/stm32f446"]
|
||||||
stm32f469 = ["stm32f4xx-hal/stm32f469"]
|
stm32f469 = ["stm32f4xx-hal/stm32f469", "embassy-stm32/stm32f469"]
|
||||||
stm32f479 = ["stm32f4xx-hal/stm32f469"]
|
stm32f479 = ["stm32f4xx-hal/stm32f469", "embassy-stm32/stm32f479"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
embassy = { version = "0.1.0", path = "../embassy" }
|
embassy = { version = "0.1.0", path = "../embassy" }
|
||||||
|
embassy-stm32 = { version = "0.1.0", path = "../embassy-stm32" }
|
||||||
defmt = { version = "0.2.0", optional = true }
|
defmt = { version = "0.2.0", optional = true }
|
||||||
log = { version = "0.4.11", optional = true }
|
log = { version = "0.4.11", optional = true }
|
||||||
cortex-m-rt = "0.6.13"
|
cortex-m-rt = "0.6.13"
|
||||||
|
@ -307,16 +307,11 @@ compile_error!(
|
|||||||
"Multile chip features activated. You must activate exactly one of the following features: "
|
"Multile chip features activated. You must activate exactly one of the following features: "
|
||||||
);
|
);
|
||||||
|
|
||||||
pub use stm32f4xx_hal as hal;
|
pub use embassy_stm32::{fmt, hal, interrupt, pac};
|
||||||
pub use stm32f4xx_hal::stm32 as pac;
|
|
||||||
|
|
||||||
// This mod MUST go first, so that the others see its macros.
|
|
||||||
pub(crate) mod fmt;
|
|
||||||
|
|
||||||
#[cfg(not(any(feature = "stm32f401", feature = "stm32f410", feature = "stm32f411",)))]
|
#[cfg(not(any(feature = "stm32f401", feature = "stm32f410", feature = "stm32f411",)))]
|
||||||
pub mod can;
|
pub mod can;
|
||||||
pub mod exti;
|
pub mod exti;
|
||||||
pub mod interrupt;
|
|
||||||
#[cfg(not(feature = "stm32f410"))]
|
#[cfg(not(feature = "stm32f410"))]
|
||||||
pub mod qei;
|
pub mod qei;
|
||||||
pub mod rtc;
|
pub mod rtc;
|
||||||
|
@ -11,12 +11,13 @@ defmt-info = [ ]
|
|||||||
defmt-warn = [ ]
|
defmt-warn = [ ]
|
||||||
defmt-error = [ ]
|
defmt-error = [ ]
|
||||||
|
|
||||||
stm32l0x1 = ["stm32l0xx-hal/stm32l0x1"]
|
stm32l0x1 = ["stm32l0xx-hal/stm32l0x1", "embassy-stm32/stm32l0x1"]
|
||||||
stm32l0x2 = ["stm32l0xx-hal/stm32l0x2"]
|
stm32l0x2 = ["stm32l0xx-hal/stm32l0x2", "embassy-stm32/stm32l0x2"]
|
||||||
stm32l0x3 = ["stm32l0xx-hal/stm32l0x3"]
|
stm32l0x3 = ["stm32l0xx-hal/stm32l0x3", "embassy-stm32/stm32l0x3"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
embassy = { version = "0.1.0", path = "../embassy" }
|
embassy = { version = "0.1.0", path = "../embassy" }
|
||||||
|
embassy-stm32 = { version = "0.1.0", path = "../embassy-stm32" }
|
||||||
defmt = { version = "0.2.0", optional = true }
|
defmt = { version = "0.2.0", optional = true }
|
||||||
futures = { version = "0.3.5", default-features = false, features = [ "cfg-target-has-atomic", "unstable" ] }
|
futures = { version = "0.3.5", default-features = false, features = [ "cfg-target-has-atomic", "unstable" ] }
|
||||||
log = { version = "0.4.11", optional = true }
|
log = { version = "0.4.11", optional = true }
|
||||||
|
@ -1,119 +0,0 @@
|
|||||||
#![macro_use]
|
|
||||||
#![allow(clippy::module_inception)]
|
|
||||||
|
|
||||||
#[cfg(all(feature = "defmt", feature = "log"))]
|
|
||||||
compile_error!("You may not enable both `defmt` and `log` features.");
|
|
||||||
|
|
||||||
pub use fmt::*;
|
|
||||||
|
|
||||||
#[cfg(feature = "defmt")]
|
|
||||||
mod fmt {
|
|
||||||
pub use defmt::{
|
|
||||||
assert, assert_eq, assert_ne, debug, debug_assert, debug_assert_eq, debug_assert_ne, error,
|
|
||||||
info, panic, todo, trace, unreachable, unwrap, warn,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "log")]
|
|
||||||
mod fmt {
|
|
||||||
pub use core::{
|
|
||||||
assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo,
|
|
||||||
unreachable,
|
|
||||||
};
|
|
||||||
pub use log::{debug, error, info, trace, warn};
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(not(any(feature = "defmt", feature = "log")))]
|
|
||||||
mod fmt {
|
|
||||||
#![macro_use]
|
|
||||||
|
|
||||||
pub use core::{
|
|
||||||
assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo,
|
|
||||||
unreachable,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! trace {
|
|
||||||
($($msg:expr),+ $(,)?) => {
|
|
||||||
()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! debug {
|
|
||||||
($($msg:expr),+ $(,)?) => {
|
|
||||||
()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! info {
|
|
||||||
($($msg:expr),+ $(,)?) => {
|
|
||||||
()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! warn {
|
|
||||||
($($msg:expr),+ $(,)?) => {
|
|
||||||
()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! error {
|
|
||||||
($($msg:expr),+ $(,)?) => {
|
|
||||||
()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(not(feature = "defmt"))]
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! unwrap {
|
|
||||||
($arg:expr) => {
|
|
||||||
match $crate::fmt::Try::into_result($arg) {
|
|
||||||
::core::result::Result::Ok(t) => t,
|
|
||||||
::core::result::Result::Err(e) => {
|
|
||||||
::core::panic!("unwrap of `{}` failed: {:?}", ::core::stringify!($arg), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
($arg:expr, $($msg:expr),+ $(,)? ) => {
|
|
||||||
match $crate::fmt::Try::into_result($arg) {
|
|
||||||
::core::result::Result::Ok(t) => t,
|
|
||||||
::core::result::Result::Err(e) => {
|
|
||||||
::core::panic!("unwrap of `{}` failed: {}: {:?}", ::core::stringify!($arg), ::core::format_args!($($msg,)*), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
|
|
||||||
pub struct NoneError;
|
|
||||||
|
|
||||||
pub trait Try {
|
|
||||||
type Ok;
|
|
||||||
type Error;
|
|
||||||
fn into_result(self) -> Result<Self::Ok, Self::Error>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T> Try for Option<T> {
|
|
||||||
type Ok = T;
|
|
||||||
type Error = NoneError;
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
fn into_result(self) -> Result<T, NoneError> {
|
|
||||||
self.ok_or(NoneError)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T, E> Try for Result<T, E> {
|
|
||||||
type Ok = T;
|
|
||||||
type Error = E;
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
fn into_result(self) -> Self {
|
|
||||||
self
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,162 +0,0 @@
|
|||||||
//! Interrupt management
|
|
||||||
use crate::pac::NVIC_PRIO_BITS;
|
|
||||||
|
|
||||||
// Re-exports
|
|
||||||
pub use cortex_m::interrupt::{CriticalSection, Mutex};
|
|
||||||
pub use embassy::interrupt::{declare, take, Interrupt};
|
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
|
|
||||||
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
|
||||||
#[repr(u8)]
|
|
||||||
pub enum Priority {
|
|
||||||
Level0 = 0,
|
|
||||||
Level1 = 1,
|
|
||||||
Level2 = 2,
|
|
||||||
Level3 = 3,
|
|
||||||
Level4 = 4,
|
|
||||||
Level5 = 5,
|
|
||||||
Level6 = 6,
|
|
||||||
Level7 = 7,
|
|
||||||
Level8 = 8,
|
|
||||||
Level9 = 9,
|
|
||||||
Level10 = 10,
|
|
||||||
Level11 = 11,
|
|
||||||
Level12 = 12,
|
|
||||||
Level13 = 13,
|
|
||||||
Level14 = 14,
|
|
||||||
Level15 = 15,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<u8> for Priority {
|
|
||||||
fn from(priority: u8) -> Self {
|
|
||||||
match priority >> (8 - NVIC_PRIO_BITS) {
|
|
||||||
0 => Self::Level0,
|
|
||||||
1 => Self::Level1,
|
|
||||||
2 => Self::Level2,
|
|
||||||
3 => Self::Level3,
|
|
||||||
4 => Self::Level4,
|
|
||||||
5 => Self::Level5,
|
|
||||||
6 => Self::Level6,
|
|
||||||
7 => Self::Level7,
|
|
||||||
8 => Self::Level8,
|
|
||||||
9 => Self::Level9,
|
|
||||||
10 => Self::Level10,
|
|
||||||
11 => Self::Level11,
|
|
||||||
12 => Self::Level12,
|
|
||||||
13 => Self::Level13,
|
|
||||||
14 => Self::Level14,
|
|
||||||
15 => Self::Level15,
|
|
||||||
_ => unreachable!(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<Priority> for u8 {
|
|
||||||
fn from(p: Priority) -> Self {
|
|
||||||
(p as u8) << (8 - NVIC_PRIO_BITS)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "stm32l0x1")]
|
|
||||||
mod irqs {
|
|
||||||
use super::*;
|
|
||||||
declare!(WWDG);
|
|
||||||
declare!(PVD);
|
|
||||||
declare!(RTC);
|
|
||||||
declare!(FLASH);
|
|
||||||
declare!(RCC);
|
|
||||||
declare!(EXTI0_1);
|
|
||||||
declare!(EXTI2_3);
|
|
||||||
declare!(EXTI4_15);
|
|
||||||
declare!(DMA1_CHANNEL1);
|
|
||||||
declare!(DMA1_CHANNEL2_3);
|
|
||||||
declare!(DMA1_CHANNEL4_7);
|
|
||||||
declare!(ADC_COMP);
|
|
||||||
declare!(LPTIM1);
|
|
||||||
declare!(USART4_USART5);
|
|
||||||
declare!(TIM2);
|
|
||||||
declare!(TIM3);
|
|
||||||
declare!(TIM6);
|
|
||||||
declare!(TIM7);
|
|
||||||
declare!(TIM21);
|
|
||||||
declare!(I2C3);
|
|
||||||
declare!(TIM22);
|
|
||||||
declare!(I2C1);
|
|
||||||
declare!(I2C2);
|
|
||||||
declare!(SPI1);
|
|
||||||
declare!(SPI2);
|
|
||||||
declare!(USART1);
|
|
||||||
declare!(USART2);
|
|
||||||
declare!(AES_RNG_LPUART1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "stm32l0x2")]
|
|
||||||
mod irqs {
|
|
||||||
use super::*;
|
|
||||||
declare!(WWDG);
|
|
||||||
declare!(PVD);
|
|
||||||
declare!(RTC);
|
|
||||||
declare!(RCC);
|
|
||||||
declare!(EXTI0_1);
|
|
||||||
declare!(EXTI2_3);
|
|
||||||
declare!(EXTI4_15);
|
|
||||||
declare!(TSC);
|
|
||||||
declare!(DMA1_CHANNEL1);
|
|
||||||
declare!(DMA1_CHANNEL2_3);
|
|
||||||
declare!(DMA1_CHANNEL4_7);
|
|
||||||
declare!(ADC_COMP);
|
|
||||||
declare!(LPTIM1);
|
|
||||||
declare!(USART4_USART5);
|
|
||||||
declare!(TIM2);
|
|
||||||
declare!(TIM3);
|
|
||||||
declare!(TIM6_DAC);
|
|
||||||
declare!(TIM7);
|
|
||||||
declare!(TIM21);
|
|
||||||
declare!(I2C3);
|
|
||||||
declare!(TIM22);
|
|
||||||
declare!(I2C1);
|
|
||||||
declare!(I2C2);
|
|
||||||
declare!(SPI1);
|
|
||||||
declare!(SPI2);
|
|
||||||
declare!(USART1);
|
|
||||||
declare!(USART2);
|
|
||||||
declare!(AES_RNG_LPUART1);
|
|
||||||
declare!(USB);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "stm32l0x3")]
|
|
||||||
mod irqs {
|
|
||||||
use super::*;
|
|
||||||
declare!(WWDG);
|
|
||||||
declare!(PVD);
|
|
||||||
declare!(RTC);
|
|
||||||
declare!(RCC);
|
|
||||||
declare!(EXTI0_1);
|
|
||||||
declare!(EXTI2_3);
|
|
||||||
declare!(EXTI4_15);
|
|
||||||
declare!(TSC);
|
|
||||||
declare!(DMA1_CHANNEL1);
|
|
||||||
declare!(DMA1_CHANNEL2_3);
|
|
||||||
declare!(DMA1_CHANNEL4_7);
|
|
||||||
declare!(ADC_COMP);
|
|
||||||
declare!(LPTIM1);
|
|
||||||
declare!(USART4_USART5);
|
|
||||||
declare!(TIM2);
|
|
||||||
declare!(TIM3);
|
|
||||||
declare!(TIM6_DAC);
|
|
||||||
declare!(TIM7);
|
|
||||||
declare!(TIM21);
|
|
||||||
declare!(I2C3);
|
|
||||||
declare!(TIM22);
|
|
||||||
declare!(I2C1);
|
|
||||||
declare!(I2C2);
|
|
||||||
declare!(SPI1);
|
|
||||||
declare!(SPI2);
|
|
||||||
declare!(USART1);
|
|
||||||
declare!(USART2);
|
|
||||||
declare!(AES_RNG_LPUART1);
|
|
||||||
declare!(LCD);
|
|
||||||
declare!(USB);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub use irqs::*;
|
|
@ -19,11 +19,6 @@ compile_error!(
|
|||||||
"Multile chip features activated. You must activate exactly one of the following features: "
|
"Multile chip features activated. You must activate exactly one of the following features: "
|
||||||
);
|
);
|
||||||
|
|
||||||
pub use stm32l0xx_hal as hal;
|
pub use embassy_stm32::{fmt, hal, interrupt, pac};
|
||||||
pub use stm32l0xx_hal::pac;
|
|
||||||
|
|
||||||
// This mod MUST go first, so that the others see its macros.
|
|
||||||
pub(crate) mod fmt;
|
|
||||||
|
|
||||||
pub mod exti;
|
pub mod exti;
|
||||||
pub mod interrupt;
|
|
||||||
|
Loading…
Reference in New Issue
Block a user