aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoonas Javanainen <[email protected]>2022-03-27 18:45:10 +0300
committerJoonas Javanainen <[email protected]>2022-03-27 19:00:36 +0300
commit83211c2b615a781c7569907aff2f9ae977b16be3 (patch)
tree3111a46b558622752624bb50219ab110dc78cd6b
parenta16fef21e1e8004a207a85cf542f3402213cac87 (diff)
Add workaround for F2 errata
-rw-r--r--embassy-stm32/build.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs
index 4cba1c669..2c8409a35 100644
--- a/embassy-stm32/build.rs
+++ b/embassy-stm32/build.rs
@@ -166,6 +166,15 @@ fn main() {
166 None => TokenStream::new(), 166 None => TokenStream::new(),
167 }; 167 };
168 168
169 let after_enable = if chip_name.starts_with("stm32f2") {
170 // Errata: ES0005 - 2.1.11 Delay after an RCC peripheral clock enabling
171 quote! {
172 cortex_m::asm::dsb();
173 }
174 } else {
175 TokenStream::new()
176 };
177
169 let pname = format_ident!("{}", p.name); 178 let pname = format_ident!("{}", p.name);
170 let clk = format_ident!("{}", rcc.clock.to_ascii_lowercase()); 179 let clk = format_ident!("{}", rcc.clock.to_ascii_lowercase());
171 let en_reg = format_ident!("{}", en.register.to_ascii_lowercase()); 180 let en_reg = format_ident!("{}", en.register.to_ascii_lowercase());
@@ -180,7 +189,8 @@ fn main() {
180 } 189 }
181 fn enable() { 190 fn enable() {
182 critical_section::with(|_| unsafe { 191 critical_section::with(|_| unsafe {
183 crate::pac::RCC.#en_reg().modify(|w| w.#set_en_field(true)) 192 crate::pac::RCC.#en_reg().modify(|w| w.#set_en_field(true));
193 #after_enable
184 }) 194 })
185 } 195 }
186 fn disable() { 196 fn disable() {