diff options
| -rw-r--r-- | embassy-stm32/Cargo.toml | 23 | ||||
| -rw-r--r-- | embassy-stm32/src/exti.rs | 16 | ||||
| -rw-r--r-- | embassy-stm32/src/pwr/mod.rs | 1 | ||||
| -rw-r--r-- | embassy-stm32/src/pwr/u5.rs | 0 | ||||
| -rw-r--r-- | embassy-stm32/src/rcc/mod.rs | 11 | ||||
| -rw-r--r-- | embassy-stm32/src/rcc/u5/mod.rs | 15 | ||||
| -rw-r--r-- | examples/stm32l4/.cargo/config.toml | 3 | ||||
| m--------- | stm32-data | 0 | ||||
| -rw-r--r-- | stm32-gen-features/src/lib.rs | 3 | ||||
| -rw-r--r-- | stm32-metapac-gen/src/lib.rs | 3 | ||||
| -rw-r--r-- | stm32-metapac/Cargo.toml | 23 |
11 files changed, 84 insertions, 14 deletions
diff --git a/embassy-stm32/Cargo.toml b/embassy-stm32/Cargo.toml index ecad19751..206dbb148 100644 --- a/embassy-stm32/Cargo.toml +++ b/embassy-stm32/Cargo.toml | |||
| @@ -1037,6 +1037,29 @@ stm32l4s7zi = [ "stm32-metapac/stm32l4s7zi" ] | |||
| 1037 | stm32l4s9ai = [ "stm32-metapac/stm32l4s9ai" ] | 1037 | stm32l4s9ai = [ "stm32-metapac/stm32l4s9ai" ] |
| 1038 | stm32l4s9vi = [ "stm32-metapac/stm32l4s9vi" ] | 1038 | stm32l4s9vi = [ "stm32-metapac/stm32l4s9vi" ] |
| 1039 | stm32l4s9zi = [ "stm32-metapac/stm32l4s9zi" ] | 1039 | stm32l4s9zi = [ "stm32-metapac/stm32l4s9zi" ] |
| 1040 | stm32u575ag = [ "stm32-metapac/stm32u575ag" ] | ||
| 1041 | stm32u575ai = [ "stm32-metapac/stm32u575ai" ] | ||
| 1042 | stm32u575cg = [ "stm32-metapac/stm32u575cg" ] | ||
| 1043 | stm32u575ci = [ "stm32-metapac/stm32u575ci" ] | ||
| 1044 | stm32u575og = [ "stm32-metapac/stm32u575og" ] | ||
| 1045 | stm32u575oi = [ "stm32-metapac/stm32u575oi" ] | ||
| 1046 | stm32u575qg = [ "stm32-metapac/stm32u575qg" ] | ||
| 1047 | stm32u575qi = [ "stm32-metapac/stm32u575qi" ] | ||
| 1048 | stm32u575rg = [ "stm32-metapac/stm32u575rg" ] | ||
| 1049 | stm32u575ri = [ "stm32-metapac/stm32u575ri" ] | ||
| 1050 | stm32u575vg = [ "stm32-metapac/stm32u575vg" ] | ||
| 1051 | stm32u575vi = [ "stm32-metapac/stm32u575vi" ] | ||
| 1052 | stm32u575zg = [ "stm32-metapac/stm32u575zg" ] | ||
| 1053 | stm32u575zi = [ "stm32-metapac/stm32u575zi" ] | ||
| 1054 | stm32u585ai = [ "stm32-metapac/stm32u585ai" ] | ||
| 1055 | stm32u585ci = [ "stm32-metapac/stm32u585ci" ] | ||
| 1056 | stm32u585oi = [ "stm32-metapac/stm32u585oi" ] | ||
| 1057 | stm32u585qe = [ "stm32-metapac/stm32u585qe" ] | ||
| 1058 | stm32u585qi = [ "stm32-metapac/stm32u585qi" ] | ||
| 1059 | stm32u585ri = [ "stm32-metapac/stm32u585ri" ] | ||
| 1060 | stm32u585vi = [ "stm32-metapac/stm32u585vi" ] | ||
| 1061 | stm32u585ze = [ "stm32-metapac/stm32u585ze" ] | ||
| 1062 | stm32u585zi = [ "stm32-metapac/stm32u585zi" ] | ||
| 1040 | stm32wb55cc = [ "stm32-metapac/stm32wb55cc" ] | 1063 | stm32wb55cc = [ "stm32-metapac/stm32wb55cc" ] |
| 1041 | stm32wb55ce = [ "stm32-metapac/stm32wb55ce" ] | 1064 | stm32wb55ce = [ "stm32-metapac/stm32wb55ce" ] |
| 1042 | stm32wb55cg = [ "stm32-metapac/stm32wb55cg" ] | 1065 | stm32wb55cg = [ "stm32-metapac/stm32wb55cg" ] |
diff --git a/embassy-stm32/src/exti.rs b/embassy-stm32/src/exti.rs index 565b92f32..d63af76be 100644 --- a/embassy-stm32/src/exti.rs +++ b/embassy-stm32/src/exti.rs | |||
| @@ -30,11 +30,11 @@ fn cpu_regs() -> pac::exti::Exti { | |||
| 30 | EXTI | 30 | EXTI |
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | #[cfg(not(any(exti_g0, exti_l5, gpio_v1)))] | 33 | #[cfg(not(any(exti_g0, exti_l5, gpio_v1, exti_u5)))] |
| 34 | fn exticr_regs() -> pac::syscfg::Syscfg { | 34 | fn exticr_regs() -> pac::syscfg::Syscfg { |
| 35 | pac::SYSCFG | 35 | pac::SYSCFG |
| 36 | } | 36 | } |
| 37 | #[cfg(any(exti_g0, exti_l5))] | 37 | #[cfg(any(exti_g0, exti_l5, exti_u5))] |
| 38 | fn exticr_regs() -> pac::exti::Exti { | 38 | fn exticr_regs() -> pac::exti::Exti { |
| 39 | EXTI | 39 | EXTI |
| 40 | } | 40 | } |
| @@ -44,9 +44,9 @@ fn exticr_regs() -> pac::afio::Afio { | |||
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | pub unsafe fn on_irq() { | 46 | pub unsafe fn on_irq() { |
| 47 | #[cfg(not(any(exti_g0, exti_l5)))] | 47 | #[cfg(not(any(exti_g0, exti_l5, exti_u5)))] |
| 48 | let bits = EXTI.pr(0).read().0; | 48 | let bits = EXTI.pr(0).read().0; |
| 49 | #[cfg(any(exti_g0, exti_l5))] | 49 | #[cfg(any(exti_g0, exti_l5, exti_u5))] |
| 50 | let bits = EXTI.rpr(0).read().0 | EXTI.fpr(0).read().0; | 50 | let bits = EXTI.rpr(0).read().0 | EXTI.fpr(0).read().0; |
| 51 | 51 | ||
| 52 | // Mask all the channels that fired. | 52 | // Mask all the channels that fired. |
| @@ -58,9 +58,9 @@ pub unsafe fn on_irq() { | |||
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | // Clear pending | 60 | // Clear pending |
| 61 | #[cfg(not(any(exti_g0, exti_l5)))] | 61 | #[cfg(not(any(exti_g0, exti_l5, exti_u5)))] |
| 62 | EXTI.pr(0).write_value(Lines(bits)); | 62 | EXTI.pr(0).write_value(Lines(bits)); |
| 63 | #[cfg(any(exti_g0, exti_l5))] | 63 | #[cfg(any(exti_g0, exti_l5, exti_u5))] |
| 64 | { | 64 | { |
| 65 | EXTI.rpr(0).write_value(Lines(bits)); | 65 | EXTI.rpr(0).write_value(Lines(bits)); |
| 66 | EXTI.fpr(0).write_value(Lines(bits)); | 66 | EXTI.fpr(0).write_value(Lines(bits)); |
| @@ -148,9 +148,9 @@ impl<'a> ExtiInputFuture<'a> { | |||
| 148 | EXTI.ftsr(0).modify(|w| w.set_line(pin, falling)); | 148 | EXTI.ftsr(0).modify(|w| w.set_line(pin, falling)); |
| 149 | 149 | ||
| 150 | // clear pending bit | 150 | // clear pending bit |
| 151 | #[cfg(not(any(exti_g0, exti_l5)))] | 151 | #[cfg(not(any(exti_g0, exti_l5, exti_u5)))] |
| 152 | EXTI.pr(0).write(|w| w.set_line(pin, true)); | 152 | EXTI.pr(0).write(|w| w.set_line(pin, true)); |
| 153 | #[cfg(any(exti_g0, exti_l5))] | 153 | #[cfg(any(exti_g0, exti_l5, exti_u5))] |
| 154 | { | 154 | { |
| 155 | EXTI.rpr(0).write(|w| w.set_line(pin, true)); | 155 | EXTI.rpr(0).write(|w| w.set_line(pin, true)); |
| 156 | EXTI.fpr(0).write(|w| w.set_line(pin, true)); | 156 | EXTI.fpr(0).write(|w| w.set_line(pin, true)); |
diff --git a/embassy-stm32/src/pwr/mod.rs b/embassy-stm32/src/pwr/mod.rs index 2577eab34..bd3d23cac 100644 --- a/embassy-stm32/src/pwr/mod.rs +++ b/embassy-stm32/src/pwr/mod.rs | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #[cfg_attr(pwr_wl5, path = "wl5.rs")] | 4 | #[cfg_attr(pwr_wl5, path = "wl5.rs")] |
| 5 | #[cfg_attr(pwr_g0, path = "g0.rs")] | 5 | #[cfg_attr(pwr_g0, path = "g0.rs")] |
| 6 | #[cfg_attr(pwr_l1, path = "l1.rs")] | 6 | #[cfg_attr(pwr_l1, path = "l1.rs")] |
| 7 | #[cfg_attr(pwr_u5, path = "u5.rs")] | ||
| 7 | mod _version; | 8 | mod _version; |
| 8 | 9 | ||
| 9 | pub use _version::*; | 10 | pub use _version::*; |
diff --git a/embassy-stm32/src/pwr/u5.rs b/embassy-stm32/src/pwr/u5.rs new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/embassy-stm32/src/pwr/u5.rs | |||
diff --git a/embassy-stm32/src/rcc/mod.rs b/embassy-stm32/src/rcc/mod.rs index 28def28ab..8db2f10ea 100644 --- a/embassy-stm32/src/rcc/mod.rs +++ b/embassy-stm32/src/rcc/mod.rs | |||
| @@ -24,19 +24,19 @@ pub struct Clocks { | |||
| 24 | #[cfg(not(rcc_g0))] | 24 | #[cfg(not(rcc_g0))] |
| 25 | pub apb2_tim: Hertz, | 25 | pub apb2_tim: Hertz, |
| 26 | 26 | ||
| 27 | #[cfg(rcc_wl5)] | 27 | #[cfg(any(rcc_wl5, rcc_u5))] |
| 28 | pub apb3: Hertz, | 28 | pub apb3: Hertz, |
| 29 | 29 | ||
| 30 | #[cfg(any(rcc_l0, rcc_l1, rcc_f0, rcc_f1, rcc_f0x0, rcc_g0))] | 30 | #[cfg(any(rcc_l0, rcc_l1, rcc_f0, rcc_f1, rcc_f0x0, rcc_g0))] |
| 31 | pub ahb: Hertz, | 31 | pub ahb: Hertz, |
| 32 | 32 | ||
| 33 | #[cfg(any(rcc_l4, rcc_f4, rcc_f7, rcc_h7, rcc_wb, rcc_wl5))] | 33 | #[cfg(any(rcc_l4, rcc_f4, rcc_f7, rcc_h7, rcc_u5, rcc_wb, rcc_wl5))] |
| 34 | pub ahb1: Hertz, | 34 | pub ahb1: Hertz, |
| 35 | 35 | ||
| 36 | #[cfg(any(rcc_l4, rcc_f4, rcc_f7, rcc_h7, rcc_wb, rcc_wl5))] | 36 | #[cfg(any(rcc_l4, rcc_f4, rcc_f7, rcc_h7, rcc_u5, rcc_wb, rcc_wl5))] |
| 37 | pub ahb2: Hertz, | 37 | pub ahb2: Hertz, |
| 38 | 38 | ||
| 39 | #[cfg(any(rcc_l4, rcc_f4, rcc_f7, rcc_h7, rcc_wb, rcc_wl5))] | 39 | #[cfg(any(rcc_l4, rcc_f4, rcc_f7, rcc_h7, rcc_u5, rcc_wb, rcc_wl5))] |
| 40 | pub ahb3: Hertz, | 40 | pub ahb3: Hertz, |
| 41 | 41 | ||
| 42 | #[cfg(any(rcc_h7))] | 42 | #[cfg(any(rcc_h7))] |
| @@ -100,6 +100,9 @@ cfg_if::cfg_if! { | |||
| 100 | } else if #[cfg(any(rcc_g0))] { | 100 | } else if #[cfg(any(rcc_g0))] { |
| 101 | mod g0; | 101 | mod g0; |
| 102 | pub use g0::*; | 102 | pub use g0::*; |
| 103 | } else if #[cfg(any(rcc_u5))] { | ||
| 104 | mod u5; | ||
| 105 | pub use u5::*; | ||
| 103 | } | 106 | } |
| 104 | } | 107 | } |
| 105 | 108 | ||
diff --git a/embassy-stm32/src/rcc/u5/mod.rs b/embassy-stm32/src/rcc/u5/mod.rs new file mode 100644 index 000000000..a713be499 --- /dev/null +++ b/embassy-stm32/src/rcc/u5/mod.rs | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | pub struct Config {} | ||
| 2 | |||
| 3 | impl Config { | ||
| 4 | pub fn new() -> Self { | ||
| 5 | Config {} | ||
| 6 | } | ||
| 7 | } | ||
| 8 | |||
| 9 | impl Default for Config { | ||
| 10 | fn default() -> Self { | ||
| 11 | Config::new() | ||
| 12 | } | ||
| 13 | } | ||
| 14 | |||
| 15 | pub unsafe fn init(config: Config) {} | ||
diff --git a/examples/stm32l4/.cargo/config.toml b/examples/stm32l4/.cargo/config.toml index b157e3aeb..d32ca4ae9 100644 --- a/examples/stm32l4/.cargo/config.toml +++ b/examples/stm32l4/.cargo/config.toml | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | [target.'cfg(all(target_arch = "arm", target_os = "none"))'] | 1 | [target.'cfg(all(target_arch = "arm", target_os = "none"))'] |
| 2 | # replace STM32F429ZITx with your chip as listed in `probe-run --list-chips` | 2 | # replace STM32F429ZITx with your chip as listed in `probe-run --list-chips` |
| 3 | #runner = "probe-run --chip STM32L475VGT6" | 3 | #runner = "probe-run --chip STM32L475VGT6" |
| 4 | runner = "probe-run --chip STM32L475VG" | 4 | #runner = "probe-run --chip STM32L475VG" |
| 5 | runner = "probe-run --chip STM32L4S5VI" | ||
| 5 | 6 | ||
| 6 | rustflags = [ | 7 | rustflags = [ |
| 7 | # LLD (shipped with the Rust toolchain) is used as the default linker | 8 | # LLD (shipped with the Rust toolchain) is used as the default linker |
diff --git a/stm32-data b/stm32-data | |||
| Subproject 8d3ca7adc6eac3d648bf0c33509e678beaba105 | Subproject bd731709fb98935a632ff63ff0ae8e607397f0f | ||
diff --git a/stm32-gen-features/src/lib.rs b/stm32-gen-features/src/lib.rs index 381fd1c17..756f4da83 100644 --- a/stm32-gen-features/src/lib.rs +++ b/stm32-gen-features/src/lib.rs | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | use std::{iter::FilterMap, path::Path, slice::Iter}; | 3 | use std::{iter::FilterMap, path::Path, slice::Iter}; |
| 4 | 4 | ||
| 5 | const SUPPORTED_FAMILIES: [&str; 11] = [ | 5 | const SUPPORTED_FAMILIES: [&str; 12] = [ |
| 6 | "stm32f0", | 6 | "stm32f0", |
| 7 | "stm32f1", | 7 | "stm32f1", |
| 8 | "stm32f4", | 8 | "stm32f4", |
| @@ -12,6 +12,7 @@ const SUPPORTED_FAMILIES: [&str; 11] = [ | |||
| 12 | "stm32l1", | 12 | "stm32l1", |
| 13 | "stm32l4", | 13 | "stm32l4", |
| 14 | "stm32h7", | 14 | "stm32h7", |
| 15 | "stm32u5", | ||
| 15 | "stm32wb55", | 16 | "stm32wb55", |
| 16 | "stm32wl55", | 17 | "stm32wl55", |
| 17 | ]; | 18 | ]; |
diff --git a/stm32-metapac-gen/src/lib.rs b/stm32-metapac-gen/src/lib.rs index 79dd734ce..3480ac364 100644 --- a/stm32-metapac-gen/src/lib.rs +++ b/stm32-metapac-gen/src/lib.rs | |||
| @@ -150,6 +150,9 @@ macro_rules! peripheral_count {{ | |||
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | fn make_dma_channel_counts(out: &mut String, data: &BTreeMap<String, u8>) { | 152 | fn make_dma_channel_counts(out: &mut String, data: &BTreeMap<String, u8>) { |
| 153 | if data.len() == 0 { | ||
| 154 | return; | ||
| 155 | } | ||
| 153 | write!( | 156 | write!( |
| 154 | out, | 157 | out, |
| 155 | "#[macro_export] | 158 | "#[macro_export] |
diff --git a/stm32-metapac/Cargo.toml b/stm32-metapac/Cargo.toml index 3b16949c6..1395e7f60 100644 --- a/stm32-metapac/Cargo.toml +++ b/stm32-metapac/Cargo.toml | |||
| @@ -1215,6 +1215,29 @@ stm32l562qe = [] | |||
| 1215 | stm32l562re = [] | 1215 | stm32l562re = [] |
| 1216 | stm32l562ve = [] | 1216 | stm32l562ve = [] |
| 1217 | stm32l562ze = [] | 1217 | stm32l562ze = [] |
| 1218 | stm32u575ag = [] | ||
| 1219 | stm32u575ai = [] | ||
| 1220 | stm32u575cg = [] | ||
| 1221 | stm32u575ci = [] | ||
| 1222 | stm32u575og = [] | ||
| 1223 | stm32u575oi = [] | ||
| 1224 | stm32u575qg = [] | ||
| 1225 | stm32u575qi = [] | ||
| 1226 | stm32u575rg = [] | ||
| 1227 | stm32u575ri = [] | ||
| 1228 | stm32u575vg = [] | ||
| 1229 | stm32u575vi = [] | ||
| 1230 | stm32u575zg = [] | ||
| 1231 | stm32u575zi = [] | ||
| 1232 | stm32u585ai = [] | ||
| 1233 | stm32u585ci = [] | ||
| 1234 | stm32u585oi = [] | ||
| 1235 | stm32u585qe = [] | ||
| 1236 | stm32u585qi = [] | ||
| 1237 | stm32u585ri = [] | ||
| 1238 | stm32u585vi = [] | ||
| 1239 | stm32u585ze = [] | ||
| 1240 | stm32u585zi = [] | ||
| 1218 | stm32wb10cc = [] | 1241 | stm32wb10cc = [] |
| 1219 | stm32wb15cc = [] | 1242 | stm32wb15cc = [] |
| 1220 | stm32wb30ce = [] | 1243 | stm32wb30ce = [] |
