diff options
Diffstat (limited to 'embassy-stm32/src')
| -rw-r--r-- | embassy-stm32/src/timer/input_capture.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/embassy-stm32/src/timer/input_capture.rs b/embassy-stm32/src/timer/input_capture.rs index cbb4bb1d4..d8dbdee66 100644 --- a/embassy-stm32/src/timer/input_capture.rs +++ b/embassy-stm32/src/timer/input_capture.rs | |||
| @@ -165,10 +165,13 @@ impl<'d, T: GeneralInstance4Channel> InputCapture<'d, T> { | |||
| 165 | let req = dma.request(); | 165 | let req = dma.request(); |
| 166 | 166 | ||
| 167 | let original_enable_state = self.is_enabled(M::CHANNEL); | 167 | let original_enable_state = self.is_enabled(M::CHANNEL); |
| 168 | let original_update_dma_state = self.inner.get_update_dma_state(); | 168 | let original_cc_dma_enable_state = self.inner.get_cc_dma_enable_state(M::CHANNEL); |
| 169 | 169 | ||
| 170 | if !original_update_dma_state { | 170 | self.inner.set_input_ti_selection(M::CHANNEL, InputTISelection::Normal); |
| 171 | self.inner.enable_update_dma(true); | 171 | self.inner.set_input_capture_mode(M::CHANNEL, InputCaptureMode::BothEdges); |
| 172 | |||
| 173 | if !original_cc_dma_enable_state { | ||
| 174 | self.inner.set_cc_dma_enable_state(M::CHANNEL, true); | ||
| 172 | } | 175 | } |
| 173 | 176 | ||
| 174 | if !original_enable_state { | 177 | if !original_enable_state { |
| @@ -181,7 +184,7 @@ impl<'d, T: GeneralInstance4Channel> InputCapture<'d, T> { | |||
| 181 | Transfer::new_read( | 184 | Transfer::new_read( |
| 182 | dma, | 185 | dma, |
| 183 | req, | 186 | req, |
| 184 | self.inner.regs_1ch().ccr(M::CHANNEL.index()).as_ptr() as *mut u16, | 187 | self.inner.regs_gp16().ccr(M::CHANNEL.index()).as_ptr() as *mut u16, |
| 185 | buf, | 188 | buf, |
| 186 | TransferOptions::default(), | 189 | TransferOptions::default(), |
| 187 | ) | 190 | ) |
