aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf <[email protected]>2022-05-11 19:57:56 +0200
committerRalf <[email protected]>2022-05-12 09:09:30 +0200
commitf4677469f9e9fc7bdc24577d9111636b4de2df46 (patch)
tree9d8601b1fe9a512e2a0efedb76ef017ca87e62bf
parent604051777419591cf66f5d06196cf16d3e399752 (diff)
stm32/usart: Data length is including parity. To get e.g. 8E1 you need to choose 9 data bits
-rw-r--r--embassy-stm32/src/usart/mod.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index 6feecd184..472680113 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -219,7 +219,11 @@ impl<'d, T: Instance, TxDma, RxDma> Uart<'d, T, TxDma, RxDma> {
219 w.set_ue(true); 219 w.set_ue(true);
220 w.set_te(true); 220 w.set_te(true);
221 w.set_re(true); 221 w.set_re(true);
222 w.set_m0(vals::M0::BIT8); 222 w.set_m0(if config.parity != Parity::ParityNone {
223 vals::M0::BIT9
224 } else {
225 vals::M0::BIT8
226 });
223 w.set_pce(config.parity != Parity::ParityNone); 227 w.set_pce(config.parity != Parity::ParityNone);
224 w.set_ps(match config.parity { 228 w.set_ps(match config.parity {
225 Parity::ParityOdd => vals::Ps::ODD, 229 Parity::ParityOdd => vals::Ps::ODD,