aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32/src
diff options
context:
space:
mode:
authorxoviat <[email protected]>2025-11-20 22:19:22 +0000
committerGitHub <[email protected]>2025-11-20 22:19:22 +0000
commit96a026c73bad2ebb8dfc78e88c9690611bf2cb97 (patch)
treec38404a055dcd2173b35be67e83dcf52f8d7686a /embassy-stm32/src
parentde1e5f731839587e4743e91ce965415720380fb4 (diff)
parent759d5d511a309db020eb6ee30a63b1d7925f99bb (diff)
Merge pull request #4927 from leftger/fix/stm32wba-adc4
stm32: Fixed ADC4 enable() for WBA
Diffstat (limited to 'embassy-stm32/src')
-rw-r--r--embassy-stm32/src/adc/adc4.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/embassy-stm32/src/adc/adc4.rs b/embassy-stm32/src/adc/adc4.rs
index 499fc2093..472eb46fd 100644
--- a/embassy-stm32/src/adc/adc4.rs
+++ b/embassy-stm32/src/adc/adc4.rs
@@ -113,10 +113,26 @@ foreach_adc!(
113 } 113 }
114 114
115 fn enable() { 115 fn enable() {
116 let cr_initial = ADC4::regs().cr().read();
117 let isr_initial = ADC4::regs().isr().read();
118
119 if cr_initial.aden() && isr_initial.adrdy() {
120 return;
121 }
122
123 if cr_initial.aden() || cr_initial.adstart() {
124 if cr_initial.adstart() {
125 ADC4::regs().cr().modify(|w| w.set_adstp(true));
126 while ADC4::regs().cr().read().adstart() {}
127 }
128
129 ADC4::regs().cr().modify(|w| w.set_addis(true));
130 while ADC4::regs().cr().read().aden() {}
131 }
132
116 ADC4::regs().isr().write(|w| w.set_adrdy(true)); 133 ADC4::regs().isr().write(|w| w.set_adrdy(true));
117 ADC4::regs().cr().modify(|w| w.set_aden(true)); 134 ADC4::regs().cr().modify(|w| w.set_aden(true));
118 while !ADC4::regs().isr().read().adrdy() {} 135 while !ADC4::regs().isr().read().adrdy() {}
119 ADC4::regs().isr().write(|w| w.set_adrdy(true));
120 } 136 }
121 137
122 fn start() { 138 fn start() {