aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-10-17 01:05:18 +0000
committerGitHub <[email protected]>2023-10-17 01:05:18 +0000
commit683d5c30669bbb788e60ee3dd31ce30ba14c2d69 (patch)
tree525e40103da60e5c1664897a472ae602f65d09ae
parent3e3317e8bd4a0c11655fb48a4bcff77791c105bc (diff)
parenta3574e519ad191c3c4c49fe9779a0a71d61cae3b (diff)
Merge pull request #2077 from xoviat/rcc
stm32: update metapac
-rw-r--r--embassy-stm32/Cargo.toml4
-rw-r--r--embassy-stm32/build.rs18
-rw-r--r--embassy-stm32/src/rcc/c0.rs2
-rw-r--r--embassy-stm32/src/rcc/l0l1.rs4
-rw-r--r--embassy-stm32/src/rcc/l4l5.rs25
-rw-r--r--embassy-stm32/src/rcc/mod.rs16
-rw-r--r--examples/stm32l4/src/bin/adc.rs2
-rw-r--r--examples/stm32l4/src/bin/mco.rs2
-rw-r--r--examples/stm32l4/src/bin/rng.rs2
-rw-r--r--examples/stm32l4/src/bin/usb_serial.rs2
-rw-r--r--tests/stm32/src/common.rs2
11 files changed, 54 insertions, 25 deletions
diff --git a/embassy-stm32/Cargo.toml b/embassy-stm32/Cargo.toml
index 1342b2eab..861753bda 100644
--- a/embassy-stm32/Cargo.toml
+++ b/embassy-stm32/Cargo.toml
@@ -58,7 +58,7 @@ rand_core = "0.6.3"
58sdio-host = "0.5.0" 58sdio-host = "0.5.0"
59embedded-sdmmc = { git = "https://github.com/embassy-rs/embedded-sdmmc-rs", rev = "a4f293d3a6f72158385f79c98634cb8a14d0d2fc", optional = true } 59embedded-sdmmc = { git = "https://github.com/embassy-rs/embedded-sdmmc-rs", rev = "a4f293d3a6f72158385f79c98634cb8a14d0d2fc", optional = true }
60critical-section = "1.1" 60critical-section = "1.1"
61stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-9330e31117668350a62572fdcd2598ec17d08042" } 61stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-c20cbde88fdfaef4645361d09df0cb63a4dc6462" }
62vcell = "0.1.3" 62vcell = "0.1.3"
63bxcan = "0.7.0" 63bxcan = "0.7.0"
64nb = "1.0.0" 64nb = "1.0.0"
@@ -76,7 +76,7 @@ critical-section = { version = "1.1", features = ["std"] }
76[build-dependencies] 76[build-dependencies]
77proc-macro2 = "1.0.36" 77proc-macro2 = "1.0.36"
78quote = "1.0.15" 78quote = "1.0.15"
79stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-9330e31117668350a62572fdcd2598ec17d08042", default-features = false, features = ["metadata"]} 79stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-c20cbde88fdfaef4645361d09df0cb63a4dc6462", default-features = false, features = ["metadata"]}
80 80
81 81
82[features] 82[features]
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs
index d118b851e..f8908756d 100644
--- a/embassy-stm32/build.rs
+++ b/embassy-stm32/build.rs
@@ -466,15 +466,9 @@ fn main() {
466 466
467 let ptype = if let Some(reg) = &p.registers { reg.kind } else { "" }; 467 let ptype = if let Some(reg) = &p.registers { reg.kind } else { "" };
468 let pname = format_ident!("{}", p.name); 468 let pname = format_ident!("{}", p.name);
469 let clk = format_ident!( 469 let clk = format_ident!("{}", rcc.clock);
470 "{}", 470 let en_reg = format_ident!("{}", en.register);
471 rcc.clock 471 let set_en_field = format_ident!("set_{}", en.field);
472 .to_ascii_lowercase()
473 .replace("ahb", "hclk")
474 .replace("apb", "pclk")
475 );
476 let en_reg = format_ident!("{}", en.register.to_ascii_lowercase());
477 let set_en_field = format_ident!("set_{}", en.field.to_ascii_lowercase());
478 472
479 let (before_enable, before_disable) = if refcounted_peripherals.contains(ptype) { 473 let (before_enable, before_disable) = if refcounted_peripherals.contains(ptype) {
480 let refcount_static = 474 let refcount_static =
@@ -500,11 +494,11 @@ fn main() {
500 (TokenStream::new(), TokenStream::new()) 494 (TokenStream::new(), TokenStream::new())
501 }; 495 };
502 496
497 let mux_supported = HashSet::from(["c0", "h5", "h50", "h7", "h7ab", "h7rm0433", "g4", "l4"])
498 .contains(rcc_registers.version);
503 let mux_for = |mux: Option<&'static PeripheralRccRegister>| { 499 let mux_for = |mux: Option<&'static PeripheralRccRegister>| {
504 let checked_rccs = HashSet::from(["h5", "h50", "h7", "h7ab", "h7rm0433", "g4"]);
505
506 // restrict mux implementation to supported versions 500 // restrict mux implementation to supported versions
507 if !checked_rccs.contains(rcc_registers.version) { 501 if !mux_supported {
508 return None; 502 return None;
509 } 503 }
510 504
diff --git a/embassy-stm32/src/rcc/c0.rs b/embassy-stm32/src/rcc/c0.rs
index e357f0675..68f029ca0 100644
--- a/embassy-stm32/src/rcc/c0.rs
+++ b/embassy-stm32/src/rcc/c0.rs
@@ -134,6 +134,8 @@ pub(crate) unsafe fn init(config: Config) {
134 }; 134 };
135 135
136 set_freqs(Clocks { 136 set_freqs(Clocks {
137 hsi: None,
138 lse: None,
137 sys: sys_clk, 139 sys: sys_clk,
138 hclk1: ahb_freq, 140 hclk1: ahb_freq,
139 pclk1: apb_freq, 141 pclk1: apb_freq,
diff --git a/embassy-stm32/src/rcc/l0l1.rs b/embassy-stm32/src/rcc/l0l1.rs
index 308b75aec..333e9eea9 100644
--- a/embassy-stm32/src/rcc/l0l1.rs
+++ b/embassy-stm32/src/rcc/l0l1.rs
@@ -31,7 +31,7 @@ pub enum PLLSource {
31impl From<PLLSource> for Pllsrc { 31impl From<PLLSource> for Pllsrc {
32 fn from(val: PLLSource) -> Pllsrc { 32 fn from(val: PLLSource) -> Pllsrc {
33 match val { 33 match val {
34 PLLSource::HSI16 => Pllsrc::HSI16, 34 PLLSource::HSI16 => Pllsrc::HSI,
35 PLLSource::HSE(_) => Pllsrc::HSE, 35 PLLSource::HSE(_) => Pllsrc::HSE,
36 } 36 }
37 } 37 }
@@ -88,7 +88,7 @@ pub(crate) unsafe fn init(config: Config) {
88 RCC.cr().write(|w| w.set_hsi16on(true)); 88 RCC.cr().write(|w| w.set_hsi16on(true));
89 while !RCC.cr().read().hsi16rdy() {} 89 while !RCC.cr().read().hsi16rdy() {}
90 90
91 (HSI_FREQ, Sw::HSI16) 91 (HSI_FREQ, Sw::HSI)
92 } 92 }
93 ClockSrc::HSE(freq) => { 93 ClockSrc::HSE(freq) => {
94 // Enable HSE 94 // Enable HSE
diff --git a/embassy-stm32/src/rcc/l4l5.rs b/embassy-stm32/src/rcc/l4l5.rs
index 90c8923c1..d99bc45c5 100644
--- a/embassy-stm32/src/rcc/l4l5.rs
+++ b/embassy-stm32/src/rcc/l4l5.rs
@@ -187,7 +187,10 @@ pub(crate) unsafe fn init(config: Config) {
187 187
188 let sys_clk = match config.mux { 188 let sys_clk = match config.mux {
189 ClockSrc::HSE => hse.unwrap(), 189 ClockSrc::HSE => hse.unwrap(),
190 #[cfg(rcc_l5)]
190 ClockSrc::HSI16 => hsi16.unwrap(), 191 ClockSrc::HSI16 => hsi16.unwrap(),
192 #[cfg(not(rcc_l5))]
193 ClockSrc::HSI => hsi16.unwrap(),
191 ClockSrc::MSI => msi.unwrap(), 194 ClockSrc::MSI => msi.unwrap(),
192 ClockSrc::PLL => pll._r.unwrap(), 195 ClockSrc::PLL => pll._r.unwrap(),
193 }; 196 };
@@ -200,7 +203,10 @@ pub(crate) unsafe fn init(config: Config) {
200 Clk48Src::HSI48 => hsi48, 203 Clk48Src::HSI48 => hsi48,
201 Clk48Src::MSI => msi, 204 Clk48Src::MSI => msi,
202 Clk48Src::PLLSAI1_Q => pllsai1._q, 205 Clk48Src::PLLSAI1_Q => pllsai1._q,
206 #[cfg(rcc_l5)]
203 Clk48Src::PLL_Q => pll._q, 207 Clk48Src::PLL_Q => pll._q,
208 #[cfg(not(rcc_l5))]
209 Clk48Src::PLL1_Q => pll._q,
204 }; 210 };
205 211
206 #[cfg(rcc_l4plus)] 212 #[cfg(rcc_l4plus)]
@@ -266,6 +272,22 @@ pub(crate) unsafe fn init(config: Config) {
266 pclk2: apb2_freq, 272 pclk2: apb2_freq,
267 pclk1_tim: apb1_tim_freq, 273 pclk1_tim: apb1_tim_freq,
268 pclk2_tim: apb2_tim_freq, 274 pclk2_tim: apb2_tim_freq,
275 #[cfg(rcc_l4)]
276 hsi: None,
277 #[cfg(rcc_l4)]
278 lse: None,
279 #[cfg(rcc_l4)]
280 pllsai1_p: None,
281 #[cfg(rcc_l4)]
282 pllsai2_p: None,
283 #[cfg(rcc_l4)]
284 pll1_p: None,
285 #[cfg(rcc_l4)]
286 pll1_q: None,
287 #[cfg(rcc_l4)]
288 sai1_extclk: None,
289 #[cfg(rcc_l4)]
290 sai2_extclk: None,
269 rtc, 291 rtc,
270 }); 292 });
271} 293}
@@ -341,7 +363,10 @@ fn init_pll(instance: PllInstance, config: Option<Pll>, input: &PllInput) -> Pll
341 let pll_src = match pll.source { 363 let pll_src = match pll.source {
342 PLLSource::NONE => panic!("must not select PLL source as NONE"), 364 PLLSource::NONE => panic!("must not select PLL source as NONE"),
343 PLLSource::HSE => input.hse, 365 PLLSource::HSE => input.hse,
366 #[cfg(rcc_l5)]
344 PLLSource::HSI16 => input.hsi16, 367 PLLSource::HSI16 => input.hsi16,
368 #[cfg(not(rcc_l5))]
369 PLLSource::HSI => input.hsi16,
345 PLLSource::MSI => input.msi, 370 PLLSource::MSI => input.msi,
346 }; 371 };
347 372
diff --git a/embassy-stm32/src/rcc/mod.rs b/embassy-stm32/src/rcc/mod.rs
index 8df6deaae..d587a1988 100644
--- a/embassy-stm32/src/rcc/mod.rs
+++ b/embassy-stm32/src/rcc/mod.rs
@@ -110,14 +110,18 @@ pub struct Clocks {
110 #[cfg(all(rcc_f4, not(stm32f410)))] 110 #[cfg(all(rcc_f4, not(stm32f410)))]
111 pub plli2s1_r: Option<Hertz>, 111 pub plli2s1_r: Option<Hertz>,
112 112
113 #[cfg(rcc_l4)]
114 pub pllsai1_p: Option<Hertz>,
113 #[cfg(any(stm32f427, stm32f429, stm32f437, stm32f439, stm32f446, stm32f469, stm32f479))] 115 #[cfg(any(stm32f427, stm32f429, stm32f437, stm32f439, stm32f446, stm32f469, stm32f479))]
114 pub pllsai1_q: Option<Hertz>, 116 pub pllsai1_q: Option<Hertz>,
115 #[cfg(any(stm32f427, stm32f429, stm32f437, stm32f439, stm32f446, stm32f469, stm32f479))] 117 #[cfg(any(stm32f427, stm32f429, stm32f437, stm32f439, stm32f446, stm32f469, stm32f479))]
116 pub pllsai1_r: Option<Hertz>, 118 pub pllsai1_r: Option<Hertz>,
119 #[cfg(rcc_l4)]
120 pub pllsai2_p: Option<Hertz>,
117 121
118 #[cfg(stm32g4)] 122 #[cfg(any(stm32g4, rcc_l4))]
119 pub pll1_p: Option<Hertz>, 123 pub pll1_p: Option<Hertz>,
120 #[cfg(any(stm32h5, stm32h7, rcc_f2, rcc_f4, rcc_f410, rcc_f7))] 124 #[cfg(any(stm32h5, stm32h7, rcc_f2, rcc_f4, rcc_f410, rcc_f7, rcc_l4))]
121 pub pll1_q: Option<Hertz>, 125 pub pll1_q: Option<Hertz>,
122 #[cfg(any(stm32h5, stm32h7))] 126 #[cfg(any(stm32h5, stm32h7))]
123 pub pll2_p: Option<Hertz>, 127 pub pll2_p: Option<Hertz>,
@@ -154,7 +158,7 @@ pub struct Clocks {
154 158
155 pub rtc: Option<Hertz>, 159 pub rtc: Option<Hertz>,
156 160
157 #[cfg(any(stm32h5, stm32h7))] 161 #[cfg(any(stm32h5, stm32h7, rcc_l4, rcc_c0))]
158 pub hsi: Option<Hertz>, 162 pub hsi: Option<Hertz>,
159 #[cfg(stm32h5)] 163 #[cfg(stm32h5)]
160 pub hsi48: Option<Hertz>, 164 pub hsi48: Option<Hertz>,
@@ -163,7 +167,7 @@ pub struct Clocks {
163 #[cfg(any(stm32h5, stm32h7))] 167 #[cfg(any(stm32h5, stm32h7))]
164 pub csi: Option<Hertz>, 168 pub csi: Option<Hertz>,
165 169
166 #[cfg(any(stm32h5, stm32h7))] 170 #[cfg(any(stm32h5, stm32h7, rcc_l4, rcc_c0))]
167 pub lse: Option<Hertz>, 171 pub lse: Option<Hertz>,
168 #[cfg(any(stm32h5, stm32h7))] 172 #[cfg(any(stm32h5, stm32h7))]
169 pub hse: Option<Hertz>, 173 pub hse: Option<Hertz>,
@@ -175,6 +179,10 @@ pub struct Clocks {
175 179
176 #[cfg(stm32h7)] 180 #[cfg(stm32h7)]
177 pub rcc_pclk_d3: Option<Hertz>, 181 pub rcc_pclk_d3: Option<Hertz>,
182 #[cfg(rcc_l4)]
183 pub sai1_extclk: Option<Hertz>,
184 #[cfg(rcc_l4)]
185 pub sai2_extclk: Option<Hertz>,
178} 186}
179 187
180#[cfg(feature = "low-power")] 188#[cfg(feature = "low-power")]
diff --git a/examples/stm32l4/src/bin/adc.rs b/examples/stm32l4/src/bin/adc.rs
index 3d0c623fd..a0ec5c33e 100644
--- a/examples/stm32l4/src/bin/adc.rs
+++ b/examples/stm32l4/src/bin/adc.rs
@@ -13,7 +13,7 @@ fn main() -> ! {
13 info!("Hello World!"); 13 info!("Hello World!");
14 14
15 pac::RCC.ccipr().modify(|w| { 15 pac::RCC.ccipr().modify(|w| {
16 w.set_adcsel(pac::rcc::vals::Adcsel::SYSCLK); 16 w.set_adcsel(pac::rcc::vals::Adcsel::SYS);
17 }); 17 });
18 pac::RCC.ahb2enr().modify(|w| w.set_adcen(true)); 18 pac::RCC.ahb2enr().modify(|w| w.set_adcen(true));
19 19
diff --git a/examples/stm32l4/src/bin/mco.rs b/examples/stm32l4/src/bin/mco.rs
index 2833bb636..504879887 100644
--- a/examples/stm32l4/src/bin/mco.rs
+++ b/examples/stm32l4/src/bin/mco.rs
@@ -14,7 +14,7 @@ async fn main(_spawner: Spawner) {
14 let p = embassy_stm32::init(Default::default()); 14 let p = embassy_stm32::init(Default::default());
15 info!("Hello World!"); 15 info!("Hello World!");
16 16
17 let _mco = Mco::new(p.MCO, p.PA8, McoSource::HSI16, McoPrescaler::DIV1); 17 let _mco = Mco::new(p.MCO, p.PA8, McoSource::HSI, McoPrescaler::DIV1);
18 18
19 let mut led = Output::new(p.PB14, Level::High, Speed::Low); 19 let mut led = Output::new(p.PB14, Level::High, Speed::Low);
20 20
diff --git a/examples/stm32l4/src/bin/rng.rs b/examples/stm32l4/src/bin/rng.rs
index d184bcf77..49ae15e6b 100644
--- a/examples/stm32l4/src/bin/rng.rs
+++ b/examples/stm32l4/src/bin/rng.rs
@@ -19,7 +19,7 @@ async fn main(_spawner: Spawner) {
19 config.rcc.mux = ClockSrc::PLL; 19 config.rcc.mux = ClockSrc::PLL;
20 config.rcc.hsi16 = true; 20 config.rcc.hsi16 = true;
21 config.rcc.pll = Some(Pll { 21 config.rcc.pll = Some(Pll {
22 source: PLLSource::HSI16, 22 source: PLLSource::HSI,
23 prediv: PllPreDiv::DIV1, 23 prediv: PllPreDiv::DIV1,
24 mul: PllMul::MUL18, 24 mul: PllMul::MUL18,
25 divp: None, 25 divp: None,
diff --git a/examples/stm32l4/src/bin/usb_serial.rs b/examples/stm32l4/src/bin/usb_serial.rs
index 3785c6898..34361d112 100644
--- a/examples/stm32l4/src/bin/usb_serial.rs
+++ b/examples/stm32l4/src/bin/usb_serial.rs
@@ -27,7 +27,7 @@ async fn main(_spawner: Spawner) {
27 config.rcc.mux = ClockSrc::PLL; 27 config.rcc.mux = ClockSrc::PLL;
28 config.rcc.hsi16 = true; 28 config.rcc.hsi16 = true;
29 config.rcc.pll = Some(Pll { 29 config.rcc.pll = Some(Pll {
30 source: PLLSource::HSI16, 30 source: PLLSource::HSI,
31 prediv: PllPreDiv::DIV1, 31 prediv: PllPreDiv::DIV1,
32 mul: PllMul::MUL10, 32 mul: PllMul::MUL10,
33 divp: None, 33 divp: None,
diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs
index 6dc1b3002..a802cdfcf 100644
--- a/tests/stm32/src/common.rs
+++ b/tests/stm32/src/common.rs
@@ -290,7 +290,7 @@ pub fn config() -> Config {
290 config.rcc.mux = ClockSrc::PLL; 290 config.rcc.mux = ClockSrc::PLL;
291 config.rcc.hsi16 = true; 291 config.rcc.hsi16 = true;
292 config.rcc.pll = Some(Pll { 292 config.rcc.pll = Some(Pll {
293 source: PLLSource::HSI16, 293 source: PLLSource::HSI,
294 prediv: PllPreDiv::DIV1, 294 prediv: PllPreDiv::DIV1,
295 mul: PllMul::MUL18, 295 mul: PllMul::MUL18,
296 divp: None, 296 divp: None,