aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob McWhirter <[email protected]>2021-05-14 10:11:43 -0400
committerBob McWhirter <[email protected]>2021-05-14 10:11:43 -0400
commit2569d38ab4bce2d927fbdd07129311b04718df4f (patch)
tree4b949b81bf4fec8f1683d80f5914453d96e6b453
parent9e93a0999f3fe6588ead99acf423bf83bee10c7c (diff)
Adjust pin-names to FooPin.
Move common bits up to spi/mod.rs. Isolate the RNG interrupt in a sub-module to avoid conflict with the const.
-rw-r--r--embassy-stm32/gen.py6
-rw-r--r--embassy-stm32/src/lib.rs2
-rw-r--r--embassy-stm32/src/pac/regs.rs11706
-rw-r--r--embassy-stm32/src/pac/stm32f401cb.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401cc.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401cd.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401ce.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401rb.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401rc.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401rd.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401re.rs40
-rw-r--r--embassy-stm32/src/pac/stm32f401vb.rs52
-rw-r--r--embassy-stm32/src/pac/stm32f401vc.rs52
-rw-r--r--embassy-stm32/src/pac/stm32f401vd.rs52
-rw-r--r--embassy-stm32/src/pac/stm32f401ve.rs52
-rw-r--r--embassy-stm32/src/pac/stm32f405oe.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f405og.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f405rg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f405vg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f405zg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f407ie.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f407ig.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f407ve.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f407vg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f407ze.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f407zg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f411cc.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f411ce.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f411rc.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f411re.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f411vc.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f411ve.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f412ce.rs54
-rw-r--r--embassy-stm32/src/pac/stm32f412cg.rs54
-rw-r--r--embassy-stm32/src/pac/stm32f412re.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f412rg.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f412ve.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f412vg.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f412ze.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f412zg.rs82
-rw-r--r--embassy-stm32/src/pac/stm32f413cg.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413ch.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413mg.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413mh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413rg.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413rh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413vg.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413vh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413zg.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f413zh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f415og.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f415rg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f415vg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f415zg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f417ie.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f417ig.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f417ve.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f417vg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f417ze.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f417zg.rs42
-rw-r--r--embassy-stm32/src/pac/stm32f423ch.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f423mh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f423rh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f423vh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f423zh.rs88
-rw-r--r--embassy-stm32/src/pac/stm32f427ag.rs70
-rw-r--r--embassy-stm32/src/pac/stm32f427ai.rs70
-rw-r--r--embassy-stm32/src/pac/stm32f427ig.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f427ii.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f427vg.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f427vi.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f427zg.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f427zi.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ag.rs70
-rw-r--r--embassy-stm32/src/pac/stm32f429ai.rs70
-rw-r--r--embassy-stm32/src/pac/stm32f429be.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429bg.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429bi.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ie.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ig.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ii.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ne.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ng.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ni.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429ve.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f429vg.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f429vi.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f429ze.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429zg.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f429zi.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f437ai.rs70
-rw-r--r--embassy-stm32/src/pac/stm32f437ig.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f437ii.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f437vg.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f437vi.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f437zg.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f437zi.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439ai.rs70
-rw-r--r--embassy-stm32/src/pac/stm32f439bg.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439bi.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439ig.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439ii.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439ng.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439ni.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439vg.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f439vi.rs58
-rw-r--r--embassy-stm32/src/pac/stm32f439zg.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f439zi.rs76
-rw-r--r--embassy-stm32/src/pac/stm32f446mc.rs74
-rw-r--r--embassy-stm32/src/pac/stm32f446me.rs74
-rw-r--r--embassy-stm32/src/pac/stm32f446rc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32f446re.rs54
-rw-r--r--embassy-stm32/src/pac/stm32f446vc.rs74
-rw-r--r--embassy-stm32/src/pac/stm32f446ve.rs74
-rw-r--r--embassy-stm32/src/pac/stm32f446zc.rs74
-rw-r--r--embassy-stm32/src/pac/stm32f446ze.rs74
-rw-r--r--embassy-stm32/src/pac/stm32l431cb.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l431cc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l431kb.rs36
-rw-r--r--embassy-stm32/src/pac/stm32l431kc.rs36
-rw-r--r--embassy-stm32/src/pac/stm32l431rb.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l431rc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l431vc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l432kb.rs30
-rw-r--r--embassy-stm32/src/pac/stm32l432kc.rs30
-rw-r--r--embassy-stm32/src/pac/stm32l433cb.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l433cc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l433rb.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l433rc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l433vc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l442kc.rs30
-rw-r--r--embassy-stm32/src/pac/stm32l443cc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l443rc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l443vc.rs54
-rw-r--r--embassy-stm32/src/pac/stm32l496ae.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496ag.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496qe.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496qg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496re.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496rg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496ve.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496vg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496wg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496ze.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l496zg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l4a6ag.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l4a6qg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l4a6rg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l4a6vg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l4a6zg.rs78
-rw-r--r--embassy-stm32/src/pac/stm32l4p5ae.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5ag.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5ce.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5cg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5qe.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5qg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5re.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5rg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5ve.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5vg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5ze.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4p5zg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4q5ag.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4q5cg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4q5qg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4q5rg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4q5vg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4q5zg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5ag.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5ai.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5qg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5qi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5vg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5vi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5zg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r5zi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r7ai.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r7vi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r7zi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r9ag.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r9ai.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r9vg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r9vi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r9zg.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4r9zi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s5ai.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s5qi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s5vi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s5zi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s7ai.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s7vi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s7zi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s9ai.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s9vi.rs80
-rw-r--r--embassy-stm32/src/pac/stm32l4s9zi.rs80
-rw-r--r--embassy-stm32/src/rng.rs29
-rw-r--r--embassy-stm32/src/spi/mod.rs67
-rw-r--r--embassy-stm32/src/spi/spi_v1.rs137
-rw-r--r--embassy-stm32/src/spi/spi_v2.rs131
-rw-r--r--embassy-stm32/src/time.rs3
m---------embassy-stm32/stm32-data0
201 files changed, 12559 insertions, 12630 deletions
diff --git a/embassy-stm32/gen.py b/embassy-stm32/gen.py
index 04a2f3337..056d66ec1 100644
--- a/embassy-stm32/gen.py
+++ b/embassy-stm32/gen.py
@@ -124,11 +124,11 @@ for chip in chips.values():
124 for pin, funcs in af.items(): 124 for pin, funcs in af.items():
125 if pin in pins: 125 if pin in pins:
126 if func := funcs.get(f'{name}_SCK'): 126 if func := funcs.get(f'{name}_SCK'):
127 f.write(f'impl_spi_pin!({name}, Sck, {pin}, {func});') 127 f.write(f'impl_spi_pin!({name}, SckPin, {pin}, {func});')
128 if func := funcs.get(f'{name}_MOSI'): 128 if func := funcs.get(f'{name}_MOSI'):
129 f.write(f'impl_spi_pin!({name}, Mosi, {pin}, {func});') 129 f.write(f'impl_spi_pin!({name}, MosiPin, {pin}, {func});')
130 if func := funcs.get(f'{name}_MISO'): 130 if func := funcs.get(f'{name}_MISO'):
131 f.write(f'impl_spi_pin!({name}, Miso, {pin}, {func});') 131 f.write(f'impl_spi_pin!({name}, MisoPin, {pin}, {func});')
132 132
133 if block_mod == 'gpio': 133 if block_mod == 'gpio':
134 custom_singletons = True 134 custom_singletons = True
diff --git a/embassy-stm32/src/lib.rs b/embassy-stm32/src/lib.rs
index f14dbfae8..82a739385 100644
--- a/embassy-stm32/src/lib.rs
+++ b/embassy-stm32/src/lib.rs
@@ -26,7 +26,9 @@ pub mod usart;
26mod pac; 26mod pac;
27pub mod time; 27pub mod time;
28 28
29pub use embassy_macros;
29pub use embassy_macros::interrupt; 30pub use embassy_macros::interrupt;
31pub use embassy_macros::interrupt as irq;
30pub use pac::{interrupt, peripherals, Peripherals}; 32pub use pac::{interrupt, peripherals, Peripherals};
31 33
32// workaround for svd2rust-generated code using `use crate::generic::*;` 34// workaround for svd2rust-generated code using `use crate::generic::*;`
diff --git a/embassy-stm32/src/pac/regs.rs b/embassy-stm32/src/pac/regs.rs
index 26378413f..1adb6ca05 100644
--- a/embassy-stm32/src/pac/regs.rs
+++ b/embassy-stm32/src/pac/regs.rs
@@ -1,1517 +1,1858 @@
1#![no_std] 1#![no_std]
2#![doc = "Peripheral access API (generated using svd2rust v0.17.0 (22741fa 2021-04-20))"] 2#![doc = "Peripheral access API (generated using svd2rust v0.17.0 (22741fa 2021-04-20))"]
3pub mod sdmmc_v2 { 3pub mod dma_v2 {
4 use crate::generic::*; 4 use crate::generic::*;
5 #[doc = "SDMMC"] 5 #[doc = "Stream cluster: S?CR, S?NDTR, S?M0AR, S?M1AR and S?FCR registers"]
6 #[derive(Copy, Clone)] 6 #[derive(Copy, Clone)]
7 pub struct Sdmmc(pub *mut u8); 7 pub struct St(pub *mut u8);
8 unsafe impl Send for Sdmmc {} 8 unsafe impl Send for St {}
9 unsafe impl Sync for Sdmmc {} 9 unsafe impl Sync for St {}
10 impl Sdmmc { 10 impl St {
11 #[doc = "SDMMC power control register"] 11 #[doc = "stream x configuration register"]
12 pub fn power(self) -> Reg<regs::Power, RW> { 12 pub fn cr(self) -> Reg<regs::Cr, RW> {
13 unsafe { Reg::from_ptr(self.0.add(0usize)) } 13 unsafe { Reg::from_ptr(self.0.add(0usize)) }
14 } 14 }
15 #[doc = "The SDMMC_CLKCR register controls the SDMMC_CK output clock, the SDMMC_RX_CLK receive clock, and the bus width."] 15 #[doc = "stream x number of data register"]
16 pub fn clkcr(self) -> Reg<regs::Clkcr, RW> { 16 pub fn ndtr(self) -> Reg<regs::Ndtr, RW> {
17 unsafe { Reg::from_ptr(self.0.add(4usize)) } 17 unsafe { Reg::from_ptr(self.0.add(4usize)) }
18 } 18 }
19 #[doc = "The SDMMC_ARGR register contains a 32-bit command argument, which is sent to a card as part of a command message."] 19 #[doc = "stream x peripheral address register"]
20 pub fn argr(self) -> Reg<regs::Argr, RW> { 20 pub fn par(self) -> Reg<u32, RW> {
21 unsafe { Reg::from_ptr(self.0.add(8usize)) } 21 unsafe { Reg::from_ptr(self.0.add(8usize)) }
22 } 22 }
23 #[doc = "The SDMMC_CMDR register contains the command index and command type bits. The command index is sent to a card as part of a command message. The command type bits control the command path state machine (CPSM)."] 23 #[doc = "stream x memory 0 address register"]
24 pub fn cmdr(self) -> Reg<regs::Cmdr, RW> { 24 pub fn m0ar(self) -> Reg<u32, RW> {
25 unsafe { Reg::from_ptr(self.0.add(12usize)) } 25 unsafe { Reg::from_ptr(self.0.add(12usize)) }
26 } 26 }
27 #[doc = "SDMMC command response register"] 27 #[doc = "stream x memory 1 address register"]
28 pub fn respcmdr(self) -> Reg<regs::Respcmdr, R> { 28 pub fn m1ar(self) -> Reg<u32, RW> {
29 unsafe { Reg::from_ptr(self.0.add(16usize)) } 29 unsafe { Reg::from_ptr(self.0.add(16usize)) }
30 } 30 }
31 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."] 31 #[doc = "stream x FIFO control register"]
32 pub fn respr(self, n: usize) -> Reg<regs::Resp1r, R> { 32 pub fn fcr(self) -> Reg<regs::Fcr, RW> {
33 assert!(n < 4usize); 33 unsafe { Reg::from_ptr(self.0.add(20usize)) }
34 unsafe { Reg::from_ptr(self.0.add(20usize + n * 4usize)) }
35 }
36 #[doc = "The SDMMC_DTIMER register contains the data timeout period, in card bus clock periods. A counter loads the value from the SDMMC_DTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_R or Busy state. If the timer reaches 0 while the DPSM is in either of these states, the timeout status flag is set."]
37 pub fn dtimer(self) -> Reg<regs::Dtimer, RW> {
38 unsafe { Reg::from_ptr(self.0.add(36usize)) }
39 }
40 #[doc = "The SDMMC_DLENR register contains the number of data bytes to be transferred. The value is loaded into the data counter when data transfer starts."]
41 pub fn dlenr(self) -> Reg<regs::Dlenr, RW> {
42 unsafe { Reg::from_ptr(self.0.add(40usize)) }
43 }
44 #[doc = "The SDMMC_DCTRL register control the data path state machine (DPSM)."]
45 pub fn dctrl(self) -> Reg<regs::Dctrl, RW> {
46 unsafe { Reg::from_ptr(self.0.add(44usize)) }
47 }
48 #[doc = "The SDMMC_DCNTR register loads the value from the data length register (see SDMMC_DLENR) when the DPSM moves from the Idle state to the Wait_R or Wait_S state. As data is transferred, the counter decrements the value until it reaches 0. The DPSM then moves to the Idle state and when there has been no error, the data status end flag (DATAEND) is set."]
49 pub fn dcntr(self) -> Reg<regs::Dcntr, R> {
50 unsafe { Reg::from_ptr(self.0.add(48usize)) }
51 }
52 #[doc = "The SDMMC_STAR register is a read-only register. It contains two types of flag:Static flags (bits [29,21,11:0]): these bits remain asserted until they are cleared by writing to the SDMMC interrupt Clear register (see SDMMC_ICR)Dynamic flags (bits [20:12]): these bits change state depending on the state of the underlying logic (for example, FIFO full and empty flags are asserted and de-asserted as data while written to the FIFO)"]
53 pub fn star(self) -> Reg<regs::Star, R> {
54 unsafe { Reg::from_ptr(self.0.add(52usize)) }
55 }
56 #[doc = "The SDMMC_ICR register is a write-only register. Writing a bit with 1 clears the corresponding bit in the SDMMC_STAR status register."]
57 pub fn icr(self) -> Reg<regs::Icr, RW> {
58 unsafe { Reg::from_ptr(self.0.add(56usize)) }
59 }
60 #[doc = "The interrupt mask register determines which status flags generate an interrupt request by setting the corresponding bit to 1."]
61 pub fn maskr(self) -> Reg<regs::Maskr, RW> {
62 unsafe { Reg::from_ptr(self.0.add(60usize)) }
63 }
64 #[doc = "The SDMMC_ACKTIMER register contains the acknowledgment timeout period, in SDMMC_CK bus clock periods. A counter loads the value from the SDMMC_ACKTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_Ack state. If the timer reaches 0 while the DPSM is in this states, the acknowledgment timeout status flag is set."]
65 pub fn acktimer(self) -> Reg<regs::Acktimer, RW> {
66 unsafe { Reg::from_ptr(self.0.add(64usize)) }
67 }
68 #[doc = "The receive and transmit FIFOs can be read or written as 32-bit wide registers. The FIFOs contain 32 entries on 32 sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO."]
69 pub fn idmactrlr(self) -> Reg<regs::Idmactrlr, RW> {
70 unsafe { Reg::from_ptr(self.0.add(80usize)) }
71 }
72 #[doc = "The SDMMC_IDMABSIZER register contains the buffers size when in double buffer configuration."]
73 pub fn idmabsizer(self) -> Reg<regs::Idmabsizer, RW> {
74 unsafe { Reg::from_ptr(self.0.add(84usize)) }
75 }
76 #[doc = "The SDMMC_IDMABASE0R register contains the memory buffer base address in single buffer configuration and the buffer 0 base address in double buffer configuration."]
77 pub fn idmabase0r(self) -> Reg<regs::Idmabase0r, RW> {
78 unsafe { Reg::from_ptr(self.0.add(88usize)) }
79 }
80 #[doc = "The SDMMC_IDMABASE1R register contains the double buffer configuration second buffer memory base address."]
81 pub fn idmabase1r(self) -> Reg<regs::Idmabase1r, RW> {
82 unsafe { Reg::from_ptr(self.0.add(92usize)) }
83 } 34 }
84 #[doc = "The receive and transmit FIFOs can be only read or written as word (32-bit) wide registers. The FIFOs contain 16 entries on sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO.When accessing SDMMC_FIFOR with half word or byte access an AHB bus fault is generated."] 35 }
85 pub fn fifor(self) -> Reg<regs::Fifor, RW> { 36 #[doc = "DMA controller"]
86 unsafe { Reg::from_ptr(self.0.add(128usize)) } 37 #[derive(Copy, Clone)]
38 pub struct Dma(pub *mut u8);
39 unsafe impl Send for Dma {}
40 unsafe impl Sync for Dma {}
41 impl Dma {
42 #[doc = "low interrupt status register"]
43 pub fn isr(self, n: usize) -> Reg<regs::Isr, R> {
44 assert!(n < 2usize);
45 unsafe { Reg::from_ptr(self.0.add(0usize + n * 4usize)) }
87 } 46 }
88 #[doc = "SDMMC IP version register"] 47 #[doc = "low interrupt flag clear register"]
89 pub fn ver(self) -> Reg<regs::Ver, R> { 48 pub fn ifcr(self, n: usize) -> Reg<regs::Ifcr, W> {
90 unsafe { Reg::from_ptr(self.0.add(1012usize)) } 49 assert!(n < 2usize);
50 unsafe { Reg::from_ptr(self.0.add(8usize + n * 4usize)) }
91 } 51 }
92 #[doc = "SDMMC IP identification register"] 52 #[doc = "Stream cluster: S?CR, S?NDTR, S?M0AR, S?M1AR and S?FCR registers"]
93 pub fn id(self) -> Reg<regs::Id, R> { 53 pub fn st(self, n: usize) -> St {
94 unsafe { Reg::from_ptr(self.0.add(1016usize)) } 54 assert!(n < 8usize);
55 unsafe { St(self.0.add(16usize + n * 24usize)) }
95 } 56 }
96 } 57 }
97 pub mod regs { 58 pub mod regs {
98 use crate::generic::*; 59 use crate::generic::*;
99 #[doc = "The SDMMC_DCTRL register control the data path state machine (DPSM)."] 60 #[doc = "stream x number of data register"]
100 #[repr(transparent)] 61 #[repr(transparent)]
101 #[derive(Copy, Clone, Eq, PartialEq)] 62 #[derive(Copy, Clone, Eq, PartialEq)]
102 pub struct Dctrl(pub u32); 63 pub struct Ndtr(pub u32);
103 impl Dctrl { 64 impl Ndtr {
104 #[doc = "Data transfer enable bit This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). This bit is cleared by Hardware when data transfer completes. This bit shall only be used to transfer data when no associated data transfer command is used, i.e. shall not be used with SD or eMMC cards."] 65 #[doc = "Number of data items to transfer"]
105 pub const fn dten(&self) -> bool { 66 pub const fn ndt(&self) -> u16 {
106 let val = (self.0 >> 0usize) & 0x01; 67 let val = (self.0 >> 0usize) & 0xffff;
68 val as u16
69 }
70 #[doc = "Number of data items to transfer"]
71 pub fn set_ndt(&mut self, val: u16) {
72 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
73 }
74 }
75 impl Default for Ndtr {
76 fn default() -> Ndtr {
77 Ndtr(0)
78 }
79 }
80 #[doc = "low interrupt flag clear register"]
81 #[repr(transparent)]
82 #[derive(Copy, Clone, Eq, PartialEq)]
83 pub struct Ifcr(pub u32);
84 impl Ifcr {
85 #[doc = "Stream x clear FIFO error interrupt flag (x = 3..0)"]
86 pub fn cfeif(&self, n: usize) -> bool {
87 assert!(n < 4usize);
88 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
89 let val = (self.0 >> offs) & 0x01;
107 val != 0 90 val != 0
108 } 91 }
109 #[doc = "Data transfer enable bit This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). This bit is cleared by Hardware when data transfer completes. This bit shall only be used to transfer data when no associated data transfer command is used, i.e. shall not be used with SD or eMMC cards."] 92 #[doc = "Stream x clear FIFO error interrupt flag (x = 3..0)"]
110 pub fn set_dten(&mut self, val: bool) { 93 pub fn set_cfeif(&mut self, n: usize, val: bool) {
111 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 94 assert!(n < 4usize);
95 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
96 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
112 } 97 }
113 #[doc = "Data transfer direction selection This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 98 #[doc = "Stream x clear direct mode error interrupt flag (x = 3..0)"]
114 pub const fn dtdir(&self) -> bool { 99 pub fn cdmeif(&self, n: usize) -> bool {
115 let val = (self.0 >> 1usize) & 0x01; 100 assert!(n < 4usize);
101 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
102 let val = (self.0 >> offs) & 0x01;
116 val != 0 103 val != 0
117 } 104 }
118 #[doc = "Data transfer direction selection This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 105 #[doc = "Stream x clear direct mode error interrupt flag (x = 3..0)"]
119 pub fn set_dtdir(&mut self, val: bool) { 106 pub fn set_cdmeif(&mut self, n: usize, val: bool) {
120 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 107 assert!(n < 4usize);
108 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
109 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
121 } 110 }
122 #[doc = "Data transfer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 111 #[doc = "Stream x clear transfer error interrupt flag (x = 3..0)"]
123 pub const fn dtmode(&self) -> u8 { 112 pub fn cteif(&self, n: usize) -> bool {
124 let val = (self.0 >> 2usize) & 0x03; 113 assert!(n < 4usize);
125 val as u8 114 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
115 let val = (self.0 >> offs) & 0x01;
116 val != 0
126 } 117 }
127 #[doc = "Data transfer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 118 #[doc = "Stream x clear transfer error interrupt flag (x = 3..0)"]
128 pub fn set_dtmode(&mut self, val: u8) { 119 pub fn set_cteif(&mut self, n: usize, val: bool) {
129 self.0 = (self.0 & !(0x03 << 2usize)) | (((val as u32) & 0x03) << 2usize); 120 assert!(n < 4usize);
121 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
122 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
130 } 123 }
131 #[doc = "Data block size This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). Define the data block length when the block data transfer mode is selected: When DATALENGTH is not a multiple of DBLOCKSIZE, the transfered data is truncated at a multiple of DBLOCKSIZE. (Any remain data will not be transfered.) When DDR = 1, DBLOCKSIZE = 0000 shall not be used. (No data will be transfered)"] 124 #[doc = "Stream x clear half transfer interrupt flag (x = 3..0)"]
132 pub const fn dblocksize(&self) -> u8 { 125 pub fn chtif(&self, n: usize) -> bool {
133 let val = (self.0 >> 4usize) & 0x0f; 126 assert!(n < 4usize);
134 val as u8 127 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
128 let val = (self.0 >> offs) & 0x01;
129 val != 0
135 } 130 }
136 #[doc = "Data block size This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). Define the data block length when the block data transfer mode is selected: When DATALENGTH is not a multiple of DBLOCKSIZE, the transfered data is truncated at a multiple of DBLOCKSIZE. (Any remain data will not be transfered.) When DDR = 1, DBLOCKSIZE = 0000 shall not be used. (No data will be transfered)"] 131 #[doc = "Stream x clear half transfer interrupt flag (x = 3..0)"]
137 pub fn set_dblocksize(&mut self, val: u8) { 132 pub fn set_chtif(&mut self, n: usize, val: bool) {
138 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize); 133 assert!(n < 4usize);
134 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
135 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
139 } 136 }
140 #[doc = "Read wait start. If this bit is set, read wait operation starts."] 137 #[doc = "Stream x clear transfer complete interrupt flag (x = 3..0)"]
141 pub const fn rwstart(&self) -> bool { 138 pub fn ctcif(&self, n: usize) -> bool {
142 let val = (self.0 >> 8usize) & 0x01; 139 assert!(n < 4usize);
140 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
141 let val = (self.0 >> offs) & 0x01;
143 val != 0 142 val != 0
144 } 143 }
145 #[doc = "Read wait start. If this bit is set, read wait operation starts."] 144 #[doc = "Stream x clear transfer complete interrupt flag (x = 3..0)"]
146 pub fn set_rwstart(&mut self, val: bool) { 145 pub fn set_ctcif(&mut self, n: usize, val: bool) {
147 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 146 assert!(n < 4usize);
147 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
148 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
148 } 149 }
149 #[doc = "Read wait stop This bit is written by firmware and auto cleared by hardware when the DPSM moves from the READ_WAIT state to the WAIT_R or IDLE state."] 150 }
150 pub const fn rwstop(&self) -> bool { 151 impl Default for Ifcr {
151 let val = (self.0 >> 9usize) & 0x01; 152 fn default() -> Ifcr {
153 Ifcr(0)
154 }
155 }
156 #[doc = "low interrupt status register"]
157 #[repr(transparent)]
158 #[derive(Copy, Clone, Eq, PartialEq)]
159 pub struct Isr(pub u32);
160 impl Isr {
161 #[doc = "Stream x FIFO error interrupt flag (x=3..0)"]
162 pub fn feif(&self, n: usize) -> bool {
163 assert!(n < 4usize);
164 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
165 let val = (self.0 >> offs) & 0x01;
152 val != 0 166 val != 0
153 } 167 }
154 #[doc = "Read wait stop This bit is written by firmware and auto cleared by hardware when the DPSM moves from the READ_WAIT state to the WAIT_R or IDLE state."] 168 #[doc = "Stream x FIFO error interrupt flag (x=3..0)"]
155 pub fn set_rwstop(&mut self, val: bool) { 169 pub fn set_feif(&mut self, n: usize, val: bool) {
156 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); 170 assert!(n < 4usize);
171 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
172 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
157 } 173 }
158 #[doc = "Read wait mode. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 174 #[doc = "Stream x direct mode error interrupt flag (x=3..0)"]
159 pub const fn rwmod(&self) -> bool { 175 pub fn dmeif(&self, n: usize) -> bool {
160 let val = (self.0 >> 10usize) & 0x01; 176 assert!(n < 4usize);
177 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
178 let val = (self.0 >> offs) & 0x01;
161 val != 0 179 val != 0
162 } 180 }
163 #[doc = "Read wait mode. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 181 #[doc = "Stream x direct mode error interrupt flag (x=3..0)"]
164 pub fn set_rwmod(&mut self, val: bool) { 182 pub fn set_dmeif(&mut self, n: usize, val: bool) {
165 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize); 183 assert!(n < 4usize);
184 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
185 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
166 } 186 }
167 #[doc = "SD I/O interrupt enable functions This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). If this bit is set, the DPSM enables the SD I/O card specific interrupt operation."] 187 #[doc = "Stream x transfer error interrupt flag (x=3..0)"]
168 pub const fn sdioen(&self) -> bool { 188 pub fn teif(&self, n: usize) -> bool {
169 let val = (self.0 >> 11usize) & 0x01; 189 assert!(n < 4usize);
190 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
191 let val = (self.0 >> offs) & 0x01;
170 val != 0 192 val != 0
171 } 193 }
172 #[doc = "SD I/O interrupt enable functions This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). If this bit is set, the DPSM enables the SD I/O card specific interrupt operation."] 194 #[doc = "Stream x transfer error interrupt flag (x=3..0)"]
173 pub fn set_sdioen(&mut self, val: bool) { 195 pub fn set_teif(&mut self, n: usize, val: bool) {
174 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize); 196 assert!(n < 4usize);
197 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
198 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
175 } 199 }
176 #[doc = "Enable the reception of the boot acknowledgment. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 200 #[doc = "Stream x half transfer interrupt flag (x=3..0)"]
177 pub const fn bootacken(&self) -> bool { 201 pub fn htif(&self, n: usize) -> bool {
178 let val = (self.0 >> 12usize) & 0x01; 202 assert!(n < 4usize);
203 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
204 let val = (self.0 >> offs) & 0x01;
179 val != 0 205 val != 0
180 } 206 }
181 #[doc = "Enable the reception of the boot acknowledgment. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 207 #[doc = "Stream x half transfer interrupt flag (x=3..0)"]
182 pub fn set_bootacken(&mut self, val: bool) { 208 pub fn set_htif(&mut self, n: usize, val: bool) {
183 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize); 209 assert!(n < 4usize);
210 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
211 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
184 } 212 }
185 #[doc = "FIFO reset, will flush any remaining data. This bit can only be written by firmware when IDMAEN= 0 and DPSM is active (DPSMACT = 1). This bit will only take effect when a transfer error or transfer hold occurs."] 213 #[doc = "Stream x transfer complete interrupt flag (x = 3..0)"]
186 pub const fn fiforst(&self) -> bool { 214 pub fn tcif(&self, n: usize) -> bool {
187 let val = (self.0 >> 13usize) & 0x01; 215 assert!(n < 4usize);
216 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
217 let val = (self.0 >> offs) & 0x01;
188 val != 0 218 val != 0
189 } 219 }
190 #[doc = "FIFO reset, will flush any remaining data. This bit can only be written by firmware when IDMAEN= 0 and DPSM is active (DPSMACT = 1). This bit will only take effect when a transfer error or transfer hold occurs."] 220 #[doc = "Stream x transfer complete interrupt flag (x = 3..0)"]
191 pub fn set_fiforst(&mut self, val: bool) { 221 pub fn set_tcif(&mut self, n: usize, val: bool) {
192 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); 222 assert!(n < 4usize);
223 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
224 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
193 } 225 }
194 } 226 }
195 impl Default for Dctrl { 227 impl Default for Isr {
196 fn default() -> Dctrl { 228 fn default() -> Isr {
197 Dctrl(0) 229 Isr(0)
198 } 230 }
199 } 231 }
200 #[doc = "The SDMMC_ICR register is a write-only register. Writing a bit with 1 clears the corresponding bit in the SDMMC_STAR status register."] 232 #[doc = "stream x configuration register"]
201 #[repr(transparent)] 233 #[repr(transparent)]
202 #[derive(Copy, Clone, Eq, PartialEq)] 234 #[derive(Copy, Clone, Eq, PartialEq)]
203 pub struct Icr(pub u32); 235 pub struct Cr(pub u32);
204 impl Icr { 236 impl Cr {
205 #[doc = "CCRCFAIL flag clear bit Set by software to clear the CCRCFAIL flag."] 237 #[doc = "Stream enable / flag stream ready when read low"]
206 pub const fn ccrcfailc(&self) -> bool { 238 pub const fn en(&self) -> bool {
207 let val = (self.0 >> 0usize) & 0x01; 239 let val = (self.0 >> 0usize) & 0x01;
208 val != 0 240 val != 0
209 } 241 }
210 #[doc = "CCRCFAIL flag clear bit Set by software to clear the CCRCFAIL flag."] 242 #[doc = "Stream enable / flag stream ready when read low"]
211 pub fn set_ccrcfailc(&mut self, val: bool) { 243 pub fn set_en(&mut self, val: bool) {
212 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 244 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
213 } 245 }
214 #[doc = "DCRCFAIL flag clear bit Set by software to clear the DCRCFAIL flag."] 246 #[doc = "Direct mode error interrupt enable"]
215 pub const fn dcrcfailc(&self) -> bool { 247 pub const fn dmeie(&self) -> bool {
216 let val = (self.0 >> 1usize) & 0x01; 248 let val = (self.0 >> 1usize) & 0x01;
217 val != 0 249 val != 0
218 } 250 }
219 #[doc = "DCRCFAIL flag clear bit Set by software to clear the DCRCFAIL flag."] 251 #[doc = "Direct mode error interrupt enable"]
220 pub fn set_dcrcfailc(&mut self, val: bool) { 252 pub fn set_dmeie(&mut self, val: bool) {
221 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 253 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
222 } 254 }
223 #[doc = "CTIMEOUT flag clear bit Set by software to clear the CTIMEOUT flag."] 255 #[doc = "Transfer error interrupt enable"]
224 pub const fn ctimeoutc(&self) -> bool { 256 pub const fn teie(&self) -> bool {
225 let val = (self.0 >> 2usize) & 0x01; 257 let val = (self.0 >> 2usize) & 0x01;
226 val != 0 258 val != 0
227 } 259 }
228 #[doc = "CTIMEOUT flag clear bit Set by software to clear the CTIMEOUT flag."] 260 #[doc = "Transfer error interrupt enable"]
229 pub fn set_ctimeoutc(&mut self, val: bool) { 261 pub fn set_teie(&mut self, val: bool) {
230 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); 262 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
231 } 263 }
232 #[doc = "DTIMEOUT flag clear bit Set by software to clear the DTIMEOUT flag."] 264 #[doc = "Half transfer interrupt enable"]
233 pub const fn dtimeoutc(&self) -> bool { 265 pub const fn htie(&self) -> bool {
234 let val = (self.0 >> 3usize) & 0x01; 266 let val = (self.0 >> 3usize) & 0x01;
235 val != 0 267 val != 0
236 } 268 }
237 #[doc = "DTIMEOUT flag clear bit Set by software to clear the DTIMEOUT flag."] 269 #[doc = "Half transfer interrupt enable"]
238 pub fn set_dtimeoutc(&mut self, val: bool) { 270 pub fn set_htie(&mut self, val: bool) {
239 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); 271 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
240 } 272 }
241 #[doc = "TXUNDERR flag clear bit Set by software to clear TXUNDERR flag."] 273 #[doc = "Transfer complete interrupt enable"]
242 pub const fn txunderrc(&self) -> bool { 274 pub const fn tcie(&self) -> bool {
243 let val = (self.0 >> 4usize) & 0x01; 275 let val = (self.0 >> 4usize) & 0x01;
244 val != 0 276 val != 0
245 } 277 }
246 #[doc = "TXUNDERR flag clear bit Set by software to clear TXUNDERR flag."] 278 #[doc = "Transfer complete interrupt enable"]
247 pub fn set_txunderrc(&mut self, val: bool) { 279 pub fn set_tcie(&mut self, val: bool) {
248 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); 280 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
249 } 281 }
250 #[doc = "RXOVERR flag clear bit Set by software to clear the RXOVERR flag."] 282 #[doc = "Peripheral flow controller"]
251 pub const fn rxoverrc(&self) -> bool { 283 pub const fn pfctrl(&self) -> super::vals::Pfctrl {
252 let val = (self.0 >> 5usize) & 0x01; 284 let val = (self.0 >> 5usize) & 0x01;
253 val != 0 285 super::vals::Pfctrl(val as u8)
254 }
255 #[doc = "RXOVERR flag clear bit Set by software to clear the RXOVERR flag."]
256 pub fn set_rxoverrc(&mut self, val: bool) {
257 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
258 }
259 #[doc = "CMDREND flag clear bit Set by software to clear the CMDREND flag."]
260 pub const fn cmdrendc(&self) -> bool {
261 let val = (self.0 >> 6usize) & 0x01;
262 val != 0
263 } 286 }
264 #[doc = "CMDREND flag clear bit Set by software to clear the CMDREND flag."] 287 #[doc = "Peripheral flow controller"]
265 pub fn set_cmdrendc(&mut self, val: bool) { 288 pub fn set_pfctrl(&mut self, val: super::vals::Pfctrl) {
266 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 289 self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize);
267 } 290 }
268 #[doc = "CMDSENT flag clear bit Set by software to clear the CMDSENT flag."] 291 #[doc = "Data transfer direction"]
269 pub const fn cmdsentc(&self) -> bool { 292 pub const fn dir(&self) -> super::vals::Dir {
270 let val = (self.0 >> 7usize) & 0x01; 293 let val = (self.0 >> 6usize) & 0x03;
271 val != 0 294 super::vals::Dir(val as u8)
272 } 295 }
273 #[doc = "CMDSENT flag clear bit Set by software to clear the CMDSENT flag."] 296 #[doc = "Data transfer direction"]
274 pub fn set_cmdsentc(&mut self, val: bool) { 297 pub fn set_dir(&mut self, val: super::vals::Dir) {
275 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 298 self.0 = (self.0 & !(0x03 << 6usize)) | (((val.0 as u32) & 0x03) << 6usize);
276 } 299 }
277 #[doc = "DATAEND flag clear bit Set by software to clear the DATAEND flag."] 300 #[doc = "Circular mode"]
278 pub const fn dataendc(&self) -> bool { 301 pub const fn circ(&self) -> super::vals::Circ {
279 let val = (self.0 >> 8usize) & 0x01; 302 let val = (self.0 >> 8usize) & 0x01;
280 val != 0 303 super::vals::Circ(val as u8)
281 } 304 }
282 #[doc = "DATAEND flag clear bit Set by software to clear the DATAEND flag."] 305 #[doc = "Circular mode"]
283 pub fn set_dataendc(&mut self, val: bool) { 306 pub fn set_circ(&mut self, val: super::vals::Circ) {
284 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 307 self.0 = (self.0 & !(0x01 << 8usize)) | (((val.0 as u32) & 0x01) << 8usize);
285 } 308 }
286 #[doc = "DHOLD flag clear bit Set by software to clear the DHOLD flag."] 309 #[doc = "Peripheral increment mode"]
287 pub const fn dholdc(&self) -> bool { 310 pub const fn pinc(&self) -> super::vals::Inc {
288 let val = (self.0 >> 9usize) & 0x01; 311 let val = (self.0 >> 9usize) & 0x01;
289 val != 0 312 super::vals::Inc(val as u8)
290 } 313 }
291 #[doc = "DHOLD flag clear bit Set by software to clear the DHOLD flag."] 314 #[doc = "Peripheral increment mode"]
292 pub fn set_dholdc(&mut self, val: bool) { 315 pub fn set_pinc(&mut self, val: super::vals::Inc) {
293 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); 316 self.0 = (self.0 & !(0x01 << 9usize)) | (((val.0 as u32) & 0x01) << 9usize);
294 } 317 }
295 #[doc = "DBCKEND flag clear bit Set by software to clear the DBCKEND flag."] 318 #[doc = "Memory increment mode"]
296 pub const fn dbckendc(&self) -> bool { 319 pub const fn minc(&self) -> super::vals::Inc {
297 let val = (self.0 >> 10usize) & 0x01; 320 let val = (self.0 >> 10usize) & 0x01;
298 val != 0 321 super::vals::Inc(val as u8)
299 } 322 }
300 #[doc = "DBCKEND flag clear bit Set by software to clear the DBCKEND flag."] 323 #[doc = "Memory increment mode"]
301 pub fn set_dbckendc(&mut self, val: bool) { 324 pub fn set_minc(&mut self, val: super::vals::Inc) {
302 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize); 325 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize);
303 } 326 }
304 #[doc = "DABORT flag clear bit Set by software to clear the DABORT flag."] 327 #[doc = "Peripheral data size"]
305 pub const fn dabortc(&self) -> bool { 328 pub const fn psize(&self) -> super::vals::Size {
306 let val = (self.0 >> 11usize) & 0x01; 329 let val = (self.0 >> 11usize) & 0x03;
307 val != 0 330 super::vals::Size(val as u8)
308 } 331 }
309 #[doc = "DABORT flag clear bit Set by software to clear the DABORT flag."] 332 #[doc = "Peripheral data size"]
310 pub fn set_dabortc(&mut self, val: bool) { 333 pub fn set_psize(&mut self, val: super::vals::Size) {
311 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize); 334 self.0 = (self.0 & !(0x03 << 11usize)) | (((val.0 as u32) & 0x03) << 11usize);
312 } 335 }
313 #[doc = "BUSYD0END flag clear bit Set by software to clear the BUSYD0END flag."] 336 #[doc = "Memory data size"]
314 pub const fn busyd0endc(&self) -> bool { 337 pub const fn msize(&self) -> super::vals::Size {
315 let val = (self.0 >> 21usize) & 0x01; 338 let val = (self.0 >> 13usize) & 0x03;
316 val != 0 339 super::vals::Size(val as u8)
317 } 340 }
318 #[doc = "BUSYD0END flag clear bit Set by software to clear the BUSYD0END flag."] 341 #[doc = "Memory data size"]
319 pub fn set_busyd0endc(&mut self, val: bool) { 342 pub fn set_msize(&mut self, val: super::vals::Size) {
320 self.0 = (self.0 & !(0x01 << 21usize)) | (((val as u32) & 0x01) << 21usize); 343 self.0 = (self.0 & !(0x03 << 13usize)) | (((val.0 as u32) & 0x03) << 13usize);
321 } 344 }
322 #[doc = "SDIOIT flag clear bit Set by software to clear the SDIOIT flag."] 345 #[doc = "Peripheral increment offset size"]
323 pub const fn sdioitc(&self) -> bool { 346 pub const fn pincos(&self) -> super::vals::Pincos {
324 let val = (self.0 >> 22usize) & 0x01; 347 let val = (self.0 >> 15usize) & 0x01;
325 val != 0 348 super::vals::Pincos(val as u8)
326 } 349 }
327 #[doc = "SDIOIT flag clear bit Set by software to clear the SDIOIT flag."] 350 #[doc = "Peripheral increment offset size"]
328 pub fn set_sdioitc(&mut self, val: bool) { 351 pub fn set_pincos(&mut self, val: super::vals::Pincos) {
329 self.0 = (self.0 & !(0x01 << 22usize)) | (((val as u32) & 0x01) << 22usize); 352 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize);
330 } 353 }
331 #[doc = "ACKFAIL flag clear bit Set by software to clear the ACKFAIL flag."] 354 #[doc = "Priority level"]
332 pub const fn ackfailc(&self) -> bool { 355 pub const fn pl(&self) -> super::vals::Pl {
333 let val = (self.0 >> 23usize) & 0x01; 356 let val = (self.0 >> 16usize) & 0x03;
334 val != 0 357 super::vals::Pl(val as u8)
335 } 358 }
336 #[doc = "ACKFAIL flag clear bit Set by software to clear the ACKFAIL flag."] 359 #[doc = "Priority level"]
337 pub fn set_ackfailc(&mut self, val: bool) { 360 pub fn set_pl(&mut self, val: super::vals::Pl) {
338 self.0 = (self.0 & !(0x01 << 23usize)) | (((val as u32) & 0x01) << 23usize); 361 self.0 = (self.0 & !(0x03 << 16usize)) | (((val.0 as u32) & 0x03) << 16usize);
339 } 362 }
340 #[doc = "ACKTIMEOUT flag clear bit Set by software to clear the ACKTIMEOUT flag."] 363 #[doc = "Double buffer mode"]
341 pub const fn acktimeoutc(&self) -> bool { 364 pub const fn dbm(&self) -> super::vals::Dbm {
342 let val = (self.0 >> 24usize) & 0x01; 365 let val = (self.0 >> 18usize) & 0x01;
343 val != 0 366 super::vals::Dbm(val as u8)
344 } 367 }
345 #[doc = "ACKTIMEOUT flag clear bit Set by software to clear the ACKTIMEOUT flag."] 368 #[doc = "Double buffer mode"]
346 pub fn set_acktimeoutc(&mut self, val: bool) { 369 pub fn set_dbm(&mut self, val: super::vals::Dbm) {
347 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize); 370 self.0 = (self.0 & !(0x01 << 18usize)) | (((val.0 as u32) & 0x01) << 18usize);
348 } 371 }
349 #[doc = "VSWEND flag clear bit Set by software to clear the VSWEND flag."] 372 #[doc = "Current target (only in double buffer mode)"]
350 pub const fn vswendc(&self) -> bool { 373 pub const fn ct(&self) -> super::vals::Ct {
351 let val = (self.0 >> 25usize) & 0x01; 374 let val = (self.0 >> 19usize) & 0x01;
352 val != 0 375 super::vals::Ct(val as u8)
353 } 376 }
354 #[doc = "VSWEND flag clear bit Set by software to clear the VSWEND flag."] 377 #[doc = "Current target (only in double buffer mode)"]
355 pub fn set_vswendc(&mut self, val: bool) { 378 pub fn set_ct(&mut self, val: super::vals::Ct) {
356 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize); 379 self.0 = (self.0 & !(0x01 << 19usize)) | (((val.0 as u32) & 0x01) << 19usize);
357 } 380 }
358 #[doc = "CKSTOP flag clear bit Set by software to clear the CKSTOP flag."] 381 #[doc = "Peripheral burst transfer configuration"]
359 pub const fn ckstopc(&self) -> bool { 382 pub const fn pburst(&self) -> super::vals::Burst {
360 let val = (self.0 >> 26usize) & 0x01; 383 let val = (self.0 >> 21usize) & 0x03;
361 val != 0 384 super::vals::Burst(val as u8)
362 } 385 }
363 #[doc = "CKSTOP flag clear bit Set by software to clear the CKSTOP flag."] 386 #[doc = "Peripheral burst transfer configuration"]
364 pub fn set_ckstopc(&mut self, val: bool) { 387 pub fn set_pburst(&mut self, val: super::vals::Burst) {
365 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize); 388 self.0 = (self.0 & !(0x03 << 21usize)) | (((val.0 as u32) & 0x03) << 21usize);
366 } 389 }
367 #[doc = "IDMA transfer error clear bit Set by software to clear the IDMATE flag."] 390 #[doc = "Memory burst transfer configuration"]
368 pub const fn idmatec(&self) -> bool { 391 pub const fn mburst(&self) -> super::vals::Burst {
369 let val = (self.0 >> 27usize) & 0x01; 392 let val = (self.0 >> 23usize) & 0x03;
370 val != 0 393 super::vals::Burst(val as u8)
371 } 394 }
372 #[doc = "IDMA transfer error clear bit Set by software to clear the IDMATE flag."] 395 #[doc = "Memory burst transfer configuration"]
373 pub fn set_idmatec(&mut self, val: bool) { 396 pub fn set_mburst(&mut self, val: super::vals::Burst) {
374 self.0 = (self.0 & !(0x01 << 27usize)) | (((val as u32) & 0x01) << 27usize); 397 self.0 = (self.0 & !(0x03 << 23usize)) | (((val.0 as u32) & 0x03) << 23usize);
375 } 398 }
376 #[doc = "IDMA buffer transfer complete clear bit Set by software to clear the IDMABTC flag."] 399 #[doc = "Channel selection"]
377 pub const fn idmabtcc(&self) -> bool { 400 pub const fn chsel(&self) -> u8 {
378 let val = (self.0 >> 28usize) & 0x01; 401 let val = (self.0 >> 25usize) & 0x0f;
379 val != 0 402 val as u8
380 } 403 }
381 #[doc = "IDMA buffer transfer complete clear bit Set by software to clear the IDMABTC flag."] 404 #[doc = "Channel selection"]
382 pub fn set_idmabtcc(&mut self, val: bool) { 405 pub fn set_chsel(&mut self, val: u8) {
383 self.0 = (self.0 & !(0x01 << 28usize)) | (((val as u32) & 0x01) << 28usize); 406 self.0 = (self.0 & !(0x0f << 25usize)) | (((val as u32) & 0x0f) << 25usize);
384 } 407 }
385 } 408 }
386 impl Default for Icr { 409 impl Default for Cr {
387 fn default() -> Icr { 410 fn default() -> Cr {
388 Icr(0) 411 Cr(0)
389 } 412 }
390 } 413 }
391 #[doc = "SDMMC IP identification register"] 414 #[doc = "stream x FIFO control register"]
392 #[repr(transparent)] 415 #[repr(transparent)]
393 #[derive(Copy, Clone, Eq, PartialEq)] 416 #[derive(Copy, Clone, Eq, PartialEq)]
394 pub struct Id(pub u32); 417 pub struct Fcr(pub u32);
395 impl Id { 418 impl Fcr {
396 #[doc = "SDMMC IP identification."] 419 #[doc = "FIFO threshold selection"]
397 pub const fn ip_id(&self) -> u32 { 420 pub const fn fth(&self) -> super::vals::Fth {
398 let val = (self.0 >> 0usize) & 0xffff_ffff; 421 let val = (self.0 >> 0usize) & 0x03;
399 val as u32 422 super::vals::Fth(val as u8)
400 } 423 }
401 #[doc = "SDMMC IP identification."] 424 #[doc = "FIFO threshold selection"]
402 pub fn set_ip_id(&mut self, val: u32) { 425 pub fn set_fth(&mut self, val: super::vals::Fth) {
403 self.0 = 426 self.0 = (self.0 & !(0x03 << 0usize)) | (((val.0 as u32) & 0x03) << 0usize);
404 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
405 } 427 }
406 } 428 #[doc = "Direct mode disable"]
407 impl Default for Id { 429 pub const fn dmdis(&self) -> super::vals::Dmdis {
408 fn default() -> Id { 430 let val = (self.0 >> 2usize) & 0x01;
409 Id(0) 431 super::vals::Dmdis(val as u8)
410 } 432 }
411 } 433 #[doc = "Direct mode disable"]
412 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."] 434 pub fn set_dmdis(&mut self, val: super::vals::Dmdis) {
413 #[repr(transparent)] 435 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
414 #[derive(Copy, Clone, Eq, PartialEq)]
415 pub struct Resp2r(pub u32);
416 impl Resp2r {
417 #[doc = "see Table404."]
418 pub const fn cardstatus2(&self) -> u32 {
419 let val = (self.0 >> 0usize) & 0xffff_ffff;
420 val as u32
421 } 436 }
422 #[doc = "see Table404."] 437 #[doc = "FIFO status"]
423 pub fn set_cardstatus2(&mut self, val: u32) { 438 pub const fn fs(&self) -> super::vals::Fs {
424 self.0 = 439 let val = (self.0 >> 3usize) & 0x07;
425 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); 440 super::vals::Fs(val as u8)
426 } 441 }
427 } 442 #[doc = "FIFO status"]
428 impl Default for Resp2r { 443 pub fn set_fs(&mut self, val: super::vals::Fs) {
429 fn default() -> Resp2r { 444 self.0 = (self.0 & !(0x07 << 3usize)) | (((val.0 as u32) & 0x07) << 3usize);
430 Resp2r(0)
431 } 445 }
432 } 446 #[doc = "FIFO error interrupt enable"]
433 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."] 447 pub const fn feie(&self) -> bool {
434 #[repr(transparent)] 448 let val = (self.0 >> 7usize) & 0x01;
435 #[derive(Copy, Clone, Eq, PartialEq)] 449 val != 0
436 pub struct Resp1r(pub u32);
437 impl Resp1r {
438 #[doc = "see Table 432"]
439 pub const fn cardstatus1(&self) -> u32 {
440 let val = (self.0 >> 0usize) & 0xffff_ffff;
441 val as u32
442 } 450 }
443 #[doc = "see Table 432"] 451 #[doc = "FIFO error interrupt enable"]
444 pub fn set_cardstatus1(&mut self, val: u32) { 452 pub fn set_feie(&mut self, val: bool) {
445 self.0 = 453 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
446 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
447 } 454 }
448 } 455 }
449 impl Default for Resp1r { 456 impl Default for Fcr {
450 fn default() -> Resp1r { 457 fn default() -> Fcr {
451 Resp1r(0) 458 Fcr(0)
452 } 459 }
453 } 460 }
454 #[doc = "The SDMMC_ARGR register contains a 32-bit command argument, which is sent to a card as part of a command message."] 461 }
462 pub mod vals {
463 use crate::generic::*;
464 #[repr(transparent)]
465 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
466 pub struct Pl(pub u8);
467 impl Pl {
468 #[doc = "Low"]
469 pub const LOW: Self = Self(0);
470 #[doc = "Medium"]
471 pub const MEDIUM: Self = Self(0x01);
472 #[doc = "High"]
473 pub const HIGH: Self = Self(0x02);
474 #[doc = "Very high"]
475 pub const VERYHIGH: Self = Self(0x03);
476 }
477 #[repr(transparent)]
478 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
479 pub struct Dir(pub u8);
480 impl Dir {
481 #[doc = "Peripheral-to-memory"]
482 pub const PERIPHERALTOMEMORY: Self = Self(0);
483 #[doc = "Memory-to-peripheral"]
484 pub const MEMORYTOPERIPHERAL: Self = Self(0x01);
485 #[doc = "Memory-to-memory"]
486 pub const MEMORYTOMEMORY: Self = Self(0x02);
487 }
488 #[repr(transparent)]
489 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
490 pub struct Pincos(pub u8);
491 impl Pincos {
492 #[doc = "The offset size for the peripheral address calculation is linked to the PSIZE"]
493 pub const PSIZE: Self = Self(0);
494 #[doc = "The offset size for the peripheral address calculation is fixed to 4 (32-bit alignment)"]
495 pub const FIXED4: Self = Self(0x01);
496 }
497 #[repr(transparent)]
498 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
499 pub struct Burst(pub u8);
500 impl Burst {
501 #[doc = "Single transfer"]
502 pub const SINGLE: Self = Self(0);
503 #[doc = "Incremental burst of 4 beats"]
504 pub const INCR4: Self = Self(0x01);
505 #[doc = "Incremental burst of 8 beats"]
506 pub const INCR8: Self = Self(0x02);
507 #[doc = "Incremental burst of 16 beats"]
508 pub const INCR16: Self = Self(0x03);
509 }
510 #[repr(transparent)]
511 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
512 pub struct Size(pub u8);
513 impl Size {
514 #[doc = "Byte (8-bit)"]
515 pub const BITS8: Self = Self(0);
516 #[doc = "Half-word (16-bit)"]
517 pub const BITS16: Self = Self(0x01);
518 #[doc = "Word (32-bit)"]
519 pub const BITS32: Self = Self(0x02);
520 }
521 #[repr(transparent)]
522 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
523 pub struct Inc(pub u8);
524 impl Inc {
525 #[doc = "Address pointer is fixed"]
526 pub const FIXED: Self = Self(0);
527 #[doc = "Address pointer is incremented after each data transfer"]
528 pub const INCREMENTED: Self = Self(0x01);
529 }
530 #[repr(transparent)]
531 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
532 pub struct Circ(pub u8);
533 impl Circ {
534 #[doc = "Circular mode disabled"]
535 pub const DISABLED: Self = Self(0);
536 #[doc = "Circular mode enabled"]
537 pub const ENABLED: Self = Self(0x01);
538 }
539 #[repr(transparent)]
540 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
541 pub struct Dmdis(pub u8);
542 impl Dmdis {
543 #[doc = "Direct mode is enabled"]
544 pub const ENABLED: Self = Self(0);
545 #[doc = "Direct mode is disabled"]
546 pub const DISABLED: Self = Self(0x01);
547 }
548 #[repr(transparent)]
549 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
550 pub struct Fs(pub u8);
551 impl Fs {
552 #[doc = "0 < fifo_level < 1/4"]
553 pub const QUARTER1: Self = Self(0);
554 #[doc = "1/4 <= fifo_level < 1/2"]
555 pub const QUARTER2: Self = Self(0x01);
556 #[doc = "1/2 <= fifo_level < 3/4"]
557 pub const QUARTER3: Self = Self(0x02);
558 #[doc = "3/4 <= fifo_level < full"]
559 pub const QUARTER4: Self = Self(0x03);
560 #[doc = "FIFO is empty"]
561 pub const EMPTY: Self = Self(0x04);
562 #[doc = "FIFO is full"]
563 pub const FULL: Self = Self(0x05);
564 }
565 #[repr(transparent)]
566 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
567 pub struct Dbm(pub u8);
568 impl Dbm {
569 #[doc = "No buffer switching at the end of transfer"]
570 pub const DISABLED: Self = Self(0);
571 #[doc = "Memory target switched at the end of the DMA transfer"]
572 pub const ENABLED: Self = Self(0x01);
573 }
574 #[repr(transparent)]
575 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
576 pub struct Fth(pub u8);
577 impl Fth {
578 #[doc = "1/4 full FIFO"]
579 pub const QUARTER: Self = Self(0);
580 #[doc = "1/2 full FIFO"]
581 pub const HALF: Self = Self(0x01);
582 #[doc = "3/4 full FIFO"]
583 pub const THREEQUARTERS: Self = Self(0x02);
584 #[doc = "Full FIFO"]
585 pub const FULL: Self = Self(0x03);
586 }
587 #[repr(transparent)]
588 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
589 pub struct Ct(pub u8);
590 impl Ct {
591 #[doc = "The current target memory is Memory 0"]
592 pub const MEMORY0: Self = Self(0);
593 #[doc = "The current target memory is Memory 1"]
594 pub const MEMORY1: Self = Self(0x01);
595 }
596 #[repr(transparent)]
597 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
598 pub struct Pfctrl(pub u8);
599 impl Pfctrl {
600 #[doc = "The DMA is the flow controller"]
601 pub const DMA: Self = Self(0);
602 #[doc = "The peripheral is the flow controller"]
603 pub const PERIPHERAL: Self = Self(0x01);
604 }
605 }
606}
607pub mod syscfg_h7 {
608 use crate::generic::*;
609 #[doc = "System configuration controller"]
610 #[derive(Copy, Clone)]
611 pub struct Syscfg(pub *mut u8);
612 unsafe impl Send for Syscfg {}
613 unsafe impl Sync for Syscfg {}
614 impl Syscfg {
615 #[doc = "peripheral mode configuration register"]
616 pub fn pmcr(self) -> Reg<regs::Pmcr, RW> {
617 unsafe { Reg::from_ptr(self.0.add(4usize)) }
618 }
619 #[doc = "external interrupt configuration register 1"]
620 pub fn exticr(self, n: usize) -> Reg<regs::Exticr, RW> {
621 assert!(n < 4usize);
622 unsafe { Reg::from_ptr(self.0.add(8usize + n * 4usize)) }
623 }
624 #[doc = "compensation cell control/status register"]
625 pub fn cccsr(self) -> Reg<regs::Cccsr, RW> {
626 unsafe { Reg::from_ptr(self.0.add(32usize)) }
627 }
628 #[doc = "SYSCFG compensation cell value register"]
629 pub fn ccvr(self) -> Reg<regs::Ccvr, R> {
630 unsafe { Reg::from_ptr(self.0.add(36usize)) }
631 }
632 #[doc = "SYSCFG compensation cell code register"]
633 pub fn cccr(self) -> Reg<regs::Cccr, RW> {
634 unsafe { Reg::from_ptr(self.0.add(40usize)) }
635 }
636 #[doc = "SYSCFG power control register"]
637 pub fn pwrcr(self) -> Reg<regs::Pwrcr, RW> {
638 unsafe { Reg::from_ptr(self.0.add(44usize)) }
639 }
640 #[doc = "SYSCFG package register"]
641 pub fn pkgr(self) -> Reg<regs::Pkgr, R> {
642 unsafe { Reg::from_ptr(self.0.add(292usize)) }
643 }
644 #[doc = "SYSCFG user register 0"]
645 pub fn ur0(self) -> Reg<regs::Ur0, R> {
646 unsafe { Reg::from_ptr(self.0.add(768usize)) }
647 }
648 #[doc = "SYSCFG user register 2"]
649 pub fn ur2(self) -> Reg<regs::Ur2, RW> {
650 unsafe { Reg::from_ptr(self.0.add(776usize)) }
651 }
652 #[doc = "SYSCFG user register 3"]
653 pub fn ur3(self) -> Reg<regs::Ur3, RW> {
654 unsafe { Reg::from_ptr(self.0.add(780usize)) }
655 }
656 #[doc = "SYSCFG user register 4"]
657 pub fn ur4(self) -> Reg<regs::Ur4, R> {
658 unsafe { Reg::from_ptr(self.0.add(784usize)) }
659 }
660 #[doc = "SYSCFG user register 5"]
661 pub fn ur5(self) -> Reg<regs::Ur5, R> {
662 unsafe { Reg::from_ptr(self.0.add(788usize)) }
663 }
664 #[doc = "SYSCFG user register 6"]
665 pub fn ur6(self) -> Reg<regs::Ur6, R> {
666 unsafe { Reg::from_ptr(self.0.add(792usize)) }
667 }
668 #[doc = "SYSCFG user register 7"]
669 pub fn ur7(self) -> Reg<regs::Ur7, R> {
670 unsafe { Reg::from_ptr(self.0.add(796usize)) }
671 }
672 #[doc = "SYSCFG user register 8"]
673 pub fn ur8(self) -> Reg<regs::Ur8, R> {
674 unsafe { Reg::from_ptr(self.0.add(800usize)) }
675 }
676 #[doc = "SYSCFG user register 9"]
677 pub fn ur9(self) -> Reg<regs::Ur9, R> {
678 unsafe { Reg::from_ptr(self.0.add(804usize)) }
679 }
680 #[doc = "SYSCFG user register 10"]
681 pub fn ur10(self) -> Reg<regs::Ur10, R> {
682 unsafe { Reg::from_ptr(self.0.add(808usize)) }
683 }
684 #[doc = "SYSCFG user register 11"]
685 pub fn ur11(self) -> Reg<regs::Ur11, R> {
686 unsafe { Reg::from_ptr(self.0.add(812usize)) }
687 }
688 #[doc = "SYSCFG user register 12"]
689 pub fn ur12(self) -> Reg<regs::Ur12, R> {
690 unsafe { Reg::from_ptr(self.0.add(816usize)) }
691 }
692 #[doc = "SYSCFG user register 13"]
693 pub fn ur13(self) -> Reg<regs::Ur13, R> {
694 unsafe { Reg::from_ptr(self.0.add(820usize)) }
695 }
696 #[doc = "SYSCFG user register 14"]
697 pub fn ur14(self) -> Reg<regs::Ur14, RW> {
698 unsafe { Reg::from_ptr(self.0.add(824usize)) }
699 }
700 #[doc = "SYSCFG user register 15"]
701 pub fn ur15(self) -> Reg<regs::Ur15, R> {
702 unsafe { Reg::from_ptr(self.0.add(828usize)) }
703 }
704 #[doc = "SYSCFG user register 16"]
705 pub fn ur16(self) -> Reg<regs::Ur16, R> {
706 unsafe { Reg::from_ptr(self.0.add(832usize)) }
707 }
708 #[doc = "SYSCFG user register 17"]
709 pub fn ur17(self) -> Reg<regs::Ur17, R> {
710 unsafe { Reg::from_ptr(self.0.add(836usize)) }
711 }
712 }
713 pub mod regs {
714 use crate::generic::*;
715 #[doc = "SYSCFG user register 7"]
455 #[repr(transparent)] 716 #[repr(transparent)]
456 #[derive(Copy, Clone, Eq, PartialEq)] 717 #[derive(Copy, Clone, Eq, PartialEq)]
457 pub struct Argr(pub u32); 718 pub struct Ur7(pub u32);
458 impl Argr { 719 impl Ur7 {
459 #[doc = "Command argument. These bits can only be written by firmware when CPSM is disabled (CPSMEN = 0). Command argument sent to a card as part of a command message. If a command contains an argument, it must be loaded into this register before writing a command to the command register."] 720 #[doc = "Secured area start address for bank 1"]
460 pub const fn cmdarg(&self) -> u32 { 721 pub const fn sa_beg_1(&self) -> u16 {
461 let val = (self.0 >> 0usize) & 0xffff_ffff; 722 let val = (self.0 >> 0usize) & 0x0fff;
462 val as u32 723 val as u16
463 } 724 }
464 #[doc = "Command argument. These bits can only be written by firmware when CPSM is disabled (CPSMEN = 0). Command argument sent to a card as part of a command message. If a command contains an argument, it must be loaded into this register before writing a command to the command register."] 725 #[doc = "Secured area start address for bank 1"]
465 pub fn set_cmdarg(&mut self, val: u32) { 726 pub fn set_sa_beg_1(&mut self, val: u16) {
466 self.0 = 727 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize);
467 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); 728 }
729 #[doc = "Secured area end address for bank 1"]
730 pub const fn sa_end_1(&self) -> u16 {
731 let val = (self.0 >> 16usize) & 0x0fff;
732 val as u16
733 }
734 #[doc = "Secured area end address for bank 1"]
735 pub fn set_sa_end_1(&mut self, val: u16) {
736 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize);
468 } 737 }
469 } 738 }
470 impl Default for Argr { 739 impl Default for Ur7 {
471 fn default() -> Argr { 740 fn default() -> Ur7 {
472 Argr(0) 741 Ur7(0)
473 } 742 }
474 } 743 }
475 #[doc = "SDMMC IP version register"] 744 #[doc = "SYSCFG user register 0"]
476 #[repr(transparent)] 745 #[repr(transparent)]
477 #[derive(Copy, Clone, Eq, PartialEq)] 746 #[derive(Copy, Clone, Eq, PartialEq)]
478 pub struct Ver(pub u32); 747 pub struct Ur0(pub u32);
479 impl Ver { 748 impl Ur0 {
480 #[doc = "IP minor revision number."] 749 #[doc = "Bank Swap"]
481 pub const fn minrev(&self) -> u8 { 750 pub const fn bks(&self) -> bool {
482 let val = (self.0 >> 0usize) & 0x0f; 751 let val = (self.0 >> 0usize) & 0x01;
483 val as u8 752 val != 0
484 } 753 }
485 #[doc = "IP minor revision number."] 754 #[doc = "Bank Swap"]
486 pub fn set_minrev(&mut self, val: u8) { 755 pub fn set_bks(&mut self, val: bool) {
487 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); 756 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
488 } 757 }
489 #[doc = "IP major revision number."] 758 #[doc = "Readout protection"]
490 pub const fn majrev(&self) -> u8 { 759 pub const fn rdp(&self) -> u8 {
491 let val = (self.0 >> 4usize) & 0x0f; 760 let val = (self.0 >> 16usize) & 0xff;
492 val as u8 761 val as u8
493 } 762 }
494 #[doc = "IP major revision number."] 763 #[doc = "Readout protection"]
495 pub fn set_majrev(&mut self, val: u8) { 764 pub fn set_rdp(&mut self, val: u8) {
496 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize); 765 self.0 = (self.0 & !(0xff << 16usize)) | (((val as u32) & 0xff) << 16usize);
497 } 766 }
498 } 767 }
499 impl Default for Ver { 768 impl Default for Ur0 {
500 fn default() -> Ver { 769 fn default() -> Ur0 {
501 Ver(0) 770 Ur0(0)
502 } 771 }
503 } 772 }
504 #[doc = "The receive and transmit FIFOs can be read or written as 32-bit wide registers. The FIFOs contain 32 entries on 32 sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO."] 773 #[doc = "SYSCFG user register 13"]
505 #[repr(transparent)] 774 #[repr(transparent)]
506 #[derive(Copy, Clone, Eq, PartialEq)] 775 #[derive(Copy, Clone, Eq, PartialEq)]
507 pub struct Idmactrlr(pub u32); 776 pub struct Ur13(pub u32);
508 impl Idmactrlr { 777 impl Ur13 {
509 #[doc = "IDMA enable This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 778 #[doc = "Secured DTCM RAM Size"]
510 pub const fn idmaen(&self) -> bool { 779 pub const fn sdrs(&self) -> u8 {
511 let val = (self.0 >> 0usize) & 0x01; 780 let val = (self.0 >> 0usize) & 0x03;
512 val != 0 781 val as u8
513 } 782 }
514 #[doc = "IDMA enable This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 783 #[doc = "Secured DTCM RAM Size"]
515 pub fn set_idmaen(&mut self, val: bool) { 784 pub fn set_sdrs(&mut self, val: u8) {
516 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 785 self.0 = (self.0 & !(0x03 << 0usize)) | (((val as u32) & 0x03) << 0usize);
517 } 786 }
518 #[doc = "Buffer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 787 #[doc = "D1 Standby reset"]
519 pub const fn idmabmode(&self) -> bool { 788 pub const fn d1sbrst(&self) -> bool {
520 let val = (self.0 >> 1usize) & 0x01; 789 let val = (self.0 >> 16usize) & 0x01;
521 val != 0 790 val != 0
522 } 791 }
523 #[doc = "Buffer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 792 #[doc = "D1 Standby reset"]
524 pub fn set_idmabmode(&mut self, val: bool) { 793 pub fn set_d1sbrst(&mut self, val: bool) {
525 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 794 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
526 } 795 }
527 #[doc = "Double buffer mode active buffer indication This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). When IDMA is enabled this bit is toggled by hardware."] 796 }
528 pub const fn idmabact(&self) -> bool { 797 impl Default for Ur13 {
529 let val = (self.0 >> 2usize) & 0x01; 798 fn default() -> Ur13 {
799 Ur13(0)
800 }
801 }
802 #[doc = "SYSCFG user register 12"]
803 #[repr(transparent)]
804 #[derive(Copy, Clone, Eq, PartialEq)]
805 pub struct Ur12(pub u32);
806 impl Ur12 {
807 #[doc = "Secure mode"]
808 pub const fn secure(&self) -> bool {
809 let val = (self.0 >> 16usize) & 0x01;
530 val != 0 810 val != 0
531 } 811 }
532 #[doc = "Double buffer mode active buffer indication This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). When IDMA is enabled this bit is toggled by hardware."] 812 #[doc = "Secure mode"]
533 pub fn set_idmabact(&mut self, val: bool) { 813 pub fn set_secure(&mut self, val: bool) {
534 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); 814 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
535 } 815 }
536 } 816 }
537 impl Default for Idmactrlr { 817 impl Default for Ur12 {
538 fn default() -> Idmactrlr { 818 fn default() -> Ur12 {
539 Idmactrlr(0) 819 Ur12(0)
540 } 820 }
541 } 821 }
542 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."] 822 #[doc = "SYSCFG power control register"]
543 #[repr(transparent)] 823 #[repr(transparent)]
544 #[derive(Copy, Clone, Eq, PartialEq)] 824 #[derive(Copy, Clone, Eq, PartialEq)]
545 pub struct Resp4r(pub u32); 825 pub struct Pwrcr(pub u32);
546 impl Resp4r { 826 impl Pwrcr {
547 #[doc = "see Table404."] 827 #[doc = "Overdrive enable"]
548 pub const fn cardstatus4(&self) -> u32 { 828 pub const fn oden(&self) -> u8 {
549 let val = (self.0 >> 0usize) & 0xffff_ffff; 829 let val = (self.0 >> 0usize) & 0x0f;
550 val as u32 830 val as u8
551 } 831 }
552 #[doc = "see Table404."] 832 #[doc = "Overdrive enable"]
553 pub fn set_cardstatus4(&mut self, val: u32) { 833 pub fn set_oden(&mut self, val: u8) {
554 self.0 = 834 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize);
555 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
556 } 835 }
557 } 836 }
558 impl Default for Resp4r { 837 impl Default for Pwrcr {
559 fn default() -> Resp4r { 838 fn default() -> Pwrcr {
560 Resp4r(0) 839 Pwrcr(0)
561 } 840 }
562 } 841 }
563 #[doc = "The SDMMC_CMDR register contains the command index and command type bits. The command index is sent to a card as part of a command message. The command type bits control the command path state machine (CPSM)."] 842 #[doc = "SYSCFG user register 16"]
564 #[repr(transparent)] 843 #[repr(transparent)]
565 #[derive(Copy, Clone, Eq, PartialEq)] 844 #[derive(Copy, Clone, Eq, PartialEq)]
566 pub struct Cmdr(pub u32); 845 pub struct Ur16(pub u32);
567 impl Cmdr { 846 impl Ur16 {
568 #[doc = "Command index. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). The command index is sent to the card as part of a command message."] 847 #[doc = "Freeze independent watchdog in Stop mode"]
569 pub const fn cmdindex(&self) -> u8 { 848 pub const fn fziwdgstp(&self) -> bool {
570 let val = (self.0 >> 0usize) & 0x3f; 849 let val = (self.0 >> 0usize) & 0x01;
571 val as u8 850 val != 0
572 } 851 }
573 #[doc = "Command index. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). The command index is sent to the card as part of a command message."] 852 #[doc = "Freeze independent watchdog in Stop mode"]
574 pub fn set_cmdindex(&mut self, val: u8) { 853 pub fn set_fziwdgstp(&mut self, val: bool) {
575 self.0 = (self.0 & !(0x3f << 0usize)) | (((val as u32) & 0x3f) << 0usize); 854 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
576 } 855 }
577 #[doc = "The CPSM treats the command as a data transfer command, stops the interrupt period, and signals DataEnable to the DPSM This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues an end of interrupt period and issues DataEnable signal to the DPSM when the command is sent."] 856 #[doc = "Private key programmed"]
578 pub const fn cmdtrans(&self) -> bool { 857 pub const fn pkp(&self) -> bool {
579 let val = (self.0 >> 6usize) & 0x01; 858 let val = (self.0 >> 16usize) & 0x01;
580 val != 0 859 val != 0
581 } 860 }
582 #[doc = "The CPSM treats the command as a data transfer command, stops the interrupt period, and signals DataEnable to the DPSM This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues an end of interrupt period and issues DataEnable signal to the DPSM when the command is sent."] 861 #[doc = "Private key programmed"]
583 pub fn set_cmdtrans(&mut self, val: bool) { 862 pub fn set_pkp(&mut self, val: bool) {
584 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 863 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
585 } 864 }
586 #[doc = "The CPSM treats the command as a Stop Transmission command and signals Abort to the DPSM. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues the Abort signal to the DPSM when the command is sent."] 865 }
587 pub const fn cmdstop(&self) -> bool { 866 impl Default for Ur16 {
588 let val = (self.0 >> 7usize) & 0x01; 867 fn default() -> Ur16 {
868 Ur16(0)
869 }
870 }
871 #[doc = "SYSCFG user register 5"]
872 #[repr(transparent)]
873 #[derive(Copy, Clone, Eq, PartialEq)]
874 pub struct Ur5(pub u32);
875 impl Ur5 {
876 #[doc = "Mass erase secured area disabled for bank 1"]
877 pub const fn mesad_1(&self) -> bool {
878 let val = (self.0 >> 0usize) & 0x01;
589 val != 0 879 val != 0
590 } 880 }
591 #[doc = "The CPSM treats the command as a Stop Transmission command and signals Abort to the DPSM. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues the Abort signal to the DPSM when the command is sent."] 881 #[doc = "Mass erase secured area disabled for bank 1"]
592 pub fn set_cmdstop(&mut self, val: bool) { 882 pub fn set_mesad_1(&mut self, val: bool) {
593 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 883 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
594 } 884 }
595 #[doc = "Wait for response bits. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). They are used to configure whether the CPSM is to wait for a response, and if yes, which kind of response."] 885 #[doc = "Write protection for flash bank 1"]
596 pub const fn waitresp(&self) -> u8 { 886 pub const fn wrpn_1(&self) -> u8 {
597 let val = (self.0 >> 8usize) & 0x03; 887 let val = (self.0 >> 16usize) & 0xff;
598 val as u8 888 val as u8
599 } 889 }
600 #[doc = "Wait for response bits. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). They are used to configure whether the CPSM is to wait for a response, and if yes, which kind of response."] 890 #[doc = "Write protection for flash bank 1"]
601 pub fn set_waitresp(&mut self, val: u8) { 891 pub fn set_wrpn_1(&mut self, val: u8) {
602 self.0 = (self.0 & !(0x03 << 8usize)) | (((val as u32) & 0x03) << 8usize); 892 self.0 = (self.0 & !(0xff << 16usize)) | (((val as u32) & 0xff) << 16usize);
603 }
604 #[doc = "CPSM waits for interrupt request. If this bit is set, the CPSM disables command timeout and waits for an card interrupt request (Response). If this bit is cleared in the CPSM Wait state, will cause the abort of the interrupt mode."]
605 pub const fn waitint(&self) -> bool {
606 let val = (self.0 >> 10usize) & 0x01;
607 val != 0
608 } 893 }
609 #[doc = "CPSM waits for interrupt request. If this bit is set, the CPSM disables command timeout and waits for an card interrupt request (Response). If this bit is cleared in the CPSM Wait state, will cause the abort of the interrupt mode."] 894 }
610 pub fn set_waitint(&mut self, val: bool) { 895 impl Default for Ur5 {
611 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize); 896 fn default() -> Ur5 {
897 Ur5(0)
612 } 898 }
613 #[doc = "CPSM Waits for end of data transfer (CmdPend internal signal) from DPSM. This bit when set, the CPSM waits for the end of data transfer trigger before it starts sending a command. WAITPEND is only taken into account when DTMODE = MMC stream data transfer, WIDBUS = 1-bit wide bus mode, DPSMACT = 1 and DTDIR = from host to card."] 899 }
614 pub const fn waitpend(&self) -> bool { 900 #[doc = "SYSCFG user register 8"]
615 let val = (self.0 >> 11usize) & 0x01; 901 #[repr(transparent)]
902 #[derive(Copy, Clone, Eq, PartialEq)]
903 pub struct Ur8(pub u32);
904 impl Ur8 {
905 #[doc = "Mass erase protected area disabled for bank 2"]
906 pub const fn mepad_2(&self) -> bool {
907 let val = (self.0 >> 0usize) & 0x01;
616 val != 0 908 val != 0
617 } 909 }
618 #[doc = "CPSM Waits for end of data transfer (CmdPend internal signal) from DPSM. This bit when set, the CPSM waits for the end of data transfer trigger before it starts sending a command. WAITPEND is only taken into account when DTMODE = MMC stream data transfer, WIDBUS = 1-bit wide bus mode, DPSMACT = 1 and DTDIR = from host to card."] 910 #[doc = "Mass erase protected area disabled for bank 2"]
619 pub fn set_waitpend(&mut self, val: bool) { 911 pub fn set_mepad_2(&mut self, val: bool) {
620 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize); 912 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
621 } 913 }
622 #[doc = "Command path state machine (CPSM) Enable bit This bit is written 1 by firmware, and cleared by hardware when the CPSM enters the Idle state. If this bit is set, the CPSM is enabled. When DTEN = 1, no command will be transfered nor boot procedure will be started. CPSMEN is cleared to 0."] 914 #[doc = "Mass erase secured area disabled for bank 2"]
623 pub const fn cpsmen(&self) -> bool { 915 pub const fn mesad_2(&self) -> bool {
624 let val = (self.0 >> 12usize) & 0x01; 916 let val = (self.0 >> 16usize) & 0x01;
625 val != 0 917 val != 0
626 } 918 }
627 #[doc = "Command path state machine (CPSM) Enable bit This bit is written 1 by firmware, and cleared by hardware when the CPSM enters the Idle state. If this bit is set, the CPSM is enabled. When DTEN = 1, no command will be transfered nor boot procedure will be started. CPSMEN is cleared to 0."] 919 #[doc = "Mass erase secured area disabled for bank 2"]
628 pub fn set_cpsmen(&mut self, val: bool) { 920 pub fn set_mesad_2(&mut self, val: bool) {
629 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize); 921 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
630 }
631 #[doc = "Hold new data block transmission and reception in the DPSM. If this bit is set, the DPSM will not move from the Wait_S state to the Send state or from the Wait_R state to the Receive state."]
632 pub const fn dthold(&self) -> bool {
633 let val = (self.0 >> 13usize) & 0x01;
634 val != 0
635 } 922 }
636 #[doc = "Hold new data block transmission and reception in the DPSM. If this bit is set, the DPSM will not move from the Wait_S state to the Send state or from the Wait_R state to the Receive state."] 923 }
637 pub fn set_dthold(&mut self, val: bool) { 924 impl Default for Ur8 {
638 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); 925 fn default() -> Ur8 {
926 Ur8(0)
639 } 927 }
640 #[doc = "Select the boot mode procedure to be used. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0)"] 928 }
641 pub const fn bootmode(&self) -> bool { 929 #[doc = "SYSCFG user register 11"]
642 let val = (self.0 >> 14usize) & 0x01; 930 #[repr(transparent)]
643 val != 0 931 #[derive(Copy, Clone, Eq, PartialEq)]
932 pub struct Ur11(pub u32);
933 impl Ur11 {
934 #[doc = "Secured area end address for bank 2"]
935 pub const fn sa_end_2(&self) -> u16 {
936 let val = (self.0 >> 0usize) & 0x0fff;
937 val as u16
644 } 938 }
645 #[doc = "Select the boot mode procedure to be used. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0)"] 939 #[doc = "Secured area end address for bank 2"]
646 pub fn set_bootmode(&mut self, val: bool) { 940 pub fn set_sa_end_2(&mut self, val: u16) {
647 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); 941 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize);
648 } 942 }
649 #[doc = "Enable boot mode procedure."] 943 #[doc = "Independent Watchdog 1 mode"]
650 pub const fn booten(&self) -> bool { 944 pub const fn iwdg1m(&self) -> bool {
651 let val = (self.0 >> 15usize) & 0x01; 945 let val = (self.0 >> 16usize) & 0x01;
652 val != 0 946 val != 0
653 } 947 }
654 #[doc = "Enable boot mode procedure."] 948 #[doc = "Independent Watchdog 1 mode"]
655 pub fn set_booten(&mut self, val: bool) { 949 pub fn set_iwdg1m(&mut self, val: bool) {
656 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize); 950 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
657 } 951 }
658 #[doc = "The CPSM treats the command as a Suspend or Resume command and signals interrupt period start/end. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). CMDSUSPEND = 1 and CMDTRANS = 0 Suspend command, start interrupt period when response bit BS=0. CMDSUSPEND = 1 and CMDTRANS = 1 Resume command with data, end interrupt period when response bit DF=1."] 952 }
659 pub const fn cmdsuspend(&self) -> bool { 953 impl Default for Ur11 {
954 fn default() -> Ur11 {
955 Ur11(0)
956 }
957 }
958 #[doc = "SYSCFG user register 4"]
959 #[repr(transparent)]
960 #[derive(Copy, Clone, Eq, PartialEq)]
961 pub struct Ur4(pub u32);
962 impl Ur4 {
963 #[doc = "Mass Erase Protected Area Disabled for bank 1"]
964 pub const fn mepad_1(&self) -> bool {
660 let val = (self.0 >> 16usize) & 0x01; 965 let val = (self.0 >> 16usize) & 0x01;
661 val != 0 966 val != 0
662 } 967 }
663 #[doc = "The CPSM treats the command as a Suspend or Resume command and signals interrupt period start/end. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). CMDSUSPEND = 1 and CMDTRANS = 0 Suspend command, start interrupt period when response bit BS=0. CMDSUSPEND = 1 and CMDTRANS = 1 Resume command with data, end interrupt period when response bit DF=1."] 968 #[doc = "Mass Erase Protected Area Disabled for bank 1"]
664 pub fn set_cmdsuspend(&mut self, val: bool) { 969 pub fn set_mepad_1(&mut self, val: bool) {
665 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 970 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
666 } 971 }
667 } 972 }
668 impl Default for Cmdr { 973 impl Default for Ur4 {
669 fn default() -> Cmdr { 974 fn default() -> Ur4 {
670 Cmdr(0) 975 Ur4(0)
671 } 976 }
672 } 977 }
673 #[doc = "The interrupt mask register determines which status flags generate an interrupt request by setting the corresponding bit to 1."] 978 #[doc = "peripheral mode configuration register"]
674 #[repr(transparent)] 979 #[repr(transparent)]
675 #[derive(Copy, Clone, Eq, PartialEq)] 980 #[derive(Copy, Clone, Eq, PartialEq)]
676 pub struct Maskr(pub u32); 981 pub struct Pmcr(pub u32);
677 impl Maskr { 982 impl Pmcr {
678 #[doc = "Command CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by command CRC failure."] 983 #[doc = "I2C1 Fm+"]
679 pub const fn ccrcfailie(&self) -> bool { 984 pub const fn i2c1fmp(&self) -> bool {
680 let val = (self.0 >> 0usize) & 0x01; 985 let val = (self.0 >> 0usize) & 0x01;
681 val != 0 986 val != 0
682 } 987 }
683 #[doc = "Command CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by command CRC failure."] 988 #[doc = "I2C1 Fm+"]
684 pub fn set_ccrcfailie(&mut self, val: bool) { 989 pub fn set_i2c1fmp(&mut self, val: bool) {
685 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 990 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
686 } 991 }
687 #[doc = "Data CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by data CRC failure."] 992 #[doc = "I2C2 Fm+"]
688 pub const fn dcrcfailie(&self) -> bool { 993 pub const fn i2c2fmp(&self) -> bool {
689 let val = (self.0 >> 1usize) & 0x01; 994 let val = (self.0 >> 1usize) & 0x01;
690 val != 0 995 val != 0
691 } 996 }
692 #[doc = "Data CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by data CRC failure."] 997 #[doc = "I2C2 Fm+"]
693 pub fn set_dcrcfailie(&mut self, val: bool) { 998 pub fn set_i2c2fmp(&mut self, val: bool) {
694 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 999 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
695 } 1000 }
696 #[doc = "Command timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by command timeout."] 1001 #[doc = "I2C3 Fm+"]
697 pub const fn ctimeoutie(&self) -> bool { 1002 pub const fn i2c3fmp(&self) -> bool {
698 let val = (self.0 >> 2usize) & 0x01; 1003 let val = (self.0 >> 2usize) & 0x01;
699 val != 0 1004 val != 0
700 } 1005 }
701 #[doc = "Command timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by command timeout."] 1006 #[doc = "I2C3 Fm+"]
702 pub fn set_ctimeoutie(&mut self, val: bool) { 1007 pub fn set_i2c3fmp(&mut self, val: bool) {
703 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); 1008 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
704 } 1009 }
705 #[doc = "Data timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by data timeout."] 1010 #[doc = "I2C4 Fm+"]
706 pub const fn dtimeoutie(&self) -> bool { 1011 pub const fn i2c4fmp(&self) -> bool {
707 let val = (self.0 >> 3usize) & 0x01; 1012 let val = (self.0 >> 3usize) & 0x01;
708 val != 0 1013 val != 0
709 } 1014 }
710 #[doc = "Data timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by data timeout."] 1015 #[doc = "I2C4 Fm+"]
711 pub fn set_dtimeoutie(&mut self, val: bool) { 1016 pub fn set_i2c4fmp(&mut self, val: bool) {
712 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); 1017 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
713 } 1018 }
714 #[doc = "Tx FIFO underrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO underrun error."] 1019 #[doc = "PB(6) Fm+"]
715 pub const fn txunderrie(&self) -> bool { 1020 pub const fn pb6fmp(&self) -> bool {
716 let val = (self.0 >> 4usize) & 0x01; 1021 let val = (self.0 >> 4usize) & 0x01;
717 val != 0 1022 val != 0
718 } 1023 }
719 #[doc = "Tx FIFO underrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO underrun error."] 1024 #[doc = "PB(6) Fm+"]
720 pub fn set_txunderrie(&mut self, val: bool) { 1025 pub fn set_pb6fmp(&mut self, val: bool) {
721 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); 1026 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
722 } 1027 }
723 #[doc = "Rx FIFO overrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO overrun error."] 1028 #[doc = "PB(7) Fast Mode Plus"]
724 pub const fn rxoverrie(&self) -> bool { 1029 pub const fn pb7fmp(&self) -> bool {
725 let val = (self.0 >> 5usize) & 0x01; 1030 let val = (self.0 >> 5usize) & 0x01;
726 val != 0 1031 val != 0
727 } 1032 }
728 #[doc = "Rx FIFO overrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO overrun error."] 1033 #[doc = "PB(7) Fast Mode Plus"]
729 pub fn set_rxoverrie(&mut self, val: bool) { 1034 pub fn set_pb7fmp(&mut self, val: bool) {
730 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); 1035 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
731 } 1036 }
732 #[doc = "Command response received interrupt enable Set and cleared by software to enable/disable interrupt caused by receiving command response."] 1037 #[doc = "PB(8) Fast Mode Plus"]
733 pub const fn cmdrendie(&self) -> bool { 1038 pub const fn pb8fmp(&self) -> bool {
734 let val = (self.0 >> 6usize) & 0x01; 1039 let val = (self.0 >> 6usize) & 0x01;
735 val != 0 1040 val != 0
736 } 1041 }
737 #[doc = "Command response received interrupt enable Set and cleared by software to enable/disable interrupt caused by receiving command response."] 1042 #[doc = "PB(8) Fast Mode Plus"]
738 pub fn set_cmdrendie(&mut self, val: bool) { 1043 pub fn set_pb8fmp(&mut self, val: bool) {
739 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 1044 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
740 } 1045 }
741 #[doc = "Command sent interrupt enable Set and cleared by software to enable/disable interrupt caused by sending command."] 1046 #[doc = "PB(9) Fm+"]
742 pub const fn cmdsentie(&self) -> bool { 1047 pub const fn pb9fmp(&self) -> bool {
743 let val = (self.0 >> 7usize) & 0x01; 1048 let val = (self.0 >> 7usize) & 0x01;
744 val != 0 1049 val != 0
745 } 1050 }
746 #[doc = "Command sent interrupt enable Set and cleared by software to enable/disable interrupt caused by sending command."] 1051 #[doc = "PB(9) Fm+"]
747 pub fn set_cmdsentie(&mut self, val: bool) { 1052 pub fn set_pb9fmp(&mut self, val: bool) {
748 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 1053 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
749 } 1054 }
750 #[doc = "Data end interrupt enable Set and cleared by software to enable/disable interrupt caused by data end."] 1055 #[doc = "Booster Enable"]
751 pub const fn dataendie(&self) -> bool { 1056 pub const fn booste(&self) -> bool {
752 let val = (self.0 >> 8usize) & 0x01; 1057 let val = (self.0 >> 8usize) & 0x01;
753 val != 0 1058 val != 0
754 } 1059 }
755 #[doc = "Data end interrupt enable Set and cleared by software to enable/disable interrupt caused by data end."] 1060 #[doc = "Booster Enable"]
756 pub fn set_dataendie(&mut self, val: bool) { 1061 pub fn set_booste(&mut self, val: bool) {
757 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 1062 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
758 } 1063 }
759 #[doc = "Data hold interrupt enable Set and cleared by software to enable/disable the interrupt generated when sending new data is hold in the DPSM Wait_S state."] 1064 #[doc = "Analog switch supply voltage selection"]
760 pub const fn dholdie(&self) -> bool { 1065 pub const fn boostvddsel(&self) -> bool {
761 let val = (self.0 >> 9usize) & 0x01; 1066 let val = (self.0 >> 9usize) & 0x01;
762 val != 0 1067 val != 0
763 } 1068 }
764 #[doc = "Data hold interrupt enable Set and cleared by software to enable/disable the interrupt generated when sending new data is hold in the DPSM Wait_S state."] 1069 #[doc = "Analog switch supply voltage selection"]
765 pub fn set_dholdie(&mut self, val: bool) { 1070 pub fn set_boostvddsel(&mut self, val: bool) {
766 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); 1071 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
767 } 1072 }
768 #[doc = "Data block end interrupt enable Set and cleared by software to enable/disable interrupt caused by data block end."] 1073 #[doc = "Ethernet PHY Interface Selection"]
769 pub const fn dbckendie(&self) -> bool { 1074 pub const fn epis(&self) -> u8 {
770 let val = (self.0 >> 10usize) & 0x01; 1075 let val = (self.0 >> 21usize) & 0x07;
771 val != 0 1076 val as u8
772 }
773 #[doc = "Data block end interrupt enable Set and cleared by software to enable/disable interrupt caused by data block end."]
774 pub fn set_dbckendie(&mut self, val: bool) {
775 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize);
776 }
777 #[doc = "Data transfer aborted interrupt enable Set and cleared by software to enable/disable interrupt caused by a data transfer being aborted."]
778 pub const fn dabortie(&self) -> bool {
779 let val = (self.0 >> 11usize) & 0x01;
780 val != 0
781 }
782 #[doc = "Data transfer aborted interrupt enable Set and cleared by software to enable/disable interrupt caused by a data transfer being aborted."]
783 pub fn set_dabortie(&mut self, val: bool) {
784 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize);
785 }
786 #[doc = "Tx FIFO half empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO half empty."]
787 pub const fn txfifoheie(&self) -> bool {
788 let val = (self.0 >> 14usize) & 0x01;
789 val != 0
790 }
791 #[doc = "Tx FIFO half empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO half empty."]
792 pub fn set_txfifoheie(&mut self, val: bool) {
793 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
794 }
795 #[doc = "Rx FIFO half full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO half full."]
796 pub const fn rxfifohfie(&self) -> bool {
797 let val = (self.0 >> 15usize) & 0x01;
798 val != 0
799 }
800 #[doc = "Rx FIFO half full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO half full."]
801 pub fn set_rxfifohfie(&mut self, val: bool) {
802 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize);
803 }
804 #[doc = "Rx FIFO full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO full."]
805 pub const fn rxfifofie(&self) -> bool {
806 let val = (self.0 >> 17usize) & 0x01;
807 val != 0
808 }
809 #[doc = "Rx FIFO full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO full."]
810 pub fn set_rxfifofie(&mut self, val: bool) {
811 self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize);
812 }
813 #[doc = "Tx FIFO empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO empty."]
814 pub const fn txfifoeie(&self) -> bool {
815 let val = (self.0 >> 18usize) & 0x01;
816 val != 0
817 }
818 #[doc = "Tx FIFO empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO empty."]
819 pub fn set_txfifoeie(&mut self, val: bool) {
820 self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize);
821 }
822 #[doc = "BUSYD0END interrupt enable Set and cleared by software to enable/disable the interrupt generated when SDMMC_D0 signal changes from busy to NOT busy following a CMD response."]
823 pub const fn busyd0endie(&self) -> bool {
824 let val = (self.0 >> 21usize) & 0x01;
825 val != 0
826 }
827 #[doc = "BUSYD0END interrupt enable Set and cleared by software to enable/disable the interrupt generated when SDMMC_D0 signal changes from busy to NOT busy following a CMD response."]
828 pub fn set_busyd0endie(&mut self, val: bool) {
829 self.0 = (self.0 & !(0x01 << 21usize)) | (((val as u32) & 0x01) << 21usize);
830 }
831 #[doc = "SDIO mode interrupt received interrupt enable Set and cleared by software to enable/disable the interrupt generated when receiving the SDIO mode interrupt."]
832 pub const fn sdioitie(&self) -> bool {
833 let val = (self.0 >> 22usize) & 0x01;
834 val != 0
835 }
836 #[doc = "SDIO mode interrupt received interrupt enable Set and cleared by software to enable/disable the interrupt generated when receiving the SDIO mode interrupt."]
837 pub fn set_sdioitie(&mut self, val: bool) {
838 self.0 = (self.0 & !(0x01 << 22usize)) | (((val as u32) & 0x01) << 22usize);
839 }
840 #[doc = "Acknowledgment Fail interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment Fail."]
841 pub const fn ackfailie(&self) -> bool {
842 let val = (self.0 >> 23usize) & 0x01;
843 val != 0
844 } 1077 }
845 #[doc = "Acknowledgment Fail interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment Fail."] 1078 #[doc = "Ethernet PHY Interface Selection"]
846 pub fn set_ackfailie(&mut self, val: bool) { 1079 pub fn set_epis(&mut self, val: u8) {
847 self.0 = (self.0 & !(0x01 << 23usize)) | (((val as u32) & 0x01) << 23usize); 1080 self.0 = (self.0 & !(0x07 << 21usize)) | (((val as u32) & 0x07) << 21usize);
848 } 1081 }
849 #[doc = "Acknowledgment timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment timeout."] 1082 #[doc = "PA0 Switch Open"]
850 pub const fn acktimeoutie(&self) -> bool { 1083 pub const fn pa0so(&self) -> bool {
851 let val = (self.0 >> 24usize) & 0x01; 1084 let val = (self.0 >> 24usize) & 0x01;
852 val != 0 1085 val != 0
853 } 1086 }
854 #[doc = "Acknowledgment timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment timeout."] 1087 #[doc = "PA0 Switch Open"]
855 pub fn set_acktimeoutie(&mut self, val: bool) { 1088 pub fn set_pa0so(&mut self, val: bool) {
856 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize); 1089 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize);
857 } 1090 }
858 #[doc = "Voltage switch critical timing section completion interrupt enable Set and cleared by software to enable/disable the interrupt generated when voltage switch critical timing section completion."] 1091 #[doc = "PA1 Switch Open"]
859 pub const fn vswendie(&self) -> bool { 1092 pub const fn pa1so(&self) -> bool {
860 let val = (self.0 >> 25usize) & 0x01; 1093 let val = (self.0 >> 25usize) & 0x01;
861 val != 0 1094 val != 0
862 } 1095 }
863 #[doc = "Voltage switch critical timing section completion interrupt enable Set and cleared by software to enable/disable the interrupt generated when voltage switch critical timing section completion."] 1096 #[doc = "PA1 Switch Open"]
864 pub fn set_vswendie(&mut self, val: bool) { 1097 pub fn set_pa1so(&mut self, val: bool) {
865 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize); 1098 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize);
866 } 1099 }
867 #[doc = "Voltage Switch clock stopped interrupt enable Set and cleared by software to enable/disable interrupt caused by Voltage Switch clock stopped."] 1100 #[doc = "PC2 Switch Open"]
868 pub const fn ckstopie(&self) -> bool { 1101 pub const fn pc2so(&self) -> bool {
869 let val = (self.0 >> 26usize) & 0x01; 1102 let val = (self.0 >> 26usize) & 0x01;
870 val != 0 1103 val != 0
871 } 1104 }
872 #[doc = "Voltage Switch clock stopped interrupt enable Set and cleared by software to enable/disable interrupt caused by Voltage Switch clock stopped."] 1105 #[doc = "PC2 Switch Open"]
873 pub fn set_ckstopie(&mut self, val: bool) { 1106 pub fn set_pc2so(&mut self, val: bool) {
874 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize); 1107 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize);
875 } 1108 }
876 #[doc = "IDMA buffer transfer complete interrupt enable Set and cleared by software to enable/disable the interrupt generated when the IDMA has transferred all data belonging to a memory buffer."] 1109 #[doc = "PC3 Switch Open"]
877 pub const fn idmabtcie(&self) -> bool { 1110 pub const fn pc3so(&self) -> bool {
878 let val = (self.0 >> 28usize) & 0x01; 1111 let val = (self.0 >> 27usize) & 0x01;
879 val != 0 1112 val != 0
880 } 1113 }
881 #[doc = "IDMA buffer transfer complete interrupt enable Set and cleared by software to enable/disable the interrupt generated when the IDMA has transferred all data belonging to a memory buffer."] 1114 #[doc = "PC3 Switch Open"]
882 pub fn set_idmabtcie(&mut self, val: bool) { 1115 pub fn set_pc3so(&mut self, val: bool) {
883 self.0 = (self.0 & !(0x01 << 28usize)) | (((val as u32) & 0x01) << 28usize); 1116 self.0 = (self.0 & !(0x01 << 27usize)) | (((val as u32) & 0x01) << 27usize);
884 } 1117 }
885 } 1118 }
886 impl Default for Maskr { 1119 impl Default for Pmcr {
887 fn default() -> Maskr { 1120 fn default() -> Pmcr {
888 Maskr(0) 1121 Pmcr(0)
889 } 1122 }
890 } 1123 }
891 #[doc = "The SDMMC_IDMABASE1R register contains the double buffer configuration second buffer memory base address."] 1124 #[doc = "SYSCFG user register 10"]
892 #[repr(transparent)] 1125 #[repr(transparent)]
893 #[derive(Copy, Clone, Eq, PartialEq)] 1126 #[derive(Copy, Clone, Eq, PartialEq)]
894 pub struct Idmabase1r(pub u32); 1127 pub struct Ur10(pub u32);
895 impl Idmabase1r { 1128 impl Ur10 {
896 #[doc = "Buffer 1 memory base address, shall be word aligned (bit [1:0] 1129 #[doc = "Protected area end address for bank 2"]
897are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 1 is inactive (IDMABACT = 0)."] 1130 pub const fn pa_end_2(&self) -> u16 {
898 pub const fn idmabase1(&self) -> u32 { 1131 let val = (self.0 >> 0usize) & 0x0fff;
899 let val = (self.0 >> 0usize) & 0xffff_ffff; 1132 val as u16
900 val as u32
901 } 1133 }
902 #[doc = "Buffer 1 memory base address, shall be word aligned (bit [1:0] 1134 #[doc = "Protected area end address for bank 2"]
903are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 1 is inactive (IDMABACT = 0)."] 1135 pub fn set_pa_end_2(&mut self, val: u16) {
904 pub fn set_idmabase1(&mut self, val: u32) { 1136 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize);
905 self.0 = 1137 }
906 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); 1138 #[doc = "Secured area start address for bank 2"]
1139 pub const fn sa_beg_2(&self) -> u16 {
1140 let val = (self.0 >> 16usize) & 0x0fff;
1141 val as u16
1142 }
1143 #[doc = "Secured area start address for bank 2"]
1144 pub fn set_sa_beg_2(&mut self, val: u16) {
1145 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize);
907 } 1146 }
908 } 1147 }
909 impl Default for Idmabase1r { 1148 impl Default for Ur10 {
910 fn default() -> Idmabase1r { 1149 fn default() -> Ur10 {
911 Idmabase1r(0) 1150 Ur10(0)
912 } 1151 }
913 } 1152 }
914 #[doc = "SDMMC power control register"] 1153 #[doc = "SYSCFG user register 3"]
915 #[repr(transparent)] 1154 #[repr(transparent)]
916 #[derive(Copy, Clone, Eq, PartialEq)] 1155 #[derive(Copy, Clone, Eq, PartialEq)]
917 pub struct Power(pub u32); 1156 pub struct Ur3(pub u32);
918 impl Power { 1157 impl Ur3 {
919 #[doc = "SDMMC state control bits. These bits can only be written when the SDMMC is not in the power-on state (PWRCTRL?11). These bits are used to define the functional state of the SDMMC signals: Any further write will be ignored, PWRCTRL value will keep 11."] 1158 #[doc = "Boot Address 1"]
920 pub const fn pwrctrl(&self) -> u8 { 1159 pub const fn boot_add1(&self) -> u16 {
921 let val = (self.0 >> 0usize) & 0x03; 1160 let val = (self.0 >> 16usize) & 0xffff;
922 val as u8 1161 val as u16
923 }
924 #[doc = "SDMMC state control bits. These bits can only be written when the SDMMC is not in the power-on state (PWRCTRL?11). These bits are used to define the functional state of the SDMMC signals: Any further write will be ignored, PWRCTRL value will keep 11."]
925 pub fn set_pwrctrl(&mut self, val: u8) {
926 self.0 = (self.0 & !(0x03 << 0usize)) | (((val as u32) & 0x03) << 0usize);
927 }
928 #[doc = "Voltage switch sequence start. This bit is used to start the timing critical section of the voltage switch sequence:"]
929 pub const fn vswitch(&self) -> bool {
930 let val = (self.0 >> 2usize) & 0x01;
931 val != 0
932 }
933 #[doc = "Voltage switch sequence start. This bit is used to start the timing critical section of the voltage switch sequence:"]
934 pub fn set_vswitch(&mut self, val: bool) {
935 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
936 }
937 #[doc = "Voltage switch procedure enable. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). This bit is used to stop the SDMMC_CK after the voltage switch command response:"]
938 pub const fn vswitchen(&self) -> bool {
939 let val = (self.0 >> 3usize) & 0x01;
940 val != 0
941 }
942 #[doc = "Voltage switch procedure enable. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). This bit is used to stop the SDMMC_CK after the voltage switch command response:"]
943 pub fn set_vswitchen(&mut self, val: bool) {
944 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
945 }
946 #[doc = "Data and command direction signals polarity selection. This bit can only be written when the SDMMC is in the power-off state (PWRCTRL = 00)."]
947 pub const fn dirpol(&self) -> bool {
948 let val = (self.0 >> 4usize) & 0x01;
949 val != 0
950 } 1162 }
951 #[doc = "Data and command direction signals polarity selection. This bit can only be written when the SDMMC is in the power-off state (PWRCTRL = 00)."] 1163 #[doc = "Boot Address 1"]
952 pub fn set_dirpol(&mut self, val: bool) { 1164 pub fn set_boot_add1(&mut self, val: u16) {
953 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); 1165 self.0 = (self.0 & !(0xffff << 16usize)) | (((val as u32) & 0xffff) << 16usize);
954 } 1166 }
955 } 1167 }
956 impl Default for Power { 1168 impl Default for Ur3 {
957 fn default() -> Power { 1169 fn default() -> Ur3 {
958 Power(0) 1170 Ur3(0)
959 } 1171 }
960 } 1172 }
961 #[doc = "The SDMMC_ACKTIMER register contains the acknowledgment timeout period, in SDMMC_CK bus clock periods. A counter loads the value from the SDMMC_ACKTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_Ack state. If the timer reaches 0 while the DPSM is in this states, the acknowledgment timeout status flag is set."] 1173 #[doc = "SYSCFG user register 15"]
962 #[repr(transparent)] 1174 #[repr(transparent)]
963 #[derive(Copy, Clone, Eq, PartialEq)] 1175 #[derive(Copy, Clone, Eq, PartialEq)]
964 pub struct Acktimer(pub u32); 1176 pub struct Ur15(pub u32);
965 impl Acktimer { 1177 impl Ur15 {
966 #[doc = "Boot acknowledgment timeout period This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). Boot acknowledgment timeout period expressed in card bus clock periods."] 1178 #[doc = "Freeze independent watchdog in Standby mode"]
967 pub const fn acktime(&self) -> u32 { 1179 pub const fn fziwdgstb(&self) -> bool {
968 let val = (self.0 >> 0usize) & 0x01ff_ffff; 1180 let val = (self.0 >> 16usize) & 0x01;
969 val as u32 1181 val != 0
970 } 1182 }
971 #[doc = "Boot acknowledgment timeout period This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). Boot acknowledgment timeout period expressed in card bus clock periods."] 1183 #[doc = "Freeze independent watchdog in Standby mode"]
972 pub fn set_acktime(&mut self, val: u32) { 1184 pub fn set_fziwdgstb(&mut self, val: bool) {
973 self.0 = 1185 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
974 (self.0 & !(0x01ff_ffff << 0usize)) | (((val as u32) & 0x01ff_ffff) << 0usize);
975 } 1186 }
976 } 1187 }
977 impl Default for Acktimer { 1188 impl Default for Ur15 {
978 fn default() -> Acktimer { 1189 fn default() -> Ur15 {
979 Acktimer(0) 1190 Ur15(0)
980 } 1191 }
981 } 1192 }
982 #[doc = "SDMMC command response register"] 1193 #[doc = "SYSCFG compensation cell value register"]
983 #[repr(transparent)] 1194 #[repr(transparent)]
984 #[derive(Copy, Clone, Eq, PartialEq)] 1195 #[derive(Copy, Clone, Eq, PartialEq)]
985 pub struct Respcmdr(pub u32); 1196 pub struct Ccvr(pub u32);
986 impl Respcmdr { 1197 impl Ccvr {
987 #[doc = "Response command index"] 1198 #[doc = "NMOS compensation value"]
988 pub const fn respcmd(&self) -> u8 { 1199 pub const fn ncv(&self) -> u8 {
989 let val = (self.0 >> 0usize) & 0x3f; 1200 let val = (self.0 >> 0usize) & 0x0f;
990 val as u8 1201 val as u8
991 } 1202 }
992 #[doc = "Response command index"] 1203 #[doc = "NMOS compensation value"]
993 pub fn set_respcmd(&mut self, val: u8) { 1204 pub fn set_ncv(&mut self, val: u8) {
994 self.0 = (self.0 & !(0x3f << 0usize)) | (((val as u32) & 0x3f) << 0usize); 1205 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize);
1206 }
1207 #[doc = "PMOS compensation value"]
1208 pub const fn pcv(&self) -> u8 {
1209 let val = (self.0 >> 4usize) & 0x0f;
1210 val as u8
1211 }
1212 #[doc = "PMOS compensation value"]
1213 pub fn set_pcv(&mut self, val: u8) {
1214 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize);
995 } 1215 }
996 } 1216 }
997 impl Default for Respcmdr { 1217 impl Default for Ccvr {
998 fn default() -> Respcmdr { 1218 fn default() -> Ccvr {
999 Respcmdr(0) 1219 Ccvr(0)
1000 } 1220 }
1001 } 1221 }
1002 #[doc = "The receive and transmit FIFOs can be only read or written as word (32-bit) wide registers. The FIFOs contain 16 entries on sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO.When accessing SDMMC_FIFOR with half word or byte access an AHB bus fault is generated."] 1222 #[doc = "SYSCFG user register 9"]
1003 #[repr(transparent)] 1223 #[repr(transparent)]
1004 #[derive(Copy, Clone, Eq, PartialEq)] 1224 #[derive(Copy, Clone, Eq, PartialEq)]
1005 pub struct Fifor(pub u32); 1225 pub struct Ur9(pub u32);
1006 impl Fifor { 1226 impl Ur9 {
1007 #[doc = "Receive and transmit FIFO data This register can only be read or written by firmware when the DPSM is active (DPSMACT=1). The FIFO data occupies 16 entries of 32-bit words."] 1227 #[doc = "Write protection for flash bank 2"]
1008 pub const fn fifodata(&self) -> u32 { 1228 pub const fn wrpn_2(&self) -> u8 {
1009 let val = (self.0 >> 0usize) & 0xffff_ffff; 1229 let val = (self.0 >> 0usize) & 0xff;
1010 val as u32 1230 val as u8
1011 } 1231 }
1012 #[doc = "Receive and transmit FIFO data This register can only be read or written by firmware when the DPSM is active (DPSMACT=1). The FIFO data occupies 16 entries of 32-bit words."] 1232 #[doc = "Write protection for flash bank 2"]
1013 pub fn set_fifodata(&mut self, val: u32) { 1233 pub fn set_wrpn_2(&mut self, val: u8) {
1014 self.0 = 1234 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
1015 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); 1235 }
1236 #[doc = "Protected area start address for bank 2"]
1237 pub const fn pa_beg_2(&self) -> u16 {
1238 let val = (self.0 >> 16usize) & 0x0fff;
1239 val as u16
1240 }
1241 #[doc = "Protected area start address for bank 2"]
1242 pub fn set_pa_beg_2(&mut self, val: u16) {
1243 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize);
1016 } 1244 }
1017 } 1245 }
1018 impl Default for Fifor { 1246 impl Default for Ur9 {
1019 fn default() -> Fifor { 1247 fn default() -> Ur9 {
1020 Fifor(0) 1248 Ur9(0)
1021 } 1249 }
1022 } 1250 }
1023 #[doc = "The SDMMC_DLENR register contains the number of data bytes to be transferred. The value is loaded into the data counter when data transfer starts."] 1251 #[doc = "SYSCFG user register 17"]
1024 #[repr(transparent)] 1252 #[repr(transparent)]
1025 #[derive(Copy, Clone, Eq, PartialEq)] 1253 #[derive(Copy, Clone, Eq, PartialEq)]
1026 pub struct Dlenr(pub u32); 1254 pub struct Ur17(pub u32);
1027 impl Dlenr { 1255 impl Ur17 {
1028 #[doc = "Data length value This register can only be written by firmware when DPSM is inactive (DPSMACT = 0). Number of data bytes to be transferred. When DDR = 1 DATALENGTH is truncated to a multiple of 2. (The last odd byte is not transfered) When DATALENGTH = 0 no data will be transfered, when requested by a CPSMEN and CMDTRANS = 1 also no command will be transfered. DTEN and CPSMEN are cleared to 0."] 1256 #[doc = "I/O high speed / low voltage"]
1029 pub const fn datalength(&self) -> u32 { 1257 pub const fn io_hslv(&self) -> bool {
1030 let val = (self.0 >> 0usize) & 0x01ff_ffff; 1258 let val = (self.0 >> 0usize) & 0x01;
1031 val as u32 1259 val != 0
1032 } 1260 }
1033 #[doc = "Data length value This register can only be written by firmware when DPSM is inactive (DPSMACT = 0). Number of data bytes to be transferred. When DDR = 1 DATALENGTH is truncated to a multiple of 2. (The last odd byte is not transfered) When DATALENGTH = 0 no data will be transfered, when requested by a CPSMEN and CMDTRANS = 1 also no command will be transfered. DTEN and CPSMEN are cleared to 0."] 1261 #[doc = "I/O high speed / low voltage"]
1034 pub fn set_datalength(&mut self, val: u32) { 1262 pub fn set_io_hslv(&mut self, val: bool) {
1035 self.0 = 1263 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
1036 (self.0 & !(0x01ff_ffff << 0usize)) | (((val as u32) & 0x01ff_ffff) << 0usize);
1037 } 1264 }
1038 } 1265 }
1039 impl Default for Dlenr { 1266 impl Default for Ur17 {
1040 fn default() -> Dlenr { 1267 fn default() -> Ur17 {
1041 Dlenr(0) 1268 Ur17(0)
1042 } 1269 }
1043 } 1270 }
1044 #[doc = "The SDMMC_IDMABSIZER register contains the buffers size when in double buffer configuration."] 1271 #[doc = "SYSCFG user register 6"]
1045 #[repr(transparent)] 1272 #[repr(transparent)]
1046 #[derive(Copy, Clone, Eq, PartialEq)] 1273 #[derive(Copy, Clone, Eq, PartialEq)]
1047 pub struct Idmabsizer(pub u32); 1274 pub struct Ur6(pub u32);
1048 impl Idmabsizer { 1275 impl Ur6 {
1049 #[doc = "Number of transfers per buffer. This 8-bit value shall be multiplied by 8 to get the size of the buffer in 32-bit words and by 32 to get the size of the buffer in bytes. Example: IDMABNDT = 0x01: buffer size = 8 words = 32 bytes. These bits can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 1276 #[doc = "Protected area start address for bank 1"]
1050 pub const fn idmabndt(&self) -> u8 { 1277 pub const fn pa_beg_1(&self) -> u16 {
1051 let val = (self.0 >> 5usize) & 0xff; 1278 let val = (self.0 >> 0usize) & 0x0fff;
1052 val as u8 1279 val as u16
1053 } 1280 }
1054 #[doc = "Number of transfers per buffer. This 8-bit value shall be multiplied by 8 to get the size of the buffer in 32-bit words and by 32 to get the size of the buffer in bytes. Example: IDMABNDT = 0x01: buffer size = 8 words = 32 bytes. These bits can only be written by firmware when DPSM is inactive (DPSMACT = 0)."] 1281 #[doc = "Protected area start address for bank 1"]
1055 pub fn set_idmabndt(&mut self, val: u8) { 1282 pub fn set_pa_beg_1(&mut self, val: u16) {
1056 self.0 = (self.0 & !(0xff << 5usize)) | (((val as u32) & 0xff) << 5usize); 1283 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize);
1284 }
1285 #[doc = "Protected area end address for bank 1"]
1286 pub const fn pa_end_1(&self) -> u16 {
1287 let val = (self.0 >> 16usize) & 0x0fff;
1288 val as u16
1289 }
1290 #[doc = "Protected area end address for bank 1"]
1291 pub fn set_pa_end_1(&mut self, val: u16) {
1292 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize);
1057 } 1293 }
1058 } 1294 }
1059 impl Default for Idmabsizer { 1295 impl Default for Ur6 {
1060 fn default() -> Idmabsizer { 1296 fn default() -> Ur6 {
1061 Idmabsizer(0) 1297 Ur6(0)
1062 } 1298 }
1063 } 1299 }
1064 #[doc = "The SDMMC_STAR register is a read-only register. It contains two types of flag:Static flags (bits [29,21,11:0]): these bits remain asserted until they are cleared by writing to the SDMMC interrupt Clear register (see SDMMC_ICR)Dynamic flags (bits [20:12]): these bits change state depending on the state of the underlying logic (for example, FIFO full and empty flags are asserted and de-asserted as data while written to the FIFO)"] 1300 #[doc = "compensation cell control/status register"]
1065 #[repr(transparent)] 1301 #[repr(transparent)]
1066 #[derive(Copy, Clone, Eq, PartialEq)] 1302 #[derive(Copy, Clone, Eq, PartialEq)]
1067 pub struct Star(pub u32); 1303 pub struct Cccsr(pub u32);
1068 impl Star { 1304 impl Cccsr {
1069 #[doc = "Command response received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1305 #[doc = "enable"]
1070 pub const fn ccrcfail(&self) -> bool { 1306 pub const fn en(&self) -> bool {
1071 let val = (self.0 >> 0usize) & 0x01; 1307 let val = (self.0 >> 0usize) & 0x01;
1072 val != 0 1308 val != 0
1073 } 1309 }
1074 #[doc = "Command response received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1310 #[doc = "enable"]
1075 pub fn set_ccrcfail(&mut self, val: bool) { 1311 pub fn set_en(&mut self, val: bool) {
1076 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 1312 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
1077 } 1313 }
1078 #[doc = "Data block sent/received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1314 #[doc = "Code selection"]
1079 pub const fn dcrcfail(&self) -> bool { 1315 pub const fn cs(&self) -> bool {
1080 let val = (self.0 >> 1usize) & 0x01; 1316 let val = (self.0 >> 1usize) & 0x01;
1081 val != 0 1317 val != 0
1082 } 1318 }
1083 #[doc = "Data block sent/received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1319 #[doc = "Code selection"]
1084 pub fn set_dcrcfail(&mut self, val: bool) { 1320 pub fn set_cs(&mut self, val: bool) {
1085 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 1321 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
1086 } 1322 }
1087 #[doc = "Command response timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR. The Command Timeout period has a fixed value of 64 SDMMC_CK clock periods."] 1323 #[doc = "Compensation cell ready flag"]
1088 pub const fn ctimeout(&self) -> bool { 1324 pub const fn ready(&self) -> bool {
1089 let val = (self.0 >> 2usize) & 0x01; 1325 let val = (self.0 >> 8usize) & 0x01;
1090 val != 0 1326 val != 0
1091 } 1327 }
1092 #[doc = "Command response timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR. The Command Timeout period has a fixed value of 64 SDMMC_CK clock periods."] 1328 #[doc = "Compensation cell ready flag"]
1093 pub fn set_ctimeout(&mut self, val: bool) { 1329 pub fn set_ready(&mut self, val: bool) {
1094 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); 1330 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
1095 } 1331 }
1096 #[doc = "Data timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1332 #[doc = "High-speed at low-voltage"]
1097 pub const fn dtimeout(&self) -> bool { 1333 pub const fn hslv(&self) -> bool {
1098 let val = (self.0 >> 3usize) & 0x01; 1334 let val = (self.0 >> 16usize) & 0x01;
1099 val != 0 1335 val != 0
1100 } 1336 }
1101 #[doc = "Data timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1337 #[doc = "High-speed at low-voltage"]
1102 pub fn set_dtimeout(&mut self, val: bool) { 1338 pub fn set_hslv(&mut self, val: bool) {
1103 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); 1339 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
1104 } 1340 }
1105 #[doc = "Transmit FIFO underrun error or IDMA read transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1341 }
1106 pub const fn txunderr(&self) -> bool { 1342 impl Default for Cccsr {
1107 let val = (self.0 >> 4usize) & 0x01; 1343 fn default() -> Cccsr {
1108 val != 0 1344 Cccsr(0)
1109 } 1345 }
1110 #[doc = "Transmit FIFO underrun error or IDMA read transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1346 }
1111 pub fn set_txunderr(&mut self, val: bool) { 1347 #[doc = "SYSCFG package register"]
1112 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); 1348 #[repr(transparent)]
1349 #[derive(Copy, Clone, Eq, PartialEq)]
1350 pub struct Pkgr(pub u32);
1351 impl Pkgr {
1352 #[doc = "Package"]
1353 pub const fn pkg(&self) -> u8 {
1354 let val = (self.0 >> 0usize) & 0x0f;
1355 val as u8
1113 } 1356 }
1114 #[doc = "Received FIFO overrun error or IDMA write transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1357 #[doc = "Package"]
1115 pub const fn rxoverr(&self) -> bool { 1358 pub fn set_pkg(&mut self, val: u8) {
1116 let val = (self.0 >> 5usize) & 0x01; 1359 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize);
1117 val != 0
1118 } 1360 }
1119 #[doc = "Received FIFO overrun error or IDMA write transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1361 }
1120 pub fn set_rxoverr(&mut self, val: bool) { 1362 impl Default for Pkgr {
1121 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); 1363 fn default() -> Pkgr {
1364 Pkgr(0)
1122 } 1365 }
1123 #[doc = "Command response received (CRC check passed, or no CRC). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1366 }
1124 pub const fn cmdrend(&self) -> bool { 1367 #[doc = "external interrupt configuration register 2"]
1125 let val = (self.0 >> 6usize) & 0x01; 1368 #[repr(transparent)]
1126 val != 0 1369 #[derive(Copy, Clone, Eq, PartialEq)]
1370 pub struct Exticr(pub u32);
1371 impl Exticr {
1372 #[doc = "EXTI x configuration (x = 4 to 7)"]
1373 pub fn exti(&self, n: usize) -> u8 {
1374 assert!(n < 4usize);
1375 let offs = 0usize + n * 4usize;
1376 let val = (self.0 >> offs) & 0x0f;
1377 val as u8
1127 } 1378 }
1128 #[doc = "Command response received (CRC check passed, or no CRC). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1379 #[doc = "EXTI x configuration (x = 4 to 7)"]
1129 pub fn set_cmdrend(&mut self, val: bool) { 1380 pub fn set_exti(&mut self, n: usize, val: u8) {
1130 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 1381 assert!(n < 4usize);
1382 let offs = 0usize + n * 4usize;
1383 self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs);
1131 } 1384 }
1132 #[doc = "Command sent (no response required). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1385 }
1133 pub const fn cmdsent(&self) -> bool { 1386 impl Default for Exticr {
1134 let val = (self.0 >> 7usize) & 0x01; 1387 fn default() -> Exticr {
1135 val != 0 1388 Exticr(0)
1136 } 1389 }
1137 #[doc = "Command sent (no response required). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1390 }
1138 pub fn set_cmdsent(&mut self, val: bool) { 1391 #[doc = "SYSCFG user register 2"]
1139 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 1392 #[repr(transparent)]
1393 #[derive(Copy, Clone, Eq, PartialEq)]
1394 pub struct Ur2(pub u32);
1395 impl Ur2 {
1396 #[doc = "BOR_LVL Brownout Reset Threshold Level"]
1397 pub const fn borh(&self) -> u8 {
1398 let val = (self.0 >> 0usize) & 0x03;
1399 val as u8
1140 } 1400 }
1141 #[doc = "Data transfer ended correctly. (data counter, DATACOUNT is zero and no errors occur). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1401 #[doc = "BOR_LVL Brownout Reset Threshold Level"]
1142 pub const fn dataend(&self) -> bool { 1402 pub fn set_borh(&mut self, val: u8) {
1143 let val = (self.0 >> 8usize) & 0x01; 1403 self.0 = (self.0 & !(0x03 << 0usize)) | (((val as u32) & 0x03) << 0usize);
1144 val != 0
1145 } 1404 }
1146 #[doc = "Data transfer ended correctly. (data counter, DATACOUNT is zero and no errors occur). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1405 #[doc = "Boot Address 0"]
1147 pub fn set_dataend(&mut self, val: bool) { 1406 pub const fn boot_add0(&self) -> u16 {
1148 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 1407 let val = (self.0 >> 16usize) & 0xffff;
1408 val as u16
1149 } 1409 }
1150 #[doc = "Data transfer Hold. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1410 #[doc = "Boot Address 0"]
1151 pub const fn dhold(&self) -> bool { 1411 pub fn set_boot_add0(&mut self, val: u16) {
1152 let val = (self.0 >> 9usize) & 0x01; 1412 self.0 = (self.0 & !(0xffff << 16usize)) | (((val as u32) & 0xffff) << 16usize);
1153 val != 0
1154 } 1413 }
1155 #[doc = "Data transfer Hold. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1414 }
1156 pub fn set_dhold(&mut self, val: bool) { 1415 impl Default for Ur2 {
1157 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); 1416 fn default() -> Ur2 {
1417 Ur2(0)
1158 } 1418 }
1159 #[doc = "Data block sent/received. (CRC check passed) and DPSM moves to the READWAIT state. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1419 }
1160 pub const fn dbckend(&self) -> bool { 1420 #[doc = "SYSCFG user register 14"]
1161 let val = (self.0 >> 10usize) & 0x01; 1421 #[repr(transparent)]
1422 #[derive(Copy, Clone, Eq, PartialEq)]
1423 pub struct Ur14(pub u32);
1424 impl Ur14 {
1425 #[doc = "D1 Stop Reset"]
1426 pub const fn d1stprst(&self) -> bool {
1427 let val = (self.0 >> 0usize) & 0x01;
1162 val != 0 1428 val != 0
1163 } 1429 }
1164 #[doc = "Data block sent/received. (CRC check passed) and DPSM moves to the READWAIT state. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1430 #[doc = "D1 Stop Reset"]
1165 pub fn set_dbckend(&mut self, val: bool) { 1431 pub fn set_d1stprst(&mut self, val: bool) {
1166 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize); 1432 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
1167 } 1433 }
1168 #[doc = "Data transfer aborted by CMD12. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1434 }
1169 pub const fn dabort(&self) -> bool { 1435 impl Default for Ur14 {
1170 let val = (self.0 >> 11usize) & 0x01; 1436 fn default() -> Ur14 {
1171 val != 0 1437 Ur14(0)
1172 } 1438 }
1173 #[doc = "Data transfer aborted by CMD12. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1439 }
1174 pub fn set_dabort(&mut self, val: bool) { 1440 #[doc = "SYSCFG compensation cell code register"]
1175 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize); 1441 #[repr(transparent)]
1442 #[derive(Copy, Clone, Eq, PartialEq)]
1443 pub struct Cccr(pub u32);
1444 impl Cccr {
1445 #[doc = "NMOS compensation code"]
1446 pub const fn ncc(&self) -> u8 {
1447 let val = (self.0 >> 0usize) & 0x0f;
1448 val as u8
1176 } 1449 }
1177 #[doc = "Data path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."] 1450 #[doc = "NMOS compensation code"]
1178 pub const fn dpsmact(&self) -> bool { 1451 pub fn set_ncc(&mut self, val: u8) {
1179 let val = (self.0 >> 12usize) & 0x01; 1452 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize);
1180 val != 0
1181 } 1453 }
1182 #[doc = "Data path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."] 1454 #[doc = "PMOS compensation code"]
1183 pub fn set_dpsmact(&mut self, val: bool) { 1455 pub const fn pcc(&self) -> u8 {
1184 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize); 1456 let val = (self.0 >> 4usize) & 0x0f;
1457 val as u8
1185 } 1458 }
1186 #[doc = "Command path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."] 1459 #[doc = "PMOS compensation code"]
1187 pub const fn cpsmact(&self) -> bool { 1460 pub fn set_pcc(&mut self, val: u8) {
1188 let val = (self.0 >> 13usize) & 0x01; 1461 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize);
1189 val != 0
1190 } 1462 }
1191 #[doc = "Command path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."] 1463 }
1192 pub fn set_cpsmact(&mut self, val: bool) { 1464 impl Default for Cccr {
1193 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); 1465 fn default() -> Cccr {
1466 Cccr(0)
1194 } 1467 }
1195 #[doc = "Transmit FIFO half empty At least half the number of words can be written into the FIFO. This bit is cleared when the FIFO becomes half+1 full."] 1468 }
1196 pub const fn txfifohe(&self) -> bool { 1469 }
1197 let val = (self.0 >> 14usize) & 0x01; 1470}
1471pub mod dma_v1 {
1472 use crate::generic::*;
1473 #[doc = "Channel cluster: CCR?, CNDTR?, CPAR?, and CMAR? registers"]
1474 #[derive(Copy, Clone)]
1475 pub struct Ch(pub *mut u8);
1476 unsafe impl Send for Ch {}
1477 unsafe impl Sync for Ch {}
1478 impl Ch {
1479 #[doc = "DMA channel configuration register (DMA_CCR)"]
1480 pub fn cr(self) -> Reg<regs::Cr, RW> {
1481 unsafe { Reg::from_ptr(self.0.add(0usize)) }
1482 }
1483 #[doc = "DMA channel 1 number of data register"]
1484 pub fn ndtr(self) -> Reg<regs::Ndtr, RW> {
1485 unsafe { Reg::from_ptr(self.0.add(4usize)) }
1486 }
1487 #[doc = "DMA channel 1 peripheral address register"]
1488 pub fn par(self) -> Reg<u32, RW> {
1489 unsafe { Reg::from_ptr(self.0.add(8usize)) }
1490 }
1491 #[doc = "DMA channel 1 memory address register"]
1492 pub fn mar(self) -> Reg<u32, RW> {
1493 unsafe { Reg::from_ptr(self.0.add(12usize)) }
1494 }
1495 }
1496 #[doc = "DMA controller"]
1497 #[derive(Copy, Clone)]
1498 pub struct Dma(pub *mut u8);
1499 unsafe impl Send for Dma {}
1500 unsafe impl Sync for Dma {}
1501 impl Dma {
1502 #[doc = "DMA interrupt status register (DMA_ISR)"]
1503 pub fn isr(self) -> Reg<regs::Isr, R> {
1504 unsafe { Reg::from_ptr(self.0.add(0usize)) }
1505 }
1506 #[doc = "DMA interrupt flag clear register (DMA_IFCR)"]
1507 pub fn ifcr(self) -> Reg<regs::Ifcr, W> {
1508 unsafe { Reg::from_ptr(self.0.add(4usize)) }
1509 }
1510 #[doc = "Channel cluster: CCR?, CNDTR?, CPAR?, and CMAR? registers"]
1511 pub fn ch(self, n: usize) -> Ch {
1512 assert!(n < 7usize);
1513 unsafe { Ch(self.0.add(8usize + n * 20usize)) }
1514 }
1515 }
1516 pub mod regs {
1517 use crate::generic::*;
1518 #[doc = "DMA interrupt flag clear register (DMA_IFCR)"]
1519 #[repr(transparent)]
1520 #[derive(Copy, Clone, Eq, PartialEq)]
1521 pub struct Ifcr(pub u32);
1522 impl Ifcr {
1523 #[doc = "Channel 1 Global interrupt clear"]
1524 pub fn cgif(&self, n: usize) -> bool {
1525 assert!(n < 7usize);
1526 let offs = 0usize + n * 4usize;
1527 let val = (self.0 >> offs) & 0x01;
1198 val != 0 1528 val != 0
1199 } 1529 }
1200 #[doc = "Transmit FIFO half empty At least half the number of words can be written into the FIFO. This bit is cleared when the FIFO becomes half+1 full."] 1530 #[doc = "Channel 1 Global interrupt clear"]
1201 pub fn set_txfifohe(&mut self, val: bool) { 1531 pub fn set_cgif(&mut self, n: usize, val: bool) {
1202 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); 1532 assert!(n < 7usize);
1533 let offs = 0usize + n * 4usize;
1534 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1203 } 1535 }
1204 #[doc = "Receive FIFO half full There are at least half the number of words in the FIFO. This bit is cleared when the FIFO becomes half+1 empty."] 1536 #[doc = "Channel 1 Transfer Complete clear"]
1205 pub const fn rxfifohf(&self) -> bool { 1537 pub fn ctcif(&self, n: usize) -> bool {
1206 let val = (self.0 >> 15usize) & 0x01; 1538 assert!(n < 7usize);
1539 let offs = 1usize + n * 4usize;
1540 let val = (self.0 >> offs) & 0x01;
1207 val != 0 1541 val != 0
1208 } 1542 }
1209 #[doc = "Receive FIFO half full There are at least half the number of words in the FIFO. This bit is cleared when the FIFO becomes half+1 empty."] 1543 #[doc = "Channel 1 Transfer Complete clear"]
1210 pub fn set_rxfifohf(&mut self, val: bool) { 1544 pub fn set_ctcif(&mut self, n: usize, val: bool) {
1211 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize); 1545 assert!(n < 7usize);
1546 let offs = 1usize + n * 4usize;
1547 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1212 } 1548 }
1213 #[doc = "Transmit FIFO full This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes empty."] 1549 #[doc = "Channel 1 Half Transfer clear"]
1214 pub const fn txfifof(&self) -> bool { 1550 pub fn chtif(&self, n: usize) -> bool {
1215 let val = (self.0 >> 16usize) & 0x01; 1551 assert!(n < 7usize);
1552 let offs = 2usize + n * 4usize;
1553 let val = (self.0 >> offs) & 0x01;
1216 val != 0 1554 val != 0
1217 } 1555 }
1218 #[doc = "Transmit FIFO full This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes empty."] 1556 #[doc = "Channel 1 Half Transfer clear"]
1219 pub fn set_txfifof(&mut self, val: bool) { 1557 pub fn set_chtif(&mut self, n: usize, val: bool) {
1220 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 1558 assert!(n < 7usize);
1559 let offs = 2usize + n * 4usize;
1560 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1221 } 1561 }
1222 #[doc = "Receive FIFO full This bit is cleared when one FIFO location becomes empty."] 1562 #[doc = "Channel 1 Transfer Error clear"]
1223 pub const fn rxfifof(&self) -> bool { 1563 pub fn cteif(&self, n: usize) -> bool {
1224 let val = (self.0 >> 17usize) & 0x01; 1564 assert!(n < 7usize);
1565 let offs = 3usize + n * 4usize;
1566 let val = (self.0 >> offs) & 0x01;
1225 val != 0 1567 val != 0
1226 } 1568 }
1227 #[doc = "Receive FIFO full This bit is cleared when one FIFO location becomes empty."] 1569 #[doc = "Channel 1 Transfer Error clear"]
1228 pub fn set_rxfifof(&mut self, val: bool) { 1570 pub fn set_cteif(&mut self, n: usize, val: bool) {
1229 self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize); 1571 assert!(n < 7usize);
1230 } 1572 let offs = 3usize + n * 4usize;
1231 #[doc = "Transmit FIFO empty This bit is cleared when one FIFO location becomes full."] 1573 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1232 pub const fn txfifoe(&self) -> bool {
1233 let val = (self.0 >> 18usize) & 0x01;
1234 val != 0
1235 } 1574 }
1236 #[doc = "Transmit FIFO empty This bit is cleared when one FIFO location becomes full."] 1575 }
1237 pub fn set_txfifoe(&mut self, val: bool) { 1576 impl Default for Ifcr {
1238 self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize); 1577 fn default() -> Ifcr {
1578 Ifcr(0)
1239 } 1579 }
1240 #[doc = "Receive FIFO empty This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes full."] 1580 }
1241 pub const fn rxfifoe(&self) -> bool { 1581 #[doc = "DMA interrupt status register (DMA_ISR)"]
1242 let val = (self.0 >> 19usize) & 0x01; 1582 #[repr(transparent)]
1583 #[derive(Copy, Clone, Eq, PartialEq)]
1584 pub struct Isr(pub u32);
1585 impl Isr {
1586 #[doc = "Channel 1 Global interrupt flag"]
1587 pub fn gif(&self, n: usize) -> bool {
1588 assert!(n < 7usize);
1589 let offs = 0usize + n * 4usize;
1590 let val = (self.0 >> offs) & 0x01;
1243 val != 0 1591 val != 0
1244 } 1592 }
1245 #[doc = "Receive FIFO empty This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes full."] 1593 #[doc = "Channel 1 Global interrupt flag"]
1246 pub fn set_rxfifoe(&mut self, val: bool) { 1594 pub fn set_gif(&mut self, n: usize, val: bool) {
1247 self.0 = (self.0 & !(0x01 << 19usize)) | (((val as u32) & 0x01) << 19usize); 1595 assert!(n < 7usize);
1596 let offs = 0usize + n * 4usize;
1597 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1248 } 1598 }
1249 #[doc = "Inverted value of SDMMC_D0 line (Busy), sampled at the end of a CMD response and a second time 2 SDMMC_CK cycles after the CMD response. This bit is reset to not busy when the SDMMCD0 line changes from busy to not busy. This bit does not signal busy due to data transfer. This is a hardware status flag only, it does not generate an interrupt."] 1599 #[doc = "Channel 1 Transfer Complete flag"]
1250 pub const fn busyd0(&self) -> bool { 1600 pub fn tcif(&self, n: usize) -> bool {
1251 let val = (self.0 >> 20usize) & 0x01; 1601 assert!(n < 7usize);
1602 let offs = 1usize + n * 4usize;
1603 let val = (self.0 >> offs) & 0x01;
1252 val != 0 1604 val != 0
1253 } 1605 }
1254 #[doc = "Inverted value of SDMMC_D0 line (Busy), sampled at the end of a CMD response and a second time 2 SDMMC_CK cycles after the CMD response. This bit is reset to not busy when the SDMMCD0 line changes from busy to not busy. This bit does not signal busy due to data transfer. This is a hardware status flag only, it does not generate an interrupt."] 1606 #[doc = "Channel 1 Transfer Complete flag"]
1255 pub fn set_busyd0(&mut self, val: bool) { 1607 pub fn set_tcif(&mut self, n: usize, val: bool) {
1256 self.0 = (self.0 & !(0x01 << 20usize)) | (((val as u32) & 0x01) << 20usize); 1608 assert!(n < 7usize);
1609 let offs = 1usize + n * 4usize;
1610 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1257 } 1611 }
1258 #[doc = "end of SDMMC_D0 Busy following a CMD response detected. This indicates only end of busy following a CMD response. This bit does not signal busy due to data transfer. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1612 #[doc = "Channel 1 Half Transfer Complete flag"]
1259 pub const fn busyd0end(&self) -> bool { 1613 pub fn htif(&self, n: usize) -> bool {
1260 let val = (self.0 >> 21usize) & 0x01; 1614 assert!(n < 7usize);
1615 let offs = 2usize + n * 4usize;
1616 let val = (self.0 >> offs) & 0x01;
1261 val != 0 1617 val != 0
1262 } 1618 }
1263 #[doc = "end of SDMMC_D0 Busy following a CMD response detected. This indicates only end of busy following a CMD response. This bit does not signal busy due to data transfer. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1619 #[doc = "Channel 1 Half Transfer Complete flag"]
1264 pub fn set_busyd0end(&mut self, val: bool) { 1620 pub fn set_htif(&mut self, n: usize, val: bool) {
1265 self.0 = (self.0 & !(0x01 << 21usize)) | (((val as u32) & 0x01) << 21usize); 1621 assert!(n < 7usize);
1622 let offs = 2usize + n * 4usize;
1623 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1266 } 1624 }
1267 #[doc = "SDIO interrupt received. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1625 #[doc = "Channel 1 Transfer Error flag"]
1268 pub const fn sdioit(&self) -> bool { 1626 pub fn teif(&self, n: usize) -> bool {
1269 let val = (self.0 >> 22usize) & 0x01; 1627 assert!(n < 7usize);
1628 let offs = 3usize + n * 4usize;
1629 let val = (self.0 >> offs) & 0x01;
1270 val != 0 1630 val != 0
1271 } 1631 }
1272 #[doc = "SDIO interrupt received. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1632 #[doc = "Channel 1 Transfer Error flag"]
1273 pub fn set_sdioit(&mut self, val: bool) { 1633 pub fn set_teif(&mut self, n: usize, val: bool) {
1274 self.0 = (self.0 & !(0x01 << 22usize)) | (((val as u32) & 0x01) << 22usize); 1634 assert!(n < 7usize);
1635 let offs = 3usize + n * 4usize;
1636 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1275 } 1637 }
1276 #[doc = "Boot acknowledgment received (boot acknowledgment check fail). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1638 }
1277 pub const fn ackfail(&self) -> bool { 1639 impl Default for Isr {
1278 let val = (self.0 >> 23usize) & 0x01; 1640 fn default() -> Isr {
1279 val != 0 1641 Isr(0)
1280 } 1642 }
1281 #[doc = "Boot acknowledgment received (boot acknowledgment check fail). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1643 }
1282 pub fn set_ackfail(&mut self, val: bool) { 1644 #[doc = "DMA channel 1 number of data register"]
1283 self.0 = (self.0 & !(0x01 << 23usize)) | (((val as u32) & 0x01) << 23usize); 1645 #[repr(transparent)]
1646 #[derive(Copy, Clone, Eq, PartialEq)]
1647 pub struct Ndtr(pub u32);
1648 impl Ndtr {
1649 #[doc = "Number of data to transfer"]
1650 pub const fn ndt(&self) -> u16 {
1651 let val = (self.0 >> 0usize) & 0xffff;
1652 val as u16
1284 } 1653 }
1285 #[doc = "Boot acknowledgment timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1654 #[doc = "Number of data to transfer"]
1286 pub const fn acktimeout(&self) -> bool { 1655 pub fn set_ndt(&mut self, val: u16) {
1287 let val = (self.0 >> 24usize) & 0x01; 1656 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
1288 val != 0
1289 } 1657 }
1290 #[doc = "Boot acknowledgment timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1658 }
1291 pub fn set_acktimeout(&mut self, val: bool) { 1659 impl Default for Ndtr {
1292 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize); 1660 fn default() -> Ndtr {
1661 Ndtr(0)
1293 } 1662 }
1294 #[doc = "Voltage switch critical timing section completion. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1663 }
1295 pub const fn vswend(&self) -> bool { 1664 #[doc = "DMA channel configuration register (DMA_CCR)"]
1296 let val = (self.0 >> 25usize) & 0x01; 1665 #[repr(transparent)]
1666 #[derive(Copy, Clone, Eq, PartialEq)]
1667 pub struct Cr(pub u32);
1668 impl Cr {
1669 #[doc = "Channel enable"]
1670 pub const fn en(&self) -> bool {
1671 let val = (self.0 >> 0usize) & 0x01;
1297 val != 0 1672 val != 0
1298 } 1673 }
1299 #[doc = "Voltage switch critical timing section completion. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1674 #[doc = "Channel enable"]
1300 pub fn set_vswend(&mut self, val: bool) { 1675 pub fn set_en(&mut self, val: bool) {
1301 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize); 1676 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
1302 } 1677 }
1303 #[doc = "SDMMC_CK stopped in Voltage switch procedure. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1678 #[doc = "Transfer complete interrupt enable"]
1304 pub const fn ckstop(&self) -> bool { 1679 pub const fn tcie(&self) -> bool {
1305 let val = (self.0 >> 26usize) & 0x01; 1680 let val = (self.0 >> 1usize) & 0x01;
1306 val != 0 1681 val != 0
1307 } 1682 }
1308 #[doc = "SDMMC_CK stopped in Voltage switch procedure. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1683 #[doc = "Transfer complete interrupt enable"]
1309 pub fn set_ckstop(&mut self, val: bool) { 1684 pub fn set_tcie(&mut self, val: bool) {
1310 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize); 1685 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
1311 } 1686 }
1312 #[doc = "IDMA transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1687 #[doc = "Half Transfer interrupt enable"]
1313 pub const fn idmate(&self) -> bool { 1688 pub const fn htie(&self) -> bool {
1314 let val = (self.0 >> 27usize) & 0x01; 1689 let val = (self.0 >> 2usize) & 0x01;
1315 val != 0 1690 val != 0
1316 } 1691 }
1317 #[doc = "IDMA transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1692 #[doc = "Half Transfer interrupt enable"]
1318 pub fn set_idmate(&mut self, val: bool) { 1693 pub fn set_htie(&mut self, val: bool) {
1319 self.0 = (self.0 & !(0x01 << 27usize)) | (((val as u32) & 0x01) << 27usize); 1694 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
1320 } 1695 }
1321 #[doc = "IDMA buffer transfer complete. interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1696 #[doc = "Transfer error interrupt enable"]
1322 pub const fn idmabtc(&self) -> bool { 1697 pub const fn teie(&self) -> bool {
1323 let val = (self.0 >> 28usize) & 0x01; 1698 let val = (self.0 >> 3usize) & 0x01;
1324 val != 0 1699 val != 0
1325 } 1700 }
1326 #[doc = "IDMA buffer transfer complete. interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."] 1701 #[doc = "Transfer error interrupt enable"]
1327 pub fn set_idmabtc(&mut self, val: bool) { 1702 pub fn set_teie(&mut self, val: bool) {
1328 self.0 = (self.0 & !(0x01 << 28usize)) | (((val as u32) & 0x01) << 28usize); 1703 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
1329 }
1330 }
1331 impl Default for Star {
1332 fn default() -> Star {
1333 Star(0)
1334 } 1704 }
1335 } 1705 #[doc = "Data transfer direction"]
1336 #[doc = "The SDMMC_CLKCR register controls the SDMMC_CK output clock, the SDMMC_RX_CLK receive clock, and the bus width."] 1706 pub const fn dir(&self) -> super::vals::Dir {
1337 #[repr(transparent)] 1707 let val = (self.0 >> 4usize) & 0x01;
1338 #[derive(Copy, Clone, Eq, PartialEq)] 1708 super::vals::Dir(val as u8)
1339 pub struct Clkcr(pub u32);
1340 impl Clkcr {
1341 #[doc = "Clock divide factor This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). This field defines the divide factor between the input clock (SDMMCCLK) and the output clock (SDMMC_CK): SDMMC_CK frequency = SDMMCCLK / [2 * CLKDIV]. 0xx: etc.. xxx: etc.."]
1342 pub const fn clkdiv(&self) -> u16 {
1343 let val = (self.0 >> 0usize) & 0x03ff;
1344 val as u16
1345 } 1709 }
1346 #[doc = "Clock divide factor This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). This field defines the divide factor between the input clock (SDMMCCLK) and the output clock (SDMMC_CK): SDMMC_CK frequency = SDMMCCLK / [2 * CLKDIV]. 0xx: etc.. xxx: etc.."] 1710 #[doc = "Data transfer direction"]
1347 pub fn set_clkdiv(&mut self, val: u16) { 1711 pub fn set_dir(&mut self, val: super::vals::Dir) {
1348 self.0 = (self.0 & !(0x03ff << 0usize)) | (((val as u32) & 0x03ff) << 0usize); 1712 self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize);
1349 } 1713 }
1350 #[doc = "Power saving configuration bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) For power saving, the SDMMC_CK clock output can be disabled when the bus is idle by setting PWRSAV:"] 1714 #[doc = "Circular mode"]
1351 pub const fn pwrsav(&self) -> bool { 1715 pub const fn circ(&self) -> super::vals::Circ {
1352 let val = (self.0 >> 12usize) & 0x01; 1716 let val = (self.0 >> 5usize) & 0x01;
1353 val != 0 1717 super::vals::Circ(val as u8)
1354 } 1718 }
1355 #[doc = "Power saving configuration bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) For power saving, the SDMMC_CK clock output can be disabled when the bus is idle by setting PWRSAV:"] 1719 #[doc = "Circular mode"]
1356 pub fn set_pwrsav(&mut self, val: bool) { 1720 pub fn set_circ(&mut self, val: super::vals::Circ) {
1357 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize); 1721 self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize);
1358 } 1722 }
1359 #[doc = "Wide bus mode enable bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"] 1723 #[doc = "Peripheral increment mode"]
1360 pub const fn widbus(&self) -> u8 { 1724 pub const fn pinc(&self) -> super::vals::Inc {
1361 let val = (self.0 >> 14usize) & 0x03; 1725 let val = (self.0 >> 6usize) & 0x01;
1362 val as u8 1726 super::vals::Inc(val as u8)
1363 } 1727 }
1364 #[doc = "Wide bus mode enable bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"] 1728 #[doc = "Peripheral increment mode"]
1365 pub fn set_widbus(&mut self, val: u8) { 1729 pub fn set_pinc(&mut self, val: super::vals::Inc) {
1366 self.0 = (self.0 & !(0x03 << 14usize)) | (((val as u32) & 0x03) << 14usize); 1730 self.0 = (self.0 & !(0x01 << 6usize)) | (((val.0 as u32) & 0x01) << 6usize);
1367 } 1731 }
1368 #[doc = "SDMMC_CK dephasing selection bit for data and Command. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). When clock division = 1 (CLKDIV = 0), this bit has no effect. Data and Command change on SDMMC_CK falling edge. When clock division &gt;1 (CLKDIV &gt; 0) &amp; DDR = 0: - SDMMC_CK edge occurs on SDMMCCLK rising edge. When clock division >1 (CLKDIV > 0) & DDR = 1: - Data changed on the SDMMCCLK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge. - Data changed on the SDMMC_CK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge."] 1732 #[doc = "Memory increment mode"]
1369 pub const fn negedge(&self) -> bool { 1733 pub const fn minc(&self) -> super::vals::Inc {
1370 let val = (self.0 >> 16usize) & 0x01; 1734 let val = (self.0 >> 7usize) & 0x01;
1371 val != 0 1735 super::vals::Inc(val as u8)
1372 } 1736 }
1373 #[doc = "SDMMC_CK dephasing selection bit for data and Command. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). When clock division = 1 (CLKDIV = 0), this bit has no effect. Data and Command change on SDMMC_CK falling edge. When clock division &gt;1 (CLKDIV &gt; 0) &amp; DDR = 0: - SDMMC_CK edge occurs on SDMMCCLK rising edge. When clock division >1 (CLKDIV > 0) & DDR = 1: - Data changed on the SDMMCCLK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge. - Data changed on the SDMMC_CK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge."] 1737 #[doc = "Memory increment mode"]
1374 pub fn set_negedge(&mut self, val: bool) { 1738 pub fn set_minc(&mut self, val: super::vals::Inc) {
1375 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 1739 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
1376 } 1740 }
1377 #[doc = "Hardware flow control enable This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) When Hardware flow control is enabled, the meaning of the TXFIFOE and RXFIFOF flags change, please see SDMMC status register definition in Section56.8.11."] 1741 #[doc = "Peripheral size"]
1378 pub const fn hwfc_en(&self) -> bool { 1742 pub const fn psize(&self) -> super::vals::Size {
1379 let val = (self.0 >> 17usize) & 0x01; 1743 let val = (self.0 >> 8usize) & 0x03;
1380 val != 0 1744 super::vals::Size(val as u8)
1381 } 1745 }
1382 #[doc = "Hardware flow control enable This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) When Hardware flow control is enabled, the meaning of the TXFIFOE and RXFIFOF flags change, please see SDMMC status register definition in Section56.8.11."] 1746 #[doc = "Peripheral size"]
1383 pub fn set_hwfc_en(&mut self, val: bool) { 1747 pub fn set_psize(&mut self, val: super::vals::Size) {
1384 self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize); 1748 self.0 = (self.0 & !(0x03 << 8usize)) | (((val.0 as u32) & 0x03) << 8usize);
1385 } 1749 }
1386 #[doc = "Data rate signaling selection This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) DDR rate shall only be selected with 4-bit or 8-bit wide bus mode. (WIDBUS &gt; 00). DDR = 1 has no effect when WIDBUS = 00 (1-bit wide bus). DDR rate shall only be selected with clock division &gt;1. (CLKDIV &gt; 0)"] 1750 #[doc = "Memory size"]
1387 pub const fn ddr(&self) -> bool { 1751 pub const fn msize(&self) -> super::vals::Size {
1388 let val = (self.0 >> 18usize) & 0x01; 1752 let val = (self.0 >> 10usize) & 0x03;
1389 val != 0 1753 super::vals::Size(val as u8)
1390 } 1754 }
1391 #[doc = "Data rate signaling selection This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) DDR rate shall only be selected with 4-bit or 8-bit wide bus mode. (WIDBUS &gt; 00). DDR = 1 has no effect when WIDBUS = 00 (1-bit wide bus). DDR rate shall only be selected with clock division &gt;1. (CLKDIV &gt; 0)"] 1755 #[doc = "Memory size"]
1392 pub fn set_ddr(&mut self, val: bool) { 1756 pub fn set_msize(&mut self, val: super::vals::Size) {
1393 self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize); 1757 self.0 = (self.0 & !(0x03 << 10usize)) | (((val.0 as u32) & 0x03) << 10usize);
1394 } 1758 }
1395 #[doc = "Bus speed mode selection between DS, HS, SDR12, SDR25 and SDR50, DDR50, SDR104. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"] 1759 #[doc = "Channel Priority level"]
1396 pub const fn busspeed(&self) -> bool { 1760 pub const fn pl(&self) -> super::vals::Pl {
1397 let val = (self.0 >> 19usize) & 0x01; 1761 let val = (self.0 >> 12usize) & 0x03;
1398 val != 0 1762 super::vals::Pl(val as u8)
1399 } 1763 }
1400 #[doc = "Bus speed mode selection between DS, HS, SDR12, SDR25 and SDR50, DDR50, SDR104. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"] 1764 #[doc = "Channel Priority level"]
1401 pub fn set_busspeed(&mut self, val: bool) { 1765 pub fn set_pl(&mut self, val: super::vals::Pl) {
1402 self.0 = (self.0 & !(0x01 << 19usize)) | (((val as u32) & 0x01) << 19usize); 1766 self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize);
1403 } 1767 }
1404 #[doc = "Receive clock selection. These bits can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"] 1768 #[doc = "Memory to memory mode"]
1405 pub const fn selclkrx(&self) -> u8 { 1769 pub const fn mem2mem(&self) -> super::vals::Memmem {
1406 let val = (self.0 >> 20usize) & 0x03; 1770 let val = (self.0 >> 14usize) & 0x01;
1407 val as u8 1771 super::vals::Memmem(val as u8)
1408 } 1772 }
1409 #[doc = "Receive clock selection. These bits can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"] 1773 #[doc = "Memory to memory mode"]
1410 pub fn set_selclkrx(&mut self, val: u8) { 1774 pub fn set_mem2mem(&mut self, val: super::vals::Memmem) {
1411 self.0 = (self.0 & !(0x03 << 20usize)) | (((val as u32) & 0x03) << 20usize); 1775 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
1412 } 1776 }
1413 } 1777 }
1414 impl Default for Clkcr { 1778 impl Default for Cr {
1415 fn default() -> Clkcr { 1779 fn default() -> Cr {
1416 Clkcr(0) 1780 Cr(0)
1417 } 1781 }
1418 } 1782 }
1419 #[doc = "The SDMMC_IDMABASE0R register contains the memory buffer base address in single buffer configuration and the buffer 0 base address in double buffer configuration."] 1783 }
1784 pub mod vals {
1785 use crate::generic::*;
1420 #[repr(transparent)] 1786 #[repr(transparent)]
1421 #[derive(Copy, Clone, Eq, PartialEq)] 1787 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
1422 pub struct Idmabase0r(pub u32); 1788 pub struct Size(pub u8);
1423 impl Idmabase0r { 1789 impl Size {
1424 #[doc = "Buffer 0 memory base address bits [31:2], shall be word aligned (bit [1:0] 1790 #[doc = "8-bit size"]
1425are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 0 is inactive (IDMABACT = 1)."] 1791 pub const BITS8: Self = Self(0);
1426 pub const fn idmabase0(&self) -> u32 { 1792 #[doc = "16-bit size"]
1427 let val = (self.0 >> 0usize) & 0xffff_ffff; 1793 pub const BITS16: Self = Self(0x01);
1428 val as u32 1794 #[doc = "32-bit size"]
1429 } 1795 pub const BITS32: Self = Self(0x02);
1430 #[doc = "Buffer 0 memory base address bits [31:2], shall be word aligned (bit [1:0]
1431are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 0 is inactive (IDMABACT = 1)."]
1432 pub fn set_idmabase0(&mut self, val: u32) {
1433 self.0 =
1434 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
1435 }
1436 }
1437 impl Default for Idmabase0r {
1438 fn default() -> Idmabase0r {
1439 Idmabase0r(0)
1440 }
1441 } 1796 }
1442 #[doc = "The SDMMC_DCNTR register loads the value from the data length register (see SDMMC_DLENR) when the DPSM moves from the Idle state to the Wait_R or Wait_S state. As data is transferred, the counter decrements the value until it reaches 0. The DPSM then moves to the Idle state and when there has been no error, the data status end flag (DATAEND) is set."]
1443 #[repr(transparent)] 1797 #[repr(transparent)]
1444 #[derive(Copy, Clone, Eq, PartialEq)] 1798 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
1445 pub struct Dcntr(pub u32); 1799 pub struct Inc(pub u8);
1446 impl Dcntr { 1800 impl Inc {
1447 #[doc = "Data count value When read, the number of remaining data bytes to be transferred is returned. Write has no effect."] 1801 #[doc = "Increment mode disabled"]
1448 pub const fn datacount(&self) -> u32 { 1802 pub const DISABLED: Self = Self(0);
1449 let val = (self.0 >> 0usize) & 0x01ff_ffff; 1803 #[doc = "Increment mode enabled"]
1450 val as u32 1804 pub const ENABLED: Self = Self(0x01);
1451 }
1452 #[doc = "Data count value When read, the number of remaining data bytes to be transferred is returned. Write has no effect."]
1453 pub fn set_datacount(&mut self, val: u32) {
1454 self.0 =
1455 (self.0 & !(0x01ff_ffff << 0usize)) | (((val as u32) & 0x01ff_ffff) << 0usize);
1456 }
1457 }
1458 impl Default for Dcntr {
1459 fn default() -> Dcntr {
1460 Dcntr(0)
1461 }
1462 } 1805 }
1463 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."]
1464 #[repr(transparent)] 1806 #[repr(transparent)]
1465 #[derive(Copy, Clone, Eq, PartialEq)] 1807 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
1466 pub struct Resp3r(pub u32); 1808 pub struct Dir(pub u8);
1467 impl Resp3r { 1809 impl Dir {
1468 #[doc = "see Table404."] 1810 #[doc = "Read from peripheral"]
1469 pub const fn cardstatus3(&self) -> u32 { 1811 pub const FROMPERIPHERAL: Self = Self(0);
1470 let val = (self.0 >> 0usize) & 0xffff_ffff; 1812 #[doc = "Read from memory"]
1471 val as u32 1813 pub const FROMMEMORY: Self = Self(0x01);
1472 }
1473 #[doc = "see Table404."]
1474 pub fn set_cardstatus3(&mut self, val: u32) {
1475 self.0 =
1476 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
1477 }
1478 } 1814 }
1479 impl Default for Resp3r { 1815 #[repr(transparent)]
1480 fn default() -> Resp3r { 1816 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
1481 Resp3r(0) 1817 pub struct Memmem(pub u8);
1482 } 1818 impl Memmem {
1819 #[doc = "Memory to memory mode disabled"]
1820 pub const DISABLED: Self = Self(0);
1821 #[doc = "Memory to memory mode enabled"]
1822 pub const ENABLED: Self = Self(0x01);
1483 } 1823 }
1484 #[doc = "The SDMMC_DTIMER register contains the data timeout period, in card bus clock periods. A counter loads the value from the SDMMC_DTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_R or Busy state. If the timer reaches 0 while the DPSM is in either of these states, the timeout status flag is set."]
1485 #[repr(transparent)] 1824 #[repr(transparent)]
1486 #[derive(Copy, Clone, Eq, PartialEq)] 1825 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
1487 pub struct Dtimer(pub u32); 1826 pub struct Circ(pub u8);
1488 impl Dtimer { 1827 impl Circ {
1489 #[doc = "Data and R1b busy timeout period This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). Data and R1b busy timeout period expressed in card bus clock periods."] 1828 #[doc = "Circular buffer disabled"]
1490 pub const fn datatime(&self) -> u32 { 1829 pub const DISABLED: Self = Self(0);
1491 let val = (self.0 >> 0usize) & 0xffff_ffff; 1830 #[doc = "Circular buffer enabled"]
1492 val as u32 1831 pub const ENABLED: Self = Self(0x01);
1493 }
1494 #[doc = "Data and R1b busy timeout period This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). Data and R1b busy timeout period expressed in card bus clock periods."]
1495 pub fn set_datatime(&mut self, val: u32) {
1496 self.0 =
1497 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
1498 }
1499 } 1832 }
1500 impl Default for Dtimer { 1833 #[repr(transparent)]
1501 fn default() -> Dtimer { 1834 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
1502 Dtimer(0) 1835 pub struct Pl(pub u8);
1503 } 1836 impl Pl {
1837 #[doc = "Low priority"]
1838 pub const LOW: Self = Self(0);
1839 #[doc = "Medium priority"]
1840 pub const MEDIUM: Self = Self(0x01);
1841 #[doc = "High priority"]
1842 pub const HIGH: Self = Self(0x02);
1843 #[doc = "Very high priority"]
1844 pub const VERYHIGH: Self = Self(0x03);
1504 } 1845 }
1505 } 1846 }
1506} 1847}
1507pub mod timer_v1 { 1848pub mod timer_v1 {
1508 use crate::generic::*; 1849 use crate::generic::*;
1509 #[doc = "General purpose 32-bit timer"] 1850 #[doc = "General purpose 16-bit timer"]
1510 #[derive(Copy, Clone)] 1851 #[derive(Copy, Clone)]
1511 pub struct TimGp32(pub *mut u8); 1852 pub struct TimGp16(pub *mut u8);
1512 unsafe impl Send for TimGp32 {} 1853 unsafe impl Send for TimGp16 {}
1513 unsafe impl Sync for TimGp32 {} 1854 unsafe impl Sync for TimGp16 {}
1514 impl TimGp32 { 1855 impl TimGp16 {
1515 #[doc = "control register 1"] 1856 #[doc = "control register 1"]
1516 pub fn cr1(self) -> Reg<regs::Cr1Gp, RW> { 1857 pub fn cr1(self) -> Reg<regs::Cr1Gp, RW> {
1517 unsafe { Reg::from_ptr(self.0.add(0usize)) } 1858 unsafe { Reg::from_ptr(self.0.add(0usize)) }
@@ -1551,7 +1892,7 @@ pub mod timer_v1 {
1551 unsafe { Reg::from_ptr(self.0.add(32usize)) } 1892 unsafe { Reg::from_ptr(self.0.add(32usize)) }
1552 } 1893 }
1553 #[doc = "counter"] 1894 #[doc = "counter"]
1554 pub fn cnt(self) -> Reg<regs::Cnt32, RW> { 1895 pub fn cnt(self) -> Reg<regs::Cnt16, RW> {
1555 unsafe { Reg::from_ptr(self.0.add(36usize)) } 1896 unsafe { Reg::from_ptr(self.0.add(36usize)) }
1556 } 1897 }
1557 #[doc = "prescaler"] 1898 #[doc = "prescaler"]
@@ -1559,11 +1900,11 @@ pub mod timer_v1 {
1559 unsafe { Reg::from_ptr(self.0.add(40usize)) } 1900 unsafe { Reg::from_ptr(self.0.add(40usize)) }
1560 } 1901 }
1561 #[doc = "auto-reload register"] 1902 #[doc = "auto-reload register"]
1562 pub fn arr(self) -> Reg<regs::Arr32, RW> { 1903 pub fn arr(self) -> Reg<regs::Arr16, RW> {
1563 unsafe { Reg::from_ptr(self.0.add(44usize)) } 1904 unsafe { Reg::from_ptr(self.0.add(44usize)) }
1564 } 1905 }
1565 #[doc = "capture/compare register"] 1906 #[doc = "capture/compare register"]
1566 pub fn ccr(self, n: usize) -> Reg<regs::Ccr32, RW> { 1907 pub fn ccr(self, n: usize) -> Reg<regs::Ccr16, RW> {
1567 assert!(n < 4usize); 1908 assert!(n < 4usize);
1568 unsafe { Reg::from_ptr(self.0.add(52usize + n * 4usize)) } 1909 unsafe { Reg::from_ptr(self.0.add(52usize + n * 4usize)) }
1569 } 1910 }
@@ -1576,51 +1917,12 @@ pub mod timer_v1 {
1576 unsafe { Reg::from_ptr(self.0.add(76usize)) } 1917 unsafe { Reg::from_ptr(self.0.add(76usize)) }
1577 } 1918 }
1578 } 1919 }
1579 #[doc = "Basic timer"] 1920 #[doc = "General purpose 32-bit timer"]
1580 #[derive(Copy, Clone)]
1581 pub struct TimBasic(pub *mut u8);
1582 unsafe impl Send for TimBasic {}
1583 unsafe impl Sync for TimBasic {}
1584 impl TimBasic {
1585 #[doc = "control register 1"]
1586 pub fn cr1(self) -> Reg<regs::Cr1Basic, RW> {
1587 unsafe { Reg::from_ptr(self.0.add(0usize)) }
1588 }
1589 #[doc = "control register 2"]
1590 pub fn cr2(self) -> Reg<regs::Cr2Basic, RW> {
1591 unsafe { Reg::from_ptr(self.0.add(4usize)) }
1592 }
1593 #[doc = "DMA/Interrupt enable register"]
1594 pub fn dier(self) -> Reg<regs::DierBasic, RW> {
1595 unsafe { Reg::from_ptr(self.0.add(12usize)) }
1596 }
1597 #[doc = "status register"]
1598 pub fn sr(self) -> Reg<regs::SrBasic, RW> {
1599 unsafe { Reg::from_ptr(self.0.add(16usize)) }
1600 }
1601 #[doc = "event generation register"]
1602 pub fn egr(self) -> Reg<regs::EgrBasic, W> {
1603 unsafe { Reg::from_ptr(self.0.add(20usize)) }
1604 }
1605 #[doc = "counter"]
1606 pub fn cnt(self) -> Reg<regs::Cnt16, RW> {
1607 unsafe { Reg::from_ptr(self.0.add(36usize)) }
1608 }
1609 #[doc = "prescaler"]
1610 pub fn psc(self) -> Reg<regs::Psc, RW> {
1611 unsafe { Reg::from_ptr(self.0.add(40usize)) }
1612 }
1613 #[doc = "auto-reload register"]
1614 pub fn arr(self) -> Reg<regs::Arr16, RW> {
1615 unsafe { Reg::from_ptr(self.0.add(44usize)) }
1616 }
1617 }
1618 #[doc = "General purpose 16-bit timer"]
1619 #[derive(Copy, Clone)] 1921 #[derive(Copy, Clone)]
1620 pub struct TimGp16(pub *mut u8); 1922 pub struct TimGp32(pub *mut u8);
1621 unsafe impl Send for TimGp16 {} 1923 unsafe impl Send for TimGp32 {}
1622 unsafe impl Sync for TimGp16 {} 1924 unsafe impl Sync for TimGp32 {}
1623 impl TimGp16 { 1925 impl TimGp32 {
1624 #[doc = "control register 1"] 1926 #[doc = "control register 1"]
1625 pub fn cr1(self) -> Reg<regs::Cr1Gp, RW> { 1927 pub fn cr1(self) -> Reg<regs::Cr1Gp, RW> {
1626 unsafe { Reg::from_ptr(self.0.add(0usize)) } 1928 unsafe { Reg::from_ptr(self.0.add(0usize)) }
@@ -1660,7 +1962,7 @@ pub mod timer_v1 {
1660 unsafe { Reg::from_ptr(self.0.add(32usize)) } 1962 unsafe { Reg::from_ptr(self.0.add(32usize)) }
1661 } 1963 }
1662 #[doc = "counter"] 1964 #[doc = "counter"]
1663 pub fn cnt(self) -> Reg<regs::Cnt16, RW> { 1965 pub fn cnt(self) -> Reg<regs::Cnt32, RW> {
1664 unsafe { Reg::from_ptr(self.0.add(36usize)) } 1966 unsafe { Reg::from_ptr(self.0.add(36usize)) }
1665 } 1967 }
1666 #[doc = "prescaler"] 1968 #[doc = "prescaler"]
@@ -1668,11 +1970,11 @@ pub mod timer_v1 {
1668 unsafe { Reg::from_ptr(self.0.add(40usize)) } 1970 unsafe { Reg::from_ptr(self.0.add(40usize)) }
1669 } 1971 }
1670 #[doc = "auto-reload register"] 1972 #[doc = "auto-reload register"]
1671 pub fn arr(self) -> Reg<regs::Arr16, RW> { 1973 pub fn arr(self) -> Reg<regs::Arr32, RW> {
1672 unsafe { Reg::from_ptr(self.0.add(44usize)) } 1974 unsafe { Reg::from_ptr(self.0.add(44usize)) }
1673 } 1975 }
1674 #[doc = "capture/compare register"] 1976 #[doc = "capture/compare register"]
1675 pub fn ccr(self, n: usize) -> Reg<regs::Ccr16, RW> { 1977 pub fn ccr(self, n: usize) -> Reg<regs::Ccr32, RW> {
1676 assert!(n < 4usize); 1978 assert!(n < 4usize);
1677 unsafe { Reg::from_ptr(self.0.add(52usize + n * 4usize)) } 1979 unsafe { Reg::from_ptr(self.0.add(52usize + n * 4usize)) }
1678 } 1980 }
@@ -1685,6 +1987,45 @@ pub mod timer_v1 {
1685 unsafe { Reg::from_ptr(self.0.add(76usize)) } 1987 unsafe { Reg::from_ptr(self.0.add(76usize)) }
1686 } 1988 }
1687 } 1989 }
1990 #[doc = "Basic timer"]
1991 #[derive(Copy, Clone)]
1992 pub struct TimBasic(pub *mut u8);
1993 unsafe impl Send for TimBasic {}
1994 unsafe impl Sync for TimBasic {}
1995 impl TimBasic {
1996 #[doc = "control register 1"]
1997 pub fn cr1(self) -> Reg<regs::Cr1Basic, RW> {
1998 unsafe { Reg::from_ptr(self.0.add(0usize)) }
1999 }
2000 #[doc = "control register 2"]
2001 pub fn cr2(self) -> Reg<regs::Cr2Basic, RW> {
2002 unsafe { Reg::from_ptr(self.0.add(4usize)) }
2003 }
2004 #[doc = "DMA/Interrupt enable register"]
2005 pub fn dier(self) -> Reg<regs::DierBasic, RW> {
2006 unsafe { Reg::from_ptr(self.0.add(12usize)) }
2007 }
2008 #[doc = "status register"]
2009 pub fn sr(self) -> Reg<regs::SrBasic, RW> {
2010 unsafe { Reg::from_ptr(self.0.add(16usize)) }
2011 }
2012 #[doc = "event generation register"]
2013 pub fn egr(self) -> Reg<regs::EgrBasic, W> {
2014 unsafe { Reg::from_ptr(self.0.add(20usize)) }
2015 }
2016 #[doc = "counter"]
2017 pub fn cnt(self) -> Reg<regs::Cnt16, RW> {
2018 unsafe { Reg::from_ptr(self.0.add(36usize)) }
2019 }
2020 #[doc = "prescaler"]
2021 pub fn psc(self) -> Reg<regs::Psc, RW> {
2022 unsafe { Reg::from_ptr(self.0.add(40usize)) }
2023 }
2024 #[doc = "auto-reload register"]
2025 pub fn arr(self) -> Reg<regs::Arr16, RW> {
2026 unsafe { Reg::from_ptr(self.0.add(44usize)) }
2027 }
2028 }
1688 #[doc = "Advanced-timers"] 2029 #[doc = "Advanced-timers"]
1689 #[derive(Copy, Clone)] 2030 #[derive(Copy, Clone)]
1690 pub struct TimAdv(pub *mut u8); 2031 pub struct TimAdv(pub *mut u8);
@@ -1765,99 +2106,203 @@ pub mod timer_v1 {
1765 } 2106 }
1766 pub mod regs { 2107 pub mod regs {
1767 use crate::generic::*; 2108 use crate::generic::*;
1768 #[doc = "control register 2"] 2109 #[doc = "DMA/Interrupt enable register"]
1769 #[repr(transparent)] 2110 #[repr(transparent)]
1770 #[derive(Copy, Clone, Eq, PartialEq)] 2111 #[derive(Copy, Clone, Eq, PartialEq)]
1771 pub struct Cr2Gp(pub u32); 2112 pub struct DierBasic(pub u32);
1772 impl Cr2Gp { 2113 impl DierBasic {
1773 #[doc = "Capture/compare DMA selection"] 2114 #[doc = "Update interrupt enable"]
1774 pub const fn ccds(&self) -> super::vals::Ccds { 2115 pub const fn uie(&self) -> bool {
1775 let val = (self.0 >> 3usize) & 0x01; 2116 let val = (self.0 >> 0usize) & 0x01;
1776 super::vals::Ccds(val as u8) 2117 val != 0
1777 } 2118 }
1778 #[doc = "Capture/compare DMA selection"] 2119 #[doc = "Update interrupt enable"]
1779 pub fn set_ccds(&mut self, val: super::vals::Ccds) { 2120 pub fn set_uie(&mut self, val: bool) {
1780 self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); 2121 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
1781 } 2122 }
1782 #[doc = "Master mode selection"] 2123 #[doc = "Update DMA request enable"]
1783 pub const fn mms(&self) -> super::vals::Mms { 2124 pub const fn ude(&self) -> bool {
1784 let val = (self.0 >> 4usize) & 0x07; 2125 let val = (self.0 >> 8usize) & 0x01;
1785 super::vals::Mms(val as u8) 2126 val != 0
1786 } 2127 }
1787 #[doc = "Master mode selection"] 2128 #[doc = "Update DMA request enable"]
1788 pub fn set_mms(&mut self, val: super::vals::Mms) { 2129 pub fn set_ude(&mut self, val: bool) {
1789 self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize); 2130 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
1790 } 2131 }
1791 #[doc = "TI1 selection"] 2132 }
1792 pub const fn ti1s(&self) -> super::vals::Tis { 2133 impl Default for DierBasic {
2134 fn default() -> DierBasic {
2135 DierBasic(0)
2136 }
2137 }
2138 #[doc = "status register"]
2139 #[repr(transparent)]
2140 #[derive(Copy, Clone, Eq, PartialEq)]
2141 pub struct SrGp(pub u32);
2142 impl SrGp {
2143 #[doc = "Update interrupt flag"]
2144 pub const fn uif(&self) -> bool {
2145 let val = (self.0 >> 0usize) & 0x01;
2146 val != 0
2147 }
2148 #[doc = "Update interrupt flag"]
2149 pub fn set_uif(&mut self, val: bool) {
2150 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
2151 }
2152 #[doc = "Capture/compare 1 interrupt flag"]
2153 pub fn ccif(&self, n: usize) -> bool {
2154 assert!(n < 4usize);
2155 let offs = 1usize + n * 1usize;
2156 let val = (self.0 >> offs) & 0x01;
2157 val != 0
2158 }
2159 #[doc = "Capture/compare 1 interrupt flag"]
2160 pub fn set_ccif(&mut self, n: usize, val: bool) {
2161 assert!(n < 4usize);
2162 let offs = 1usize + n * 1usize;
2163 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2164 }
2165 #[doc = "COM interrupt flag"]
2166 pub const fn comif(&self) -> bool {
2167 let val = (self.0 >> 5usize) & 0x01;
2168 val != 0
2169 }
2170 #[doc = "COM interrupt flag"]
2171 pub fn set_comif(&mut self, val: bool) {
2172 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
2173 }
2174 #[doc = "Trigger interrupt flag"]
2175 pub const fn tif(&self) -> bool {
2176 let val = (self.0 >> 6usize) & 0x01;
2177 val != 0
2178 }
2179 #[doc = "Trigger interrupt flag"]
2180 pub fn set_tif(&mut self, val: bool) {
2181 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
2182 }
2183 #[doc = "Break interrupt flag"]
2184 pub const fn bif(&self) -> bool {
1793 let val = (self.0 >> 7usize) & 0x01; 2185 let val = (self.0 >> 7usize) & 0x01;
1794 super::vals::Tis(val as u8) 2186 val != 0
1795 } 2187 }
1796 #[doc = "TI1 selection"] 2188 #[doc = "Break interrupt flag"]
1797 pub fn set_ti1s(&mut self, val: super::vals::Tis) { 2189 pub fn set_bif(&mut self, val: bool) {
1798 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); 2190 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
2191 }
2192 #[doc = "Capture/Compare 1 overcapture flag"]
2193 pub fn ccof(&self, n: usize) -> bool {
2194 assert!(n < 4usize);
2195 let offs = 9usize + n * 1usize;
2196 let val = (self.0 >> offs) & 0x01;
2197 val != 0
2198 }
2199 #[doc = "Capture/Compare 1 overcapture flag"]
2200 pub fn set_ccof(&mut self, n: usize, val: bool) {
2201 assert!(n < 4usize);
2202 let offs = 9usize + n * 1usize;
2203 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1799 } 2204 }
1800 } 2205 }
1801 impl Default for Cr2Gp { 2206 impl Default for SrGp {
1802 fn default() -> Cr2Gp { 2207 fn default() -> SrGp {
1803 Cr2Gp(0) 2208 SrGp(0)
1804 } 2209 }
1805 } 2210 }
1806 #[doc = "capture/compare mode register 1 (input mode)"] 2211 #[doc = "counter"]
1807 #[repr(transparent)] 2212 #[repr(transparent)]
1808 #[derive(Copy, Clone, Eq, PartialEq)] 2213 #[derive(Copy, Clone, Eq, PartialEq)]
1809 pub struct CcmrInput(pub u32); 2214 pub struct Cnt16(pub u32);
1810 impl CcmrInput { 2215 impl Cnt16 {
1811 #[doc = "Capture/Compare 1 selection"] 2216 #[doc = "counter value"]
1812 pub fn ccs(&self, n: usize) -> super::vals::CcmrInputCcs { 2217 pub const fn cnt(&self) -> u16 {
1813 assert!(n < 2usize); 2218 let val = (self.0 >> 0usize) & 0xffff;
1814 let offs = 0usize + n * 8usize; 2219 val as u16
1815 let val = (self.0 >> offs) & 0x03;
1816 super::vals::CcmrInputCcs(val as u8)
1817 } 2220 }
1818 #[doc = "Capture/Compare 1 selection"] 2221 #[doc = "counter value"]
1819 pub fn set_ccs(&mut self, n: usize, val: super::vals::CcmrInputCcs) { 2222 pub fn set_cnt(&mut self, val: u16) {
1820 assert!(n < 2usize); 2223 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
1821 let offs = 0usize + n * 8usize;
1822 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
1823 } 2224 }
1824 #[doc = "Input capture 1 prescaler"] 2225 }
1825 pub fn icpsc(&self, n: usize) -> u8 { 2226 impl Default for Cnt16 {
1826 assert!(n < 2usize); 2227 fn default() -> Cnt16 {
1827 let offs = 2usize + n * 8usize; 2228 Cnt16(0)
1828 let val = (self.0 >> offs) & 0x03;
1829 val as u8
1830 } 2229 }
1831 #[doc = "Input capture 1 prescaler"] 2230 }
1832 pub fn set_icpsc(&mut self, n: usize, val: u8) { 2231 #[doc = "capture/compare enable register"]
1833 assert!(n < 2usize); 2232 #[repr(transparent)]
1834 let offs = 2usize + n * 8usize; 2233 #[derive(Copy, Clone, Eq, PartialEq)]
1835 self.0 = (self.0 & !(0x03 << offs)) | (((val as u32) & 0x03) << offs); 2234 pub struct CcerGp(pub u32);
2235 impl CcerGp {
2236 #[doc = "Capture/Compare 1 output enable"]
2237 pub fn cce(&self, n: usize) -> bool {
2238 assert!(n < 4usize);
2239 let offs = 0usize + n * 4usize;
2240 let val = (self.0 >> offs) & 0x01;
2241 val != 0
1836 } 2242 }
1837 #[doc = "Input capture 1 filter"] 2243 #[doc = "Capture/Compare 1 output enable"]
1838 pub fn icf(&self, n: usize) -> super::vals::Icf { 2244 pub fn set_cce(&mut self, n: usize, val: bool) {
1839 assert!(n < 2usize); 2245 assert!(n < 4usize);
1840 let offs = 4usize + n * 8usize; 2246 let offs = 0usize + n * 4usize;
1841 let val = (self.0 >> offs) & 0x0f; 2247 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1842 super::vals::Icf(val as u8)
1843 } 2248 }
1844 #[doc = "Input capture 1 filter"] 2249 #[doc = "Capture/Compare 1 output Polarity"]
1845 pub fn set_icf(&mut self, n: usize, val: super::vals::Icf) { 2250 pub fn ccp(&self, n: usize) -> bool {
1846 assert!(n < 2usize); 2251 assert!(n < 4usize);
1847 let offs = 4usize + n * 8usize; 2252 let offs = 1usize + n * 4usize;
1848 self.0 = (self.0 & !(0x0f << offs)) | (((val.0 as u32) & 0x0f) << offs); 2253 let val = (self.0 >> offs) & 0x01;
2254 val != 0
2255 }
2256 #[doc = "Capture/Compare 1 output Polarity"]
2257 pub fn set_ccp(&mut self, n: usize, val: bool) {
2258 assert!(n < 4usize);
2259 let offs = 1usize + n * 4usize;
2260 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2261 }
2262 #[doc = "Capture/Compare 1 output Polarity"]
2263 pub fn ccnp(&self, n: usize) -> bool {
2264 assert!(n < 4usize);
2265 let offs = 3usize + n * 4usize;
2266 let val = (self.0 >> offs) & 0x01;
2267 val != 0
2268 }
2269 #[doc = "Capture/Compare 1 output Polarity"]
2270 pub fn set_ccnp(&mut self, n: usize, val: bool) {
2271 assert!(n < 4usize);
2272 let offs = 3usize + n * 4usize;
2273 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1849 } 2274 }
1850 } 2275 }
1851 impl Default for CcmrInput { 2276 impl Default for CcerGp {
1852 fn default() -> CcmrInput { 2277 fn default() -> CcerGp {
1853 CcmrInput(0) 2278 CcerGp(0)
2279 }
2280 }
2281 #[doc = "capture/compare register 1"]
2282 #[repr(transparent)]
2283 #[derive(Copy, Clone, Eq, PartialEq)]
2284 pub struct Ccr16(pub u32);
2285 impl Ccr16 {
2286 #[doc = "Capture/Compare 1 value"]
2287 pub const fn ccr(&self) -> u16 {
2288 let val = (self.0 >> 0usize) & 0xffff;
2289 val as u16
2290 }
2291 #[doc = "Capture/Compare 1 value"]
2292 pub fn set_ccr(&mut self, val: u16) {
2293 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
2294 }
2295 }
2296 impl Default for Ccr16 {
2297 fn default() -> Ccr16 {
2298 Ccr16(0)
1854 } 2299 }
1855 } 2300 }
1856 #[doc = "DMA/Interrupt enable register"] 2301 #[doc = "DMA/Interrupt enable register"]
1857 #[repr(transparent)] 2302 #[repr(transparent)]
1858 #[derive(Copy, Clone, Eq, PartialEq)] 2303 #[derive(Copy, Clone, Eq, PartialEq)]
1859 pub struct DierAdv(pub u32); 2304 pub struct DierGp(pub u32);
1860 impl DierAdv { 2305 impl DierGp {
1861 #[doc = "Update interrupt enable"] 2306 #[doc = "Update interrupt enable"]
1862 pub const fn uie(&self) -> bool { 2307 pub const fn uie(&self) -> bool {
1863 let val = (self.0 >> 0usize) & 0x01; 2308 let val = (self.0 >> 0usize) & 0x01;
@@ -1880,15 +2325,6 @@ pub mod timer_v1 {
1880 let offs = 1usize + n * 1usize; 2325 let offs = 1usize + n * 1usize;
1881 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 2326 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1882 } 2327 }
1883 #[doc = "COM interrupt enable"]
1884 pub const fn comie(&self) -> bool {
1885 let val = (self.0 >> 5usize) & 0x01;
1886 val != 0
1887 }
1888 #[doc = "COM interrupt enable"]
1889 pub fn set_comie(&mut self, val: bool) {
1890 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
1891 }
1892 #[doc = "Trigger interrupt enable"] 2328 #[doc = "Trigger interrupt enable"]
1893 pub const fn tie(&self) -> bool { 2329 pub const fn tie(&self) -> bool {
1894 let val = (self.0 >> 6usize) & 0x01; 2330 let val = (self.0 >> 6usize) & 0x01;
@@ -1898,15 +2334,6 @@ pub mod timer_v1 {
1898 pub fn set_tie(&mut self, val: bool) { 2334 pub fn set_tie(&mut self, val: bool) {
1899 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 2335 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
1900 } 2336 }
1901 #[doc = "Break interrupt enable"]
1902 pub const fn bie(&self) -> bool {
1903 let val = (self.0 >> 7usize) & 0x01;
1904 val != 0
1905 }
1906 #[doc = "Break interrupt enable"]
1907 pub fn set_bie(&mut self, val: bool) {
1908 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
1909 }
1910 #[doc = "Update DMA request enable"] 2337 #[doc = "Update DMA request enable"]
1911 pub const fn ude(&self) -> bool { 2338 pub const fn ude(&self) -> bool {
1912 let val = (self.0 >> 8usize) & 0x01; 2339 let val = (self.0 >> 8usize) & 0x01;
@@ -1929,15 +2356,6 @@ pub mod timer_v1 {
1929 let offs = 9usize + n * 1usize; 2356 let offs = 9usize + n * 1usize;
1930 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 2357 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
1931 } 2358 }
1932 #[doc = "COM DMA request enable"]
1933 pub const fn comde(&self) -> bool {
1934 let val = (self.0 >> 13usize) & 0x01;
1935 val != 0
1936 }
1937 #[doc = "COM DMA request enable"]
1938 pub fn set_comde(&mut self, val: bool) {
1939 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
1940 }
1941 #[doc = "Trigger DMA request enable"] 2359 #[doc = "Trigger DMA request enable"]
1942 pub const fn tde(&self) -> bool { 2360 pub const fn tde(&self) -> bool {
1943 let val = (self.0 >> 14usize) & 0x01; 2361 let val = (self.0 >> 14usize) & 0x01;
@@ -1948,9 +2366,9 @@ pub mod timer_v1 {
1948 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); 2366 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
1949 } 2367 }
1950 } 2368 }
1951 impl Default for DierAdv { 2369 impl Default for DierGp {
1952 fn default() -> DierAdv { 2370 fn default() -> DierGp {
1953 DierAdv(0) 2371 DierGp(0)
1954 } 2372 }
1955 } 2373 }
1956 #[doc = "prescaler"] 2374 #[doc = "prescaler"]
@@ -1973,66 +2391,6 @@ pub mod timer_v1 {
1973 Psc(0) 2391 Psc(0)
1974 } 2392 }
1975 } 2393 }
1976 #[doc = "event generation register"]
1977 #[repr(transparent)]
1978 #[derive(Copy, Clone, Eq, PartialEq)]
1979 pub struct EgrAdv(pub u32);
1980 impl EgrAdv {
1981 #[doc = "Update generation"]
1982 pub const fn ug(&self) -> bool {
1983 let val = (self.0 >> 0usize) & 0x01;
1984 val != 0
1985 }
1986 #[doc = "Update generation"]
1987 pub fn set_ug(&mut self, val: bool) {
1988 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
1989 }
1990 #[doc = "Capture/compare 1 generation"]
1991 pub fn ccg(&self, n: usize) -> bool {
1992 assert!(n < 4usize);
1993 let offs = 1usize + n * 1usize;
1994 let val = (self.0 >> offs) & 0x01;
1995 val != 0
1996 }
1997 #[doc = "Capture/compare 1 generation"]
1998 pub fn set_ccg(&mut self, n: usize, val: bool) {
1999 assert!(n < 4usize);
2000 let offs = 1usize + n * 1usize;
2001 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2002 }
2003 #[doc = "Capture/Compare control update generation"]
2004 pub const fn comg(&self) -> bool {
2005 let val = (self.0 >> 5usize) & 0x01;
2006 val != 0
2007 }
2008 #[doc = "Capture/Compare control update generation"]
2009 pub fn set_comg(&mut self, val: bool) {
2010 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
2011 }
2012 #[doc = "Trigger generation"]
2013 pub const fn tg(&self) -> bool {
2014 let val = (self.0 >> 6usize) & 0x01;
2015 val != 0
2016 }
2017 #[doc = "Trigger generation"]
2018 pub fn set_tg(&mut self, val: bool) {
2019 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
2020 }
2021 #[doc = "Break generation"]
2022 pub const fn bg(&self) -> bool {
2023 let val = (self.0 >> 7usize) & 0x01;
2024 val != 0
2025 }
2026 #[doc = "Break generation"]
2027 pub fn set_bg(&mut self, val: bool) {
2028 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
2029 }
2030 }
2031 impl Default for EgrAdv {
2032 fn default() -> EgrAdv {
2033 EgrAdv(0)
2034 }
2035 }
2036 #[doc = "capture/compare mode register 2 (output mode)"] 2394 #[doc = "capture/compare mode register 2 (output mode)"]
2037 #[repr(transparent)] 2395 #[repr(transparent)]
2038 #[derive(Copy, Clone, Eq, PartialEq)] 2396 #[derive(Copy, Clone, Eq, PartialEq)]
@@ -2109,205 +2467,243 @@ pub mod timer_v1 {
2109 CcmrOutput(0) 2467 CcmrOutput(0)
2110 } 2468 }
2111 } 2469 }
2112 #[doc = "auto-reload register"] 2470 #[doc = "DMA address for full transfer"]
2113 #[repr(transparent)] 2471 #[repr(transparent)]
2114 #[derive(Copy, Clone, Eq, PartialEq)] 2472 #[derive(Copy, Clone, Eq, PartialEq)]
2115 pub struct Arr32(pub u32); 2473 pub struct Dmar(pub u32);
2116 impl Arr32 { 2474 impl Dmar {
2117 #[doc = "Auto-reload value"] 2475 #[doc = "DMA register for burst accesses"]
2118 pub const fn arr(&self) -> u32 { 2476 pub const fn dmab(&self) -> u16 {
2119 let val = (self.0 >> 0usize) & 0xffff_ffff; 2477 let val = (self.0 >> 0usize) & 0xffff;
2120 val as u32 2478 val as u16
2121 } 2479 }
2122 #[doc = "Auto-reload value"] 2480 #[doc = "DMA register for burst accesses"]
2123 pub fn set_arr(&mut self, val: u32) { 2481 pub fn set_dmab(&mut self, val: u16) {
2124 self.0 = 2482 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
2125 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
2126 } 2483 }
2127 } 2484 }
2128 impl Default for Arr32 { 2485 impl Default for Dmar {
2129 fn default() -> Arr32 { 2486 fn default() -> Dmar {
2130 Arr32(0) 2487 Dmar(0)
2131 } 2488 }
2132 } 2489 }
2133 #[doc = "control register 1"] 2490 #[doc = "capture/compare enable register"]
2134 #[repr(transparent)] 2491 #[repr(transparent)]
2135 #[derive(Copy, Clone, Eq, PartialEq)] 2492 #[derive(Copy, Clone, Eq, PartialEq)]
2136 pub struct Cr1Basic(pub u32); 2493 pub struct CcerAdv(pub u32);
2137 impl Cr1Basic { 2494 impl CcerAdv {
2138 #[doc = "Counter enable"] 2495 #[doc = "Capture/Compare 1 output enable"]
2139 pub const fn cen(&self) -> bool { 2496 pub fn cce(&self, n: usize) -> bool {
2140 let val = (self.0 >> 0usize) & 0x01; 2497 assert!(n < 4usize);
2498 let offs = 0usize + n * 4usize;
2499 let val = (self.0 >> offs) & 0x01;
2141 val != 0 2500 val != 0
2142 } 2501 }
2143 #[doc = "Counter enable"] 2502 #[doc = "Capture/Compare 1 output enable"]
2144 pub fn set_cen(&mut self, val: bool) { 2503 pub fn set_cce(&mut self, n: usize, val: bool) {
2145 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 2504 assert!(n < 4usize);
2505 let offs = 0usize + n * 4usize;
2506 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2146 } 2507 }
2147 #[doc = "Update disable"] 2508 #[doc = "Capture/Compare 1 output Polarity"]
2148 pub const fn udis(&self) -> bool { 2509 pub fn ccp(&self, n: usize) -> bool {
2149 let val = (self.0 >> 1usize) & 0x01; 2510 assert!(n < 4usize);
2511 let offs = 1usize + n * 4usize;
2512 let val = (self.0 >> offs) & 0x01;
2150 val != 0 2513 val != 0
2151 } 2514 }
2152 #[doc = "Update disable"] 2515 #[doc = "Capture/Compare 1 output Polarity"]
2153 pub fn set_udis(&mut self, val: bool) { 2516 pub fn set_ccp(&mut self, n: usize, val: bool) {
2154 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 2517 assert!(n < 4usize);
2155 } 2518 let offs = 1usize + n * 4usize;
2156 #[doc = "Update request source"] 2519 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2157 pub const fn urs(&self) -> super::vals::Urs {
2158 let val = (self.0 >> 2usize) & 0x01;
2159 super::vals::Urs(val as u8)
2160 }
2161 #[doc = "Update request source"]
2162 pub fn set_urs(&mut self, val: super::vals::Urs) {
2163 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
2164 } 2520 }
2165 #[doc = "One-pulse mode"] 2521 #[doc = "Capture/Compare 1 complementary output enable"]
2166 pub const fn opm(&self) -> super::vals::Opm { 2522 pub fn ccne(&self, n: usize) -> bool {
2167 let val = (self.0 >> 3usize) & 0x01; 2523 assert!(n < 4usize);
2168 super::vals::Opm(val as u8) 2524 let offs = 2usize + n * 4usize;
2525 let val = (self.0 >> offs) & 0x01;
2526 val != 0
2169 } 2527 }
2170 #[doc = "One-pulse mode"] 2528 #[doc = "Capture/Compare 1 complementary output enable"]
2171 pub fn set_opm(&mut self, val: super::vals::Opm) { 2529 pub fn set_ccne(&mut self, n: usize, val: bool) {
2172 self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); 2530 assert!(n < 4usize);
2531 let offs = 2usize + n * 4usize;
2532 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2173 } 2533 }
2174 #[doc = "Auto-reload preload enable"] 2534 #[doc = "Capture/Compare 1 output Polarity"]
2175 pub const fn arpe(&self) -> super::vals::Arpe { 2535 pub fn ccnp(&self, n: usize) -> bool {
2176 let val = (self.0 >> 7usize) & 0x01; 2536 assert!(n < 4usize);
2177 super::vals::Arpe(val as u8) 2537 let offs = 3usize + n * 4usize;
2538 let val = (self.0 >> offs) & 0x01;
2539 val != 0
2178 } 2540 }
2179 #[doc = "Auto-reload preload enable"] 2541 #[doc = "Capture/Compare 1 output Polarity"]
2180 pub fn set_arpe(&mut self, val: super::vals::Arpe) { 2542 pub fn set_ccnp(&mut self, n: usize, val: bool) {
2181 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); 2543 assert!(n < 4usize);
2544 let offs = 3usize + n * 4usize;
2545 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2182 } 2546 }
2183 } 2547 }
2184 impl Default for Cr1Basic { 2548 impl Default for CcerAdv {
2185 fn default() -> Cr1Basic { 2549 fn default() -> CcerAdv {
2186 Cr1Basic(0) 2550 CcerAdv(0)
2187 } 2551 }
2188 } 2552 }
2189 #[doc = "DMA control register"] 2553 #[doc = "break and dead-time register"]
2190 #[repr(transparent)] 2554 #[repr(transparent)]
2191 #[derive(Copy, Clone, Eq, PartialEq)] 2555 #[derive(Copy, Clone, Eq, PartialEq)]
2192 pub struct Dcr(pub u32); 2556 pub struct Bdtr(pub u32);
2193 impl Dcr { 2557 impl Bdtr {
2194 #[doc = "DMA base address"] 2558 #[doc = "Dead-time generator setup"]
2195 pub const fn dba(&self) -> u8 { 2559 pub const fn dtg(&self) -> u8 {
2196 let val = (self.0 >> 0usize) & 0x1f; 2560 let val = (self.0 >> 0usize) & 0xff;
2197 val as u8 2561 val as u8
2198 } 2562 }
2199 #[doc = "DMA base address"] 2563 #[doc = "Dead-time generator setup"]
2200 pub fn set_dba(&mut self, val: u8) { 2564 pub fn set_dtg(&mut self, val: u8) {
2201 self.0 = (self.0 & !(0x1f << 0usize)) | (((val as u32) & 0x1f) << 0usize); 2565 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
2202 } 2566 }
2203 #[doc = "DMA burst length"] 2567 #[doc = "Lock configuration"]
2204 pub const fn dbl(&self) -> u8 { 2568 pub const fn lock(&self) -> u8 {
2205 let val = (self.0 >> 8usize) & 0x1f; 2569 let val = (self.0 >> 8usize) & 0x03;
2206 val as u8 2570 val as u8
2207 } 2571 }
2208 #[doc = "DMA burst length"] 2572 #[doc = "Lock configuration"]
2209 pub fn set_dbl(&mut self, val: u8) { 2573 pub fn set_lock(&mut self, val: u8) {
2210 self.0 = (self.0 & !(0x1f << 8usize)) | (((val as u32) & 0x1f) << 8usize); 2574 self.0 = (self.0 & !(0x03 << 8usize)) | (((val as u32) & 0x03) << 8usize);
2211 }
2212 }
2213 impl Default for Dcr {
2214 fn default() -> Dcr {
2215 Dcr(0)
2216 }
2217 }
2218 #[doc = "slave mode control register"]
2219 #[repr(transparent)]
2220 #[derive(Copy, Clone, Eq, PartialEq)]
2221 pub struct Smcr(pub u32);
2222 impl Smcr {
2223 #[doc = "Slave mode selection"]
2224 pub const fn sms(&self) -> super::vals::Sms {
2225 let val = (self.0 >> 0usize) & 0x07;
2226 super::vals::Sms(val as u8)
2227 }
2228 #[doc = "Slave mode selection"]
2229 pub fn set_sms(&mut self, val: super::vals::Sms) {
2230 self.0 = (self.0 & !(0x07 << 0usize)) | (((val.0 as u32) & 0x07) << 0usize);
2231 } 2575 }
2232 #[doc = "Trigger selection"] 2576 #[doc = "Off-state selection for Idle mode"]
2233 pub const fn ts(&self) -> super::vals::Ts { 2577 pub const fn ossi(&self) -> super::vals::Ossi {
2234 let val = (self.0 >> 4usize) & 0x07; 2578 let val = (self.0 >> 10usize) & 0x01;
2235 super::vals::Ts(val as u8) 2579 super::vals::Ossi(val as u8)
2236 } 2580 }
2237 #[doc = "Trigger selection"] 2581 #[doc = "Off-state selection for Idle mode"]
2238 pub fn set_ts(&mut self, val: super::vals::Ts) { 2582 pub fn set_ossi(&mut self, val: super::vals::Ossi) {
2239 self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize); 2583 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize);
2240 } 2584 }
2241 #[doc = "Master/Slave mode"] 2585 #[doc = "Off-state selection for Run mode"]
2242 pub const fn msm(&self) -> super::vals::Msm { 2586 pub const fn ossr(&self) -> super::vals::Ossr {
2243 let val = (self.0 >> 7usize) & 0x01; 2587 let val = (self.0 >> 11usize) & 0x01;
2244 super::vals::Msm(val as u8) 2588 super::vals::Ossr(val as u8)
2245 } 2589 }
2246 #[doc = "Master/Slave mode"] 2590 #[doc = "Off-state selection for Run mode"]
2247 pub fn set_msm(&mut self, val: super::vals::Msm) { 2591 pub fn set_ossr(&mut self, val: super::vals::Ossr) {
2248 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); 2592 self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize);
2249 } 2593 }
2250 #[doc = "External trigger filter"] 2594 #[doc = "Break enable"]
2251 pub const fn etf(&self) -> super::vals::Etf { 2595 pub const fn bke(&self) -> bool {
2252 let val = (self.0 >> 8usize) & 0x0f; 2596 let val = (self.0 >> 12usize) & 0x01;
2253 super::vals::Etf(val as u8) 2597 val != 0
2254 } 2598 }
2255 #[doc = "External trigger filter"] 2599 #[doc = "Break enable"]
2256 pub fn set_etf(&mut self, val: super::vals::Etf) { 2600 pub fn set_bke(&mut self, val: bool) {
2257 self.0 = (self.0 & !(0x0f << 8usize)) | (((val.0 as u32) & 0x0f) << 8usize); 2601 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize);
2258 } 2602 }
2259 #[doc = "External trigger prescaler"] 2603 #[doc = "Break polarity"]
2260 pub const fn etps(&self) -> super::vals::Etps { 2604 pub const fn bkp(&self) -> bool {
2261 let val = (self.0 >> 12usize) & 0x03; 2605 let val = (self.0 >> 13usize) & 0x01;
2262 super::vals::Etps(val as u8) 2606 val != 0
2263 } 2607 }
2264 #[doc = "External trigger prescaler"] 2608 #[doc = "Break polarity"]
2265 pub fn set_etps(&mut self, val: super::vals::Etps) { 2609 pub fn set_bkp(&mut self, val: bool) {
2266 self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize); 2610 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
2267 } 2611 }
2268 #[doc = "External clock enable"] 2612 #[doc = "Automatic output enable"]
2269 pub const fn ece(&self) -> super::vals::Ece { 2613 pub const fn aoe(&self) -> bool {
2270 let val = (self.0 >> 14usize) & 0x01; 2614 let val = (self.0 >> 14usize) & 0x01;
2271 super::vals::Ece(val as u8) 2615 val != 0
2272 } 2616 }
2273 #[doc = "External clock enable"] 2617 #[doc = "Automatic output enable"]
2274 pub fn set_ece(&mut self, val: super::vals::Ece) { 2618 pub fn set_aoe(&mut self, val: bool) {
2275 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize); 2619 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
2276 } 2620 }
2277 #[doc = "External trigger polarity"] 2621 #[doc = "Main output enable"]
2278 pub const fn etp(&self) -> super::vals::Etp { 2622 pub const fn moe(&self) -> bool {
2279 let val = (self.0 >> 15usize) & 0x01; 2623 let val = (self.0 >> 15usize) & 0x01;
2280 super::vals::Etp(val as u8) 2624 val != 0
2281 } 2625 }
2282 #[doc = "External trigger polarity"] 2626 #[doc = "Main output enable"]
2283 pub fn set_etp(&mut self, val: super::vals::Etp) { 2627 pub fn set_moe(&mut self, val: bool) {
2284 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize); 2628 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize);
2285 } 2629 }
2286 } 2630 }
2287 impl Default for Smcr { 2631 impl Default for Bdtr {
2288 fn default() -> Smcr { 2632 fn default() -> Bdtr {
2289 Smcr(0) 2633 Bdtr(0)
2290 } 2634 }
2291 } 2635 }
2292 #[doc = "counter"] 2636 #[doc = "status register"]
2293 #[repr(transparent)] 2637 #[repr(transparent)]
2294 #[derive(Copy, Clone, Eq, PartialEq)] 2638 #[derive(Copy, Clone, Eq, PartialEq)]
2295 pub struct Cnt32(pub u32); 2639 pub struct SrAdv(pub u32);
2296 impl Cnt32 { 2640 impl SrAdv {
2297 #[doc = "counter value"] 2641 #[doc = "Update interrupt flag"]
2298 pub const fn cnt(&self) -> u32 { 2642 pub const fn uif(&self) -> bool {
2299 let val = (self.0 >> 0usize) & 0xffff_ffff; 2643 let val = (self.0 >> 0usize) & 0x01;
2300 val as u32 2644 val != 0
2301 } 2645 }
2302 #[doc = "counter value"] 2646 #[doc = "Update interrupt flag"]
2303 pub fn set_cnt(&mut self, val: u32) { 2647 pub fn set_uif(&mut self, val: bool) {
2304 self.0 = 2648 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
2305 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); 2649 }
2650 #[doc = "Capture/compare 1 interrupt flag"]
2651 pub fn ccif(&self, n: usize) -> bool {
2652 assert!(n < 4usize);
2653 let offs = 1usize + n * 1usize;
2654 let val = (self.0 >> offs) & 0x01;
2655 val != 0
2656 }
2657 #[doc = "Capture/compare 1 interrupt flag"]
2658 pub fn set_ccif(&mut self, n: usize, val: bool) {
2659 assert!(n < 4usize);
2660 let offs = 1usize + n * 1usize;
2661 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2662 }
2663 #[doc = "COM interrupt flag"]
2664 pub const fn comif(&self) -> bool {
2665 let val = (self.0 >> 5usize) & 0x01;
2666 val != 0
2667 }
2668 #[doc = "COM interrupt flag"]
2669 pub fn set_comif(&mut self, val: bool) {
2670 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
2671 }
2672 #[doc = "Trigger interrupt flag"]
2673 pub const fn tif(&self) -> bool {
2674 let val = (self.0 >> 6usize) & 0x01;
2675 val != 0
2676 }
2677 #[doc = "Trigger interrupt flag"]
2678 pub fn set_tif(&mut self, val: bool) {
2679 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
2680 }
2681 #[doc = "Break interrupt flag"]
2682 pub const fn bif(&self) -> bool {
2683 let val = (self.0 >> 7usize) & 0x01;
2684 val != 0
2685 }
2686 #[doc = "Break interrupt flag"]
2687 pub fn set_bif(&mut self, val: bool) {
2688 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
2689 }
2690 #[doc = "Capture/Compare 1 overcapture flag"]
2691 pub fn ccof(&self, n: usize) -> bool {
2692 assert!(n < 4usize);
2693 let offs = 9usize + n * 1usize;
2694 let val = (self.0 >> offs) & 0x01;
2695 val != 0
2696 }
2697 #[doc = "Capture/Compare 1 overcapture flag"]
2698 pub fn set_ccof(&mut self, n: usize, val: bool) {
2699 assert!(n < 4usize);
2700 let offs = 9usize + n * 1usize;
2701 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2306 } 2702 }
2307 } 2703 }
2308 impl Default for Cnt32 { 2704 impl Default for SrAdv {
2309 fn default() -> Cnt32 { 2705 fn default() -> SrAdv {
2310 Cnt32(0) 2706 SrAdv(0)
2311 } 2707 }
2312 } 2708 }
2313 #[doc = "control register 1"] 2709 #[doc = "control register 1"]
@@ -2393,44 +2789,33 @@ pub mod timer_v1 {
2393 Cr1Gp(0) 2789 Cr1Gp(0)
2394 } 2790 }
2395 } 2791 }
2396 #[doc = "DMA address for full transfer"] 2792 #[doc = "DMA control register"]
2397 #[repr(transparent)] 2793 #[repr(transparent)]
2398 #[derive(Copy, Clone, Eq, PartialEq)] 2794 #[derive(Copy, Clone, Eq, PartialEq)]
2399 pub struct Dmar(pub u32); 2795 pub struct Dcr(pub u32);
2400 impl Dmar { 2796 impl Dcr {
2401 #[doc = "DMA register for burst accesses"] 2797 #[doc = "DMA base address"]
2402 pub const fn dmab(&self) -> u16 { 2798 pub const fn dba(&self) -> u8 {
2403 let val = (self.0 >> 0usize) & 0xffff; 2799 let val = (self.0 >> 0usize) & 0x1f;
2404 val as u16 2800 val as u8
2405 }
2406 #[doc = "DMA register for burst accesses"]
2407 pub fn set_dmab(&mut self, val: u16) {
2408 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
2409 } 2801 }
2410 } 2802 #[doc = "DMA base address"]
2411 impl Default for Dmar { 2803 pub fn set_dba(&mut self, val: u8) {
2412 fn default() -> Dmar { 2804 self.0 = (self.0 & !(0x1f << 0usize)) | (((val as u32) & 0x1f) << 0usize);
2413 Dmar(0)
2414 } 2805 }
2415 } 2806 #[doc = "DMA burst length"]
2416 #[doc = "counter"] 2807 pub const fn dbl(&self) -> u8 {
2417 #[repr(transparent)] 2808 let val = (self.0 >> 8usize) & 0x1f;
2418 #[derive(Copy, Clone, Eq, PartialEq)] 2809 val as u8
2419 pub struct Cnt16(pub u32);
2420 impl Cnt16 {
2421 #[doc = "counter value"]
2422 pub const fn cnt(&self) -> u16 {
2423 let val = (self.0 >> 0usize) & 0xffff;
2424 val as u16
2425 } 2810 }
2426 #[doc = "counter value"] 2811 #[doc = "DMA burst length"]
2427 pub fn set_cnt(&mut self, val: u16) { 2812 pub fn set_dbl(&mut self, val: u8) {
2428 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); 2813 self.0 = (self.0 & !(0x1f << 8usize)) | (((val as u32) & 0x1f) << 8usize);
2429 } 2814 }
2430 } 2815 }
2431 impl Default for Cnt16 { 2816 impl Default for Dcr {
2432 fn default() -> Cnt16 { 2817 fn default() -> Dcr {
2433 Cnt16(0) 2818 Dcr(0)
2434 } 2819 }
2435 } 2820 }
2436 #[doc = "event generation register"] 2821 #[doc = "event generation register"]
@@ -2453,97 +2838,46 @@ pub mod timer_v1 {
2453 EgrBasic(0) 2838 EgrBasic(0)
2454 } 2839 }
2455 } 2840 }
2456 #[doc = "status register"] 2841 #[doc = "counter"]
2457 #[repr(transparent)] 2842 #[repr(transparent)]
2458 #[derive(Copy, Clone, Eq, PartialEq)] 2843 #[derive(Copy, Clone, Eq, PartialEq)]
2459 pub struct SrGp(pub u32); 2844 pub struct Cnt32(pub u32);
2460 impl SrGp { 2845 impl Cnt32 {
2461 #[doc = "Update interrupt flag"] 2846 #[doc = "counter value"]
2462 pub const fn uif(&self) -> bool { 2847 pub const fn cnt(&self) -> u32 {
2463 let val = (self.0 >> 0usize) & 0x01; 2848 let val = (self.0 >> 0usize) & 0xffff_ffff;
2464 val != 0 2849 val as u32
2465 }
2466 #[doc = "Update interrupt flag"]
2467 pub fn set_uif(&mut self, val: bool) {
2468 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
2469 }
2470 #[doc = "Capture/compare 1 interrupt flag"]
2471 pub fn ccif(&self, n: usize) -> bool {
2472 assert!(n < 4usize);
2473 let offs = 1usize + n * 1usize;
2474 let val = (self.0 >> offs) & 0x01;
2475 val != 0
2476 }
2477 #[doc = "Capture/compare 1 interrupt flag"]
2478 pub fn set_ccif(&mut self, n: usize, val: bool) {
2479 assert!(n < 4usize);
2480 let offs = 1usize + n * 1usize;
2481 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2482 }
2483 #[doc = "COM interrupt flag"]
2484 pub const fn comif(&self) -> bool {
2485 let val = (self.0 >> 5usize) & 0x01;
2486 val != 0
2487 }
2488 #[doc = "COM interrupt flag"]
2489 pub fn set_comif(&mut self, val: bool) {
2490 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
2491 }
2492 #[doc = "Trigger interrupt flag"]
2493 pub const fn tif(&self) -> bool {
2494 let val = (self.0 >> 6usize) & 0x01;
2495 val != 0
2496 }
2497 #[doc = "Trigger interrupt flag"]
2498 pub fn set_tif(&mut self, val: bool) {
2499 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
2500 }
2501 #[doc = "Break interrupt flag"]
2502 pub const fn bif(&self) -> bool {
2503 let val = (self.0 >> 7usize) & 0x01;
2504 val != 0
2505 }
2506 #[doc = "Break interrupt flag"]
2507 pub fn set_bif(&mut self, val: bool) {
2508 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
2509 }
2510 #[doc = "Capture/Compare 1 overcapture flag"]
2511 pub fn ccof(&self, n: usize) -> bool {
2512 assert!(n < 4usize);
2513 let offs = 9usize + n * 1usize;
2514 let val = (self.0 >> offs) & 0x01;
2515 val != 0
2516 } 2850 }
2517 #[doc = "Capture/Compare 1 overcapture flag"] 2851 #[doc = "counter value"]
2518 pub fn set_ccof(&mut self, n: usize, val: bool) { 2852 pub fn set_cnt(&mut self, val: u32) {
2519 assert!(n < 4usize); 2853 self.0 =
2520 let offs = 9usize + n * 1usize; 2854 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
2521 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2522 } 2855 }
2523 } 2856 }
2524 impl Default for SrGp { 2857 impl Default for Cnt32 {
2525 fn default() -> SrGp { 2858 fn default() -> Cnt32 {
2526 SrGp(0) 2859 Cnt32(0)
2527 } 2860 }
2528 } 2861 }
2529 #[doc = "control register 2"] 2862 #[doc = "auto-reload register"]
2530 #[repr(transparent)] 2863 #[repr(transparent)]
2531 #[derive(Copy, Clone, Eq, PartialEq)] 2864 #[derive(Copy, Clone, Eq, PartialEq)]
2532 pub struct Cr2Basic(pub u32); 2865 pub struct Arr32(pub u32);
2533 impl Cr2Basic { 2866 impl Arr32 {
2534 #[doc = "Master mode selection"] 2867 #[doc = "Auto-reload value"]
2535 pub const fn mms(&self) -> super::vals::Mms { 2868 pub const fn arr(&self) -> u32 {
2536 let val = (self.0 >> 4usize) & 0x07; 2869 let val = (self.0 >> 0usize) & 0xffff_ffff;
2537 super::vals::Mms(val as u8) 2870 val as u32
2538 } 2871 }
2539 #[doc = "Master mode selection"] 2872 #[doc = "Auto-reload value"]
2540 pub fn set_mms(&mut self, val: super::vals::Mms) { 2873 pub fn set_arr(&mut self, val: u32) {
2541 self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize); 2874 self.0 =
2875 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
2542 } 2876 }
2543 } 2877 }
2544 impl Default for Cr2Basic { 2878 impl Default for Arr32 {
2545 fn default() -> Cr2Basic { 2879 fn default() -> Arr32 {
2546 Cr2Basic(0) 2880 Arr32(0)
2547 } 2881 }
2548 } 2882 }
2549 #[doc = "control register 2"] 2883 #[doc = "control register 2"]
@@ -2642,11 +2976,137 @@ pub mod timer_v1 {
2642 Cr2Adv(0) 2976 Cr2Adv(0)
2643 } 2977 }
2644 } 2978 }
2979 #[doc = "control register 1"]
2980 #[repr(transparent)]
2981 #[derive(Copy, Clone, Eq, PartialEq)]
2982 pub struct Cr1Basic(pub u32);
2983 impl Cr1Basic {
2984 #[doc = "Counter enable"]
2985 pub const fn cen(&self) -> bool {
2986 let val = (self.0 >> 0usize) & 0x01;
2987 val != 0
2988 }
2989 #[doc = "Counter enable"]
2990 pub fn set_cen(&mut self, val: bool) {
2991 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
2992 }
2993 #[doc = "Update disable"]
2994 pub const fn udis(&self) -> bool {
2995 let val = (self.0 >> 1usize) & 0x01;
2996 val != 0
2997 }
2998 #[doc = "Update disable"]
2999 pub fn set_udis(&mut self, val: bool) {
3000 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
3001 }
3002 #[doc = "Update request source"]
3003 pub const fn urs(&self) -> super::vals::Urs {
3004 let val = (self.0 >> 2usize) & 0x01;
3005 super::vals::Urs(val as u8)
3006 }
3007 #[doc = "Update request source"]
3008 pub fn set_urs(&mut self, val: super::vals::Urs) {
3009 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
3010 }
3011 #[doc = "One-pulse mode"]
3012 pub const fn opm(&self) -> super::vals::Opm {
3013 let val = (self.0 >> 3usize) & 0x01;
3014 super::vals::Opm(val as u8)
3015 }
3016 #[doc = "One-pulse mode"]
3017 pub fn set_opm(&mut self, val: super::vals::Opm) {
3018 self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize);
3019 }
3020 #[doc = "Auto-reload preload enable"]
3021 pub const fn arpe(&self) -> super::vals::Arpe {
3022 let val = (self.0 >> 7usize) & 0x01;
3023 super::vals::Arpe(val as u8)
3024 }
3025 #[doc = "Auto-reload preload enable"]
3026 pub fn set_arpe(&mut self, val: super::vals::Arpe) {
3027 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
3028 }
3029 }
3030 impl Default for Cr1Basic {
3031 fn default() -> Cr1Basic {
3032 Cr1Basic(0)
3033 }
3034 }
3035 #[doc = "capture/compare mode register 1 (input mode)"]
3036 #[repr(transparent)]
3037 #[derive(Copy, Clone, Eq, PartialEq)]
3038 pub struct CcmrInput(pub u32);
3039 impl CcmrInput {
3040 #[doc = "Capture/Compare 1 selection"]
3041 pub fn ccs(&self, n: usize) -> super::vals::CcmrInputCcs {
3042 assert!(n < 2usize);
3043 let offs = 0usize + n * 8usize;
3044 let val = (self.0 >> offs) & 0x03;
3045 super::vals::CcmrInputCcs(val as u8)
3046 }
3047 #[doc = "Capture/Compare 1 selection"]
3048 pub fn set_ccs(&mut self, n: usize, val: super::vals::CcmrInputCcs) {
3049 assert!(n < 2usize);
3050 let offs = 0usize + n * 8usize;
3051 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
3052 }
3053 #[doc = "Input capture 1 prescaler"]
3054 pub fn icpsc(&self, n: usize) -> u8 {
3055 assert!(n < 2usize);
3056 let offs = 2usize + n * 8usize;
3057 let val = (self.0 >> offs) & 0x03;
3058 val as u8
3059 }
3060 #[doc = "Input capture 1 prescaler"]
3061 pub fn set_icpsc(&mut self, n: usize, val: u8) {
3062 assert!(n < 2usize);
3063 let offs = 2usize + n * 8usize;
3064 self.0 = (self.0 & !(0x03 << offs)) | (((val as u32) & 0x03) << offs);
3065 }
3066 #[doc = "Input capture 1 filter"]
3067 pub fn icf(&self, n: usize) -> super::vals::Icf {
3068 assert!(n < 2usize);
3069 let offs = 4usize + n * 8usize;
3070 let val = (self.0 >> offs) & 0x0f;
3071 super::vals::Icf(val as u8)
3072 }
3073 #[doc = "Input capture 1 filter"]
3074 pub fn set_icf(&mut self, n: usize, val: super::vals::Icf) {
3075 assert!(n < 2usize);
3076 let offs = 4usize + n * 8usize;
3077 self.0 = (self.0 & !(0x0f << offs)) | (((val.0 as u32) & 0x0f) << offs);
3078 }
3079 }
3080 impl Default for CcmrInput {
3081 fn default() -> CcmrInput {
3082 CcmrInput(0)
3083 }
3084 }
3085 #[doc = "repetition counter register"]
3086 #[repr(transparent)]
3087 #[derive(Copy, Clone, Eq, PartialEq)]
3088 pub struct Rcr(pub u32);
3089 impl Rcr {
3090 #[doc = "Repetition counter value"]
3091 pub const fn rep(&self) -> u8 {
3092 let val = (self.0 >> 0usize) & 0xff;
3093 val as u8
3094 }
3095 #[doc = "Repetition counter value"]
3096 pub fn set_rep(&mut self, val: u8) {
3097 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
3098 }
3099 }
3100 impl Default for Rcr {
3101 fn default() -> Rcr {
3102 Rcr(0)
3103 }
3104 }
2645 #[doc = "DMA/Interrupt enable register"] 3105 #[doc = "DMA/Interrupt enable register"]
2646 #[repr(transparent)] 3106 #[repr(transparent)]
2647 #[derive(Copy, Clone, Eq, PartialEq)] 3107 #[derive(Copy, Clone, Eq, PartialEq)]
2648 pub struct DierGp(pub u32); 3108 pub struct DierAdv(pub u32);
2649 impl DierGp { 3109 impl DierAdv {
2650 #[doc = "Update interrupt enable"] 3110 #[doc = "Update interrupt enable"]
2651 pub const fn uie(&self) -> bool { 3111 pub const fn uie(&self) -> bool {
2652 let val = (self.0 >> 0usize) & 0x01; 3112 let val = (self.0 >> 0usize) & 0x01;
@@ -2669,6 +3129,15 @@ pub mod timer_v1 {
2669 let offs = 1usize + n * 1usize; 3129 let offs = 1usize + n * 1usize;
2670 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 3130 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2671 } 3131 }
3132 #[doc = "COM interrupt enable"]
3133 pub const fn comie(&self) -> bool {
3134 let val = (self.0 >> 5usize) & 0x01;
3135 val != 0
3136 }
3137 #[doc = "COM interrupt enable"]
3138 pub fn set_comie(&mut self, val: bool) {
3139 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
3140 }
2672 #[doc = "Trigger interrupt enable"] 3141 #[doc = "Trigger interrupt enable"]
2673 pub const fn tie(&self) -> bool { 3142 pub const fn tie(&self) -> bool {
2674 let val = (self.0 >> 6usize) & 0x01; 3143 let val = (self.0 >> 6usize) & 0x01;
@@ -2678,6 +3147,15 @@ pub mod timer_v1 {
2678 pub fn set_tie(&mut self, val: bool) { 3147 pub fn set_tie(&mut self, val: bool) {
2679 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 3148 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
2680 } 3149 }
3150 #[doc = "Break interrupt enable"]
3151 pub const fn bie(&self) -> bool {
3152 let val = (self.0 >> 7usize) & 0x01;
3153 val != 0
3154 }
3155 #[doc = "Break interrupt enable"]
3156 pub fn set_bie(&mut self, val: bool) {
3157 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
3158 }
2681 #[doc = "Update DMA request enable"] 3159 #[doc = "Update DMA request enable"]
2682 pub const fn ude(&self) -> bool { 3160 pub const fn ude(&self) -> bool {
2683 let val = (self.0 >> 8usize) & 0x01; 3161 let val = (self.0 >> 8usize) & 0x01;
@@ -2700,6 +3178,15 @@ pub mod timer_v1 {
2700 let offs = 9usize + n * 1usize; 3178 let offs = 9usize + n * 1usize;
2701 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 3179 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2702 } 3180 }
3181 #[doc = "COM DMA request enable"]
3182 pub const fn comde(&self) -> bool {
3183 let val = (self.0 >> 13usize) & 0x01;
3184 val != 0
3185 }
3186 #[doc = "COM DMA request enable"]
3187 pub fn set_comde(&mut self, val: bool) {
3188 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
3189 }
2703 #[doc = "Trigger DMA request enable"] 3190 #[doc = "Trigger DMA request enable"]
2704 pub const fn tde(&self) -> bool { 3191 pub const fn tde(&self) -> bool {
2705 let val = (self.0 >> 14usize) & 0x01; 3192 let val = (self.0 >> 14usize) & 0x01;
@@ -2710,9 +3197,9 @@ pub mod timer_v1 {
2710 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); 3197 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
2711 } 3198 }
2712 } 3199 }
2713 impl Default for DierGp { 3200 impl Default for DierAdv {
2714 fn default() -> DierGp { 3201 fn default() -> DierAdv {
2715 DierGp(0) 3202 DierAdv(0)
2716 } 3203 }
2717 } 3204 }
2718 #[doc = "auto-reload register"] 3205 #[doc = "auto-reload register"]
@@ -2735,61 +3222,11 @@ pub mod timer_v1 {
2735 Arr16(0) 3222 Arr16(0)
2736 } 3223 }
2737 } 3224 }
2738 #[doc = "capture/compare enable register"]
2739 #[repr(transparent)]
2740 #[derive(Copy, Clone, Eq, PartialEq)]
2741 pub struct CcerGp(pub u32);
2742 impl CcerGp {
2743 #[doc = "Capture/Compare 1 output enable"]
2744 pub fn cce(&self, n: usize) -> bool {
2745 assert!(n < 4usize);
2746 let offs = 0usize + n * 4usize;
2747 let val = (self.0 >> offs) & 0x01;
2748 val != 0
2749 }
2750 #[doc = "Capture/Compare 1 output enable"]
2751 pub fn set_cce(&mut self, n: usize, val: bool) {
2752 assert!(n < 4usize);
2753 let offs = 0usize + n * 4usize;
2754 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2755 }
2756 #[doc = "Capture/Compare 1 output Polarity"]
2757 pub fn ccp(&self, n: usize) -> bool {
2758 assert!(n < 4usize);
2759 let offs = 1usize + n * 4usize;
2760 let val = (self.0 >> offs) & 0x01;
2761 val != 0
2762 }
2763 #[doc = "Capture/Compare 1 output Polarity"]
2764 pub fn set_ccp(&mut self, n: usize, val: bool) {
2765 assert!(n < 4usize);
2766 let offs = 1usize + n * 4usize;
2767 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2768 }
2769 #[doc = "Capture/Compare 1 output Polarity"]
2770 pub fn ccnp(&self, n: usize) -> bool {
2771 assert!(n < 4usize);
2772 let offs = 3usize + n * 4usize;
2773 let val = (self.0 >> offs) & 0x01;
2774 val != 0
2775 }
2776 #[doc = "Capture/Compare 1 output Polarity"]
2777 pub fn set_ccnp(&mut self, n: usize, val: bool) {
2778 assert!(n < 4usize);
2779 let offs = 3usize + n * 4usize;
2780 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2781 }
2782 }
2783 impl Default for CcerGp {
2784 fn default() -> CcerGp {
2785 CcerGp(0)
2786 }
2787 }
2788 #[doc = "status register"] 3225 #[doc = "status register"]
2789 #[repr(transparent)] 3226 #[repr(transparent)]
2790 #[derive(Copy, Clone, Eq, PartialEq)] 3227 #[derive(Copy, Clone, Eq, PartialEq)]
2791 pub struct SrAdv(pub u32); 3228 pub struct SrBasic(pub u32);
2792 impl SrAdv { 3229 impl SrBasic {
2793 #[doc = "Update interrupt flag"] 3230 #[doc = "Update interrupt flag"]
2794 pub const fn uif(&self) -> bool { 3231 pub const fn uif(&self) -> bool {
2795 let val = (self.0 >> 0usize) & 0x01; 3232 let val = (self.0 >> 0usize) & 0x01;
@@ -2799,305 +3236,192 @@ pub mod timer_v1 {
2799 pub fn set_uif(&mut self, val: bool) { 3236 pub fn set_uif(&mut self, val: bool) {
2800 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 3237 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
2801 } 3238 }
2802 #[doc = "Capture/compare 1 interrupt flag"] 3239 }
2803 pub fn ccif(&self, n: usize) -> bool { 3240 impl Default for SrBasic {
2804 assert!(n < 4usize); 3241 fn default() -> SrBasic {
2805 let offs = 1usize + n * 1usize; 3242 SrBasic(0)
2806 let val = (self.0 >> offs) & 0x01;
2807 val != 0
2808 }
2809 #[doc = "Capture/compare 1 interrupt flag"]
2810 pub fn set_ccif(&mut self, n: usize, val: bool) {
2811 assert!(n < 4usize);
2812 let offs = 1usize + n * 1usize;
2813 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2814 } 3243 }
2815 #[doc = "COM interrupt flag"] 3244 }
2816 pub const fn comif(&self) -> bool { 3245 #[doc = "slave mode control register"]
2817 let val = (self.0 >> 5usize) & 0x01; 3246 #[repr(transparent)]
2818 val != 0 3247 #[derive(Copy, Clone, Eq, PartialEq)]
3248 pub struct Smcr(pub u32);
3249 impl Smcr {
3250 #[doc = "Slave mode selection"]
3251 pub const fn sms(&self) -> super::vals::Sms {
3252 let val = (self.0 >> 0usize) & 0x07;
3253 super::vals::Sms(val as u8)
2819 } 3254 }
2820 #[doc = "COM interrupt flag"] 3255 #[doc = "Slave mode selection"]
2821 pub fn set_comif(&mut self, val: bool) { 3256 pub fn set_sms(&mut self, val: super::vals::Sms) {
2822 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); 3257 self.0 = (self.0 & !(0x07 << 0usize)) | (((val.0 as u32) & 0x07) << 0usize);
2823 } 3258 }
2824 #[doc = "Trigger interrupt flag"] 3259 #[doc = "Trigger selection"]
2825 pub const fn tif(&self) -> bool { 3260 pub const fn ts(&self) -> super::vals::Ts {
2826 let val = (self.0 >> 6usize) & 0x01; 3261 let val = (self.0 >> 4usize) & 0x07;
2827 val != 0 3262 super::vals::Ts(val as u8)
2828 } 3263 }
2829 #[doc = "Trigger interrupt flag"] 3264 #[doc = "Trigger selection"]
2830 pub fn set_tif(&mut self, val: bool) { 3265 pub fn set_ts(&mut self, val: super::vals::Ts) {
2831 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 3266 self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize);
2832 } 3267 }
2833 #[doc = "Break interrupt flag"] 3268 #[doc = "Master/Slave mode"]
2834 pub const fn bif(&self) -> bool { 3269 pub const fn msm(&self) -> super::vals::Msm {
2835 let val = (self.0 >> 7usize) & 0x01; 3270 let val = (self.0 >> 7usize) & 0x01;
2836 val != 0 3271 super::vals::Msm(val as u8)
2837 } 3272 }
2838 #[doc = "Break interrupt flag"] 3273 #[doc = "Master/Slave mode"]
2839 pub fn set_bif(&mut self, val: bool) { 3274 pub fn set_msm(&mut self, val: super::vals::Msm) {
2840 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 3275 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
2841 } 3276 }
2842 #[doc = "Capture/Compare 1 overcapture flag"] 3277 #[doc = "External trigger filter"]
2843 pub fn ccof(&self, n: usize) -> bool { 3278 pub const fn etf(&self) -> super::vals::Etf {
2844 assert!(n < 4usize); 3279 let val = (self.0 >> 8usize) & 0x0f;
2845 let offs = 9usize + n * 1usize; 3280 super::vals::Etf(val as u8)
2846 let val = (self.0 >> offs) & 0x01;
2847 val != 0
2848 } 3281 }
2849 #[doc = "Capture/Compare 1 overcapture flag"] 3282 #[doc = "External trigger filter"]
2850 pub fn set_ccof(&mut self, n: usize, val: bool) { 3283 pub fn set_etf(&mut self, val: super::vals::Etf) {
2851 assert!(n < 4usize); 3284 self.0 = (self.0 & !(0x0f << 8usize)) | (((val.0 as u32) & 0x0f) << 8usize);
2852 let offs = 9usize + n * 1usize;
2853 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2854 } 3285 }
2855 } 3286 #[doc = "External trigger prescaler"]
2856 impl Default for SrAdv { 3287 pub const fn etps(&self) -> super::vals::Etps {
2857 fn default() -> SrAdv { 3288 let val = (self.0 >> 12usize) & 0x03;
2858 SrAdv(0) 3289 super::vals::Etps(val as u8)
2859 } 3290 }
2860 } 3291 #[doc = "External trigger prescaler"]
2861 #[doc = "capture/compare register 1"] 3292 pub fn set_etps(&mut self, val: super::vals::Etps) {
2862 #[repr(transparent)] 3293 self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize);
2863 #[derive(Copy, Clone, Eq, PartialEq)]
2864 pub struct Ccr16(pub u32);
2865 impl Ccr16 {
2866 #[doc = "Capture/Compare 1 value"]
2867 pub const fn ccr(&self) -> u16 {
2868 let val = (self.0 >> 0usize) & 0xffff;
2869 val as u16
2870 } 3294 }
2871 #[doc = "Capture/Compare 1 value"] 3295 #[doc = "External clock enable"]
2872 pub fn set_ccr(&mut self, val: u16) { 3296 pub const fn ece(&self) -> super::vals::Ece {
2873 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); 3297 let val = (self.0 >> 14usize) & 0x01;
3298 super::vals::Ece(val as u8)
2874 } 3299 }
2875 } 3300 #[doc = "External clock enable"]
2876 impl Default for Ccr16 { 3301 pub fn set_ece(&mut self, val: super::vals::Ece) {
2877 fn default() -> Ccr16 { 3302 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
2878 Ccr16(0)
2879 } 3303 }
2880 } 3304 #[doc = "External trigger polarity"]
2881 #[doc = "repetition counter register"] 3305 pub const fn etp(&self) -> super::vals::Etp {
2882 #[repr(transparent)] 3306 let val = (self.0 >> 15usize) & 0x01;
2883 #[derive(Copy, Clone, Eq, PartialEq)] 3307 super::vals::Etp(val as u8)
2884 pub struct Rcr(pub u32);
2885 impl Rcr {
2886 #[doc = "Repetition counter value"]
2887 pub const fn rep(&self) -> u8 {
2888 let val = (self.0 >> 0usize) & 0xff;
2889 val as u8
2890 } 3308 }
2891 #[doc = "Repetition counter value"] 3309 #[doc = "External trigger polarity"]
2892 pub fn set_rep(&mut self, val: u8) { 3310 pub fn set_etp(&mut self, val: super::vals::Etp) {
2893 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize); 3311 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize);
2894 } 3312 }
2895 } 3313 }
2896 impl Default for Rcr { 3314 impl Default for Smcr {
2897 fn default() -> Rcr { 3315 fn default() -> Smcr {
2898 Rcr(0) 3316 Smcr(0)
2899 } 3317 }
2900 } 3318 }
2901 #[doc = "break and dead-time register"] 3319 #[doc = "event generation register"]
2902 #[repr(transparent)] 3320 #[repr(transparent)]
2903 #[derive(Copy, Clone, Eq, PartialEq)] 3321 #[derive(Copy, Clone, Eq, PartialEq)]
2904 pub struct Bdtr(pub u32); 3322 pub struct EgrGp(pub u32);
2905 impl Bdtr { 3323 impl EgrGp {
2906 #[doc = "Dead-time generator setup"] 3324 #[doc = "Update generation"]
2907 pub const fn dtg(&self) -> u8 { 3325 pub const fn ug(&self) -> bool {
2908 let val = (self.0 >> 0usize) & 0xff; 3326 let val = (self.0 >> 0usize) & 0x01;
2909 val as u8
2910 }
2911 #[doc = "Dead-time generator setup"]
2912 pub fn set_dtg(&mut self, val: u8) {
2913 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
2914 }
2915 #[doc = "Lock configuration"]
2916 pub const fn lock(&self) -> u8 {
2917 let val = (self.0 >> 8usize) & 0x03;
2918 val as u8
2919 }
2920 #[doc = "Lock configuration"]
2921 pub fn set_lock(&mut self, val: u8) {
2922 self.0 = (self.0 & !(0x03 << 8usize)) | (((val as u32) & 0x03) << 8usize);
2923 }
2924 #[doc = "Off-state selection for Idle mode"]
2925 pub const fn ossi(&self) -> super::vals::Ossi {
2926 let val = (self.0 >> 10usize) & 0x01;
2927 super::vals::Ossi(val as u8)
2928 }
2929 #[doc = "Off-state selection for Idle mode"]
2930 pub fn set_ossi(&mut self, val: super::vals::Ossi) {
2931 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize);
2932 }
2933 #[doc = "Off-state selection for Run mode"]
2934 pub const fn ossr(&self) -> super::vals::Ossr {
2935 let val = (self.0 >> 11usize) & 0x01;
2936 super::vals::Ossr(val as u8)
2937 }
2938 #[doc = "Off-state selection for Run mode"]
2939 pub fn set_ossr(&mut self, val: super::vals::Ossr) {
2940 self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize);
2941 }
2942 #[doc = "Break enable"]
2943 pub const fn bke(&self) -> bool {
2944 let val = (self.0 >> 12usize) & 0x01;
2945 val != 0
2946 }
2947 #[doc = "Break enable"]
2948 pub fn set_bke(&mut self, val: bool) {
2949 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize);
2950 }
2951 #[doc = "Break polarity"]
2952 pub const fn bkp(&self) -> bool {
2953 let val = (self.0 >> 13usize) & 0x01;
2954 val != 0 3327 val != 0
2955 } 3328 }
2956 #[doc = "Break polarity"] 3329 #[doc = "Update generation"]
2957 pub fn set_bkp(&mut self, val: bool) { 3330 pub fn set_ug(&mut self, val: bool) {
2958 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); 3331 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
2959 } 3332 }
2960 #[doc = "Automatic output enable"] 3333 #[doc = "Capture/compare 1 generation"]
2961 pub const fn aoe(&self) -> bool { 3334 pub fn ccg(&self, n: usize) -> bool {
2962 let val = (self.0 >> 14usize) & 0x01; 3335 assert!(n < 4usize);
3336 let offs = 1usize + n * 1usize;
3337 let val = (self.0 >> offs) & 0x01;
2963 val != 0 3338 val != 0
2964 } 3339 }
2965 #[doc = "Automatic output enable"] 3340 #[doc = "Capture/compare 1 generation"]
2966 pub fn set_aoe(&mut self, val: bool) { 3341 pub fn set_ccg(&mut self, n: usize, val: bool) {
2967 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); 3342 assert!(n < 4usize);
3343 let offs = 1usize + n * 1usize;
3344 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
2968 } 3345 }
2969 #[doc = "Main output enable"] 3346 #[doc = "Capture/Compare control update generation"]
2970 pub const fn moe(&self) -> bool { 3347 pub const fn comg(&self) -> bool {
2971 let val = (self.0 >> 15usize) & 0x01; 3348 let val = (self.0 >> 5usize) & 0x01;
2972 val != 0 3349 val != 0
2973 } 3350 }
2974 #[doc = "Main output enable"] 3351 #[doc = "Capture/Compare control update generation"]
2975 pub fn set_moe(&mut self, val: bool) { 3352 pub fn set_comg(&mut self, val: bool) {
2976 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize); 3353 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
2977 }
2978 }
2979 impl Default for Bdtr {
2980 fn default() -> Bdtr {
2981 Bdtr(0)
2982 } 3354 }
2983 } 3355 #[doc = "Trigger generation"]
2984 #[doc = "DMA/Interrupt enable register"] 3356 pub const fn tg(&self) -> bool {
2985 #[repr(transparent)] 3357 let val = (self.0 >> 6usize) & 0x01;
2986 #[derive(Copy, Clone, Eq, PartialEq)]
2987 pub struct DierBasic(pub u32);
2988 impl DierBasic {
2989 #[doc = "Update interrupt enable"]
2990 pub const fn uie(&self) -> bool {
2991 let val = (self.0 >> 0usize) & 0x01;
2992 val != 0 3358 val != 0
2993 } 3359 }
2994 #[doc = "Update interrupt enable"] 3360 #[doc = "Trigger generation"]
2995 pub fn set_uie(&mut self, val: bool) { 3361 pub fn set_tg(&mut self, val: bool) {
2996 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 3362 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
2997 } 3363 }
2998 #[doc = "Update DMA request enable"] 3364 #[doc = "Break generation"]
2999 pub const fn ude(&self) -> bool { 3365 pub const fn bg(&self) -> bool {
3000 let val = (self.0 >> 8usize) & 0x01; 3366 let val = (self.0 >> 7usize) & 0x01;
3001 val != 0 3367 val != 0
3002 } 3368 }
3003 #[doc = "Update DMA request enable"] 3369 #[doc = "Break generation"]
3004 pub fn set_ude(&mut self, val: bool) { 3370 pub fn set_bg(&mut self, val: bool) {
3005 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 3371 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
3006 } 3372 }
3007 } 3373 }
3008 impl Default for DierBasic { 3374 impl Default for EgrGp {
3009 fn default() -> DierBasic { 3375 fn default() -> EgrGp {
3010 DierBasic(0) 3376 EgrGp(0)
3011 } 3377 }
3012 } 3378 }
3013 #[doc = "status register"] 3379 #[doc = "capture/compare register 1"]
3014 #[repr(transparent)] 3380 #[repr(transparent)]
3015 #[derive(Copy, Clone, Eq, PartialEq)] 3381 #[derive(Copy, Clone, Eq, PartialEq)]
3016 pub struct SrBasic(pub u32); 3382 pub struct Ccr32(pub u32);
3017 impl SrBasic { 3383 impl Ccr32 {
3018 #[doc = "Update interrupt flag"] 3384 #[doc = "Capture/Compare 1 value"]
3019 pub const fn uif(&self) -> bool { 3385 pub const fn ccr(&self) -> u32 {
3020 let val = (self.0 >> 0usize) & 0x01; 3386 let val = (self.0 >> 0usize) & 0xffff_ffff;
3021 val != 0 3387 val as u32
3022 } 3388 }
3023 #[doc = "Update interrupt flag"] 3389 #[doc = "Capture/Compare 1 value"]
3024 pub fn set_uif(&mut self, val: bool) { 3390 pub fn set_ccr(&mut self, val: u32) {
3025 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 3391 self.0 =
3392 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
3026 } 3393 }
3027 } 3394 }
3028 impl Default for SrBasic { 3395 impl Default for Ccr32 {
3029 fn default() -> SrBasic { 3396 fn default() -> Ccr32 {
3030 SrBasic(0) 3397 Ccr32(0)
3031 } 3398 }
3032 } 3399 }
3033 #[doc = "capture/compare enable register"] 3400 #[doc = "control register 2"]
3034 #[repr(transparent)] 3401 #[repr(transparent)]
3035 #[derive(Copy, Clone, Eq, PartialEq)] 3402 #[derive(Copy, Clone, Eq, PartialEq)]
3036 pub struct CcerAdv(pub u32); 3403 pub struct Cr2Basic(pub u32);
3037 impl CcerAdv { 3404 impl Cr2Basic {
3038 #[doc = "Capture/Compare 1 output enable"] 3405 #[doc = "Master mode selection"]
3039 pub fn cce(&self, n: usize) -> bool { 3406 pub const fn mms(&self) -> super::vals::Mms {
3040 assert!(n < 4usize); 3407 let val = (self.0 >> 4usize) & 0x07;
3041 let offs = 0usize + n * 4usize; 3408 super::vals::Mms(val as u8)
3042 let val = (self.0 >> offs) & 0x01;
3043 val != 0
3044 }
3045 #[doc = "Capture/Compare 1 output enable"]
3046 pub fn set_cce(&mut self, n: usize, val: bool) {
3047 assert!(n < 4usize);
3048 let offs = 0usize + n * 4usize;
3049 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
3050 }
3051 #[doc = "Capture/Compare 1 output Polarity"]
3052 pub fn ccp(&self, n: usize) -> bool {
3053 assert!(n < 4usize);
3054 let offs = 1usize + n * 4usize;
3055 let val = (self.0 >> offs) & 0x01;
3056 val != 0
3057 }
3058 #[doc = "Capture/Compare 1 output Polarity"]
3059 pub fn set_ccp(&mut self, n: usize, val: bool) {
3060 assert!(n < 4usize);
3061 let offs = 1usize + n * 4usize;
3062 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
3063 }
3064 #[doc = "Capture/Compare 1 complementary output enable"]
3065 pub fn ccne(&self, n: usize) -> bool {
3066 assert!(n < 4usize);
3067 let offs = 2usize + n * 4usize;
3068 let val = (self.0 >> offs) & 0x01;
3069 val != 0
3070 }
3071 #[doc = "Capture/Compare 1 complementary output enable"]
3072 pub fn set_ccne(&mut self, n: usize, val: bool) {
3073 assert!(n < 4usize);
3074 let offs = 2usize + n * 4usize;
3075 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
3076 }
3077 #[doc = "Capture/Compare 1 output Polarity"]
3078 pub fn ccnp(&self, n: usize) -> bool {
3079 assert!(n < 4usize);
3080 let offs = 3usize + n * 4usize;
3081 let val = (self.0 >> offs) & 0x01;
3082 val != 0
3083 } 3409 }
3084 #[doc = "Capture/Compare 1 output Polarity"] 3410 #[doc = "Master mode selection"]
3085 pub fn set_ccnp(&mut self, n: usize, val: bool) { 3411 pub fn set_mms(&mut self, val: super::vals::Mms) {
3086 assert!(n < 4usize); 3412 self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize);
3087 let offs = 3usize + n * 4usize;
3088 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
3089 } 3413 }
3090 } 3414 }
3091 impl Default for CcerAdv { 3415 impl Default for Cr2Basic {
3092 fn default() -> CcerAdv { 3416 fn default() -> Cr2Basic {
3093 CcerAdv(0) 3417 Cr2Basic(0)
3094 } 3418 }
3095 } 3419 }
3096 #[doc = "event generation register"] 3420 #[doc = "event generation register"]
3097 #[repr(transparent)] 3421 #[repr(transparent)]
3098 #[derive(Copy, Clone, Eq, PartialEq)] 3422 #[derive(Copy, Clone, Eq, PartialEq)]
3099 pub struct EgrGp(pub u32); 3423 pub struct EgrAdv(pub u32);
3100 impl EgrGp { 3424 impl EgrAdv {
3101 #[doc = "Update generation"] 3425 #[doc = "Update generation"]
3102 pub const fn ug(&self) -> bool { 3426 pub const fn ug(&self) -> bool {
3103 let val = (self.0 >> 0usize) & 0x01; 3427 let val = (self.0 >> 0usize) & 0x01;
@@ -3148,30 +3472,47 @@ pub mod timer_v1 {
3148 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 3472 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
3149 } 3473 }
3150 } 3474 }
3151 impl Default for EgrGp { 3475 impl Default for EgrAdv {
3152 fn default() -> EgrGp { 3476 fn default() -> EgrAdv {
3153 EgrGp(0) 3477 EgrAdv(0)
3154 } 3478 }
3155 } 3479 }
3156 #[doc = "capture/compare register 1"] 3480 #[doc = "control register 2"]
3157 #[repr(transparent)] 3481 #[repr(transparent)]
3158 #[derive(Copy, Clone, Eq, PartialEq)] 3482 #[derive(Copy, Clone, Eq, PartialEq)]
3159 pub struct Ccr32(pub u32); 3483 pub struct Cr2Gp(pub u32);
3160 impl Ccr32 { 3484 impl Cr2Gp {
3161 #[doc = "Capture/Compare 1 value"] 3485 #[doc = "Capture/compare DMA selection"]
3162 pub const fn ccr(&self) -> u32 { 3486 pub const fn ccds(&self) -> super::vals::Ccds {
3163 let val = (self.0 >> 0usize) & 0xffff_ffff; 3487 let val = (self.0 >> 3usize) & 0x01;
3164 val as u32 3488 super::vals::Ccds(val as u8)
3165 } 3489 }
3166 #[doc = "Capture/Compare 1 value"] 3490 #[doc = "Capture/compare DMA selection"]
3167 pub fn set_ccr(&mut self, val: u32) { 3491 pub fn set_ccds(&mut self, val: super::vals::Ccds) {
3168 self.0 = 3492 self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize);
3169 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); 3493 }
3494 #[doc = "Master mode selection"]
3495 pub const fn mms(&self) -> super::vals::Mms {
3496 let val = (self.0 >> 4usize) & 0x07;
3497 super::vals::Mms(val as u8)
3498 }
3499 #[doc = "Master mode selection"]
3500 pub fn set_mms(&mut self, val: super::vals::Mms) {
3501 self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize);
3502 }
3503 #[doc = "TI1 selection"]
3504 pub const fn ti1s(&self) -> super::vals::Tis {
3505 let val = (self.0 >> 7usize) & 0x01;
3506 super::vals::Tis(val as u8)
3507 }
3508 #[doc = "TI1 selection"]
3509 pub fn set_ti1s(&mut self, val: super::vals::Tis) {
3510 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
3170 } 3511 }
3171 } 3512 }
3172 impl Default for Ccr32 { 3513 impl Default for Cr2Gp {
3173 fn default() -> Ccr32 { 3514 fn default() -> Cr2Gp {
3174 Ccr32(0) 3515 Cr2Gp(0)
3175 } 3516 }
3176 } 3517 }
3177 } 3518 }
@@ -3179,40 +3520,12 @@ pub mod timer_v1 {
3179 use crate::generic::*; 3520 use crate::generic::*;
3180 #[repr(transparent)] 3521 #[repr(transparent)]
3181 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3522 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3182 pub struct Etf(pub u8); 3523 pub struct Opm(pub u8);
3183 impl Etf { 3524 impl Opm {
3184 #[doc = "No filter, sampling is done at fDTS"] 3525 #[doc = "Counter is not stopped at update event"]
3185 pub const NOFILTER: Self = Self(0); 3526 pub const DISABLED: Self = Self(0);
3186 #[doc = "fSAMPLING=fCK_INT, N=2"] 3527 #[doc = "Counter stops counting at the next update event (clearing the CEN bit)"]
3187 pub const FCK_INT_N2: Self = Self(0x01); 3528 pub const ENABLED: Self = Self(0x01);
3188 #[doc = "fSAMPLING=fCK_INT, N=4"]
3189 pub const FCK_INT_N4: Self = Self(0x02);
3190 #[doc = "fSAMPLING=fCK_INT, N=8"]
3191 pub const FCK_INT_N8: Self = Self(0x03);
3192 #[doc = "fSAMPLING=fDTS/2, N=6"]
3193 pub const FDTS_DIV2_N6: Self = Self(0x04);
3194 #[doc = "fSAMPLING=fDTS/2, N=8"]
3195 pub const FDTS_DIV2_N8: Self = Self(0x05);
3196 #[doc = "fSAMPLING=fDTS/4, N=6"]
3197 pub const FDTS_DIV4_N6: Self = Self(0x06);
3198 #[doc = "fSAMPLING=fDTS/4, N=8"]
3199 pub const FDTS_DIV4_N8: Self = Self(0x07);
3200 #[doc = "fSAMPLING=fDTS/8, N=6"]
3201 pub const FDTS_DIV8_N6: Self = Self(0x08);
3202 #[doc = "fSAMPLING=fDTS/8, N=8"]
3203 pub const FDTS_DIV8_N8: Self = Self(0x09);
3204 #[doc = "fSAMPLING=fDTS/16, N=5"]
3205 pub const FDTS_DIV16_N5: Self = Self(0x0a);
3206 #[doc = "fSAMPLING=fDTS/16, N=6"]
3207 pub const FDTS_DIV16_N6: Self = Self(0x0b);
3208 #[doc = "fSAMPLING=fDTS/16, N=8"]
3209 pub const FDTS_DIV16_N8: Self = Self(0x0c);
3210 #[doc = "fSAMPLING=fDTS/32, N=5"]
3211 pub const FDTS_DIV32_N5: Self = Self(0x0d);
3212 #[doc = "fSAMPLING=fDTS/32, N=6"]
3213 pub const FDTS_DIV32_N6: Self = Self(0x0e);
3214 #[doc = "fSAMPLING=fDTS/32, N=8"]
3215 pub const FDTS_DIV32_N8: Self = Self(0x0f);
3216 } 3529 }
3217 #[repr(transparent)] 3530 #[repr(transparent)]
3218 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3531 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
@@ -3225,72 +3538,12 @@ pub mod timer_v1 {
3225 } 3538 }
3226 #[repr(transparent)] 3539 #[repr(transparent)]
3227 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3540 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3228 pub struct Ccds(pub u8); 3541 pub struct Msm(pub u8);
3229 impl Ccds { 3542 impl Msm {
3230 #[doc = "CCx DMA request sent when CCx event occurs"] 3543 #[doc = "No action"]
3231 pub const ONCOMPARE: Self = Self(0); 3544 pub const NOSYNC: Self = Self(0);
3232 #[doc = "CCx DMA request sent when update event occurs"] 3545 #[doc = "The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event."]
3233 pub const ONUPDATE: Self = Self(0x01); 3546 pub const SYNC: Self = Self(0x01);
3234 }
3235 #[repr(transparent)]
3236 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3237 pub struct Sms(pub u8);
3238 impl Sms {
3239 #[doc = "Slave mode disabled - if CEN = ‘1 then the prescaler is clocked directly by the internal clock."]
3240 pub const DISABLED: Self = Self(0);
3241 #[doc = "Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level."]
3242 pub const ENCODER_MODE_1: Self = Self(0x01);
3243 #[doc = "Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level."]
3244 pub const ENCODER_MODE_2: Self = Self(0x02);
3245 #[doc = "Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input."]
3246 pub const ENCODER_MODE_3: Self = Self(0x03);
3247 #[doc = "Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers."]
3248 pub const RESET_MODE: Self = Self(0x04);
3249 #[doc = "Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled."]
3250 pub const GATED_MODE: Self = Self(0x05);
3251 #[doc = "Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled."]
3252 pub const TRIGGER_MODE: Self = Self(0x06);
3253 #[doc = "External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter."]
3254 pub const EXT_CLOCK_MODE: Self = Self(0x07);
3255 }
3256 #[repr(transparent)]
3257 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3258 pub struct Dir(pub u8);
3259 impl Dir {
3260 #[doc = "Counter used as upcounter"]
3261 pub const UP: Self = Self(0);
3262 #[doc = "Counter used as downcounter"]
3263 pub const DOWN: Self = Self(0x01);
3264 }
3265 #[repr(transparent)]
3266 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3267 pub struct Mms(pub u8);
3268 impl Mms {
3269 #[doc = "The UG bit from the TIMx_EGR register is used as trigger output"]
3270 pub const RESET: Self = Self(0);
3271 #[doc = "The counter enable signal, CNT_EN, is used as trigger output"]
3272 pub const ENABLE: Self = Self(0x01);
3273 #[doc = "The update event is selected as trigger output"]
3274 pub const UPDATE: Self = Self(0x02);
3275 #[doc = "The trigger output send a positive pulse when the CC1IF flag it to be set, as soon as a capture or a compare match occurred"]
3276 pub const COMPAREPULSE: Self = Self(0x03);
3277 #[doc = "OC1REF signal is used as trigger output"]
3278 pub const COMPAREOC1: Self = Self(0x04);
3279 #[doc = "OC2REF signal is used as trigger output"]
3280 pub const COMPAREOC2: Self = Self(0x05);
3281 #[doc = "OC3REF signal is used as trigger output"]
3282 pub const COMPAREOC3: Self = Self(0x06);
3283 #[doc = "OC4REF signal is used as trigger output"]
3284 pub const COMPAREOC4: Self = Self(0x07);
3285 }
3286 #[repr(transparent)]
3287 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3288 pub struct Ossi(pub u8);
3289 impl Ossi {
3290 #[doc = "When inactive, OC/OCN outputs are disabled"]
3291 pub const DISABLED: Self = Self(0);
3292 #[doc = "When inactive, OC/OCN outputs are forced to idle level"]
3293 pub const IDLELEVEL: Self = Self(0x01);
3294 } 3547 }
3295 #[repr(transparent)] 3548 #[repr(transparent)]
3296 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3549 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
@@ -3303,43 +3556,42 @@ pub mod timer_v1 {
3303 } 3556 }
3304 #[repr(transparent)] 3557 #[repr(transparent)]
3305 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3558 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3306 pub struct CcmrOutputCcs(pub u8); 3559 pub struct Ocm(pub u8);
3307 impl CcmrOutputCcs { 3560 impl Ocm {
3308 #[doc = "CCx channel is configured as output"] 3561 #[doc = "The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs"]
3309 pub const OUTPUT: Self = Self(0); 3562 pub const FROZEN: Self = Self(0);
3563 #[doc = "Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register"]
3564 pub const ACTIVEONMATCH: Self = Self(0x01);
3565 #[doc = "Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register"]
3566 pub const INACTIVEONMATCH: Self = Self(0x02);
3567 #[doc = "OCyREF toggles when TIMx_CNT=TIMx_CCRy"]
3568 pub const TOGGLE: Self = Self(0x03);
3569 #[doc = "OCyREF is forced low"]
3570 pub const FORCEINACTIVE: Self = Self(0x04);
3571 #[doc = "OCyREF is forced high"]
3572 pub const FORCEACTIVE: Self = Self(0x05);
3573 #[doc = "In upcounting, channel is active as long as TIMx_CNT<TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active"]
3574 pub const PWMMODE1: Self = Self(0x06);
3575 #[doc = "Inversely to PwmMode1"]
3576 pub const PWMMODE2: Self = Self(0x07);
3310 } 3577 }
3311 #[repr(transparent)] 3578 #[repr(transparent)]
3312 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3579 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3313 pub struct Ossr(pub u8); 3580 pub struct Arpe(pub u8);
3314 impl Ossr { 3581 impl Arpe {
3315 #[doc = "When inactive, OC/OCN outputs are disabled"] 3582 #[doc = "TIMx_APRR register is not buffered"]
3316 pub const DISABLED: Self = Self(0); 3583 pub const DISABLED: Self = Self(0);
3317 #[doc = "When inactive, OC/OCN outputs are enabled with their inactive level"] 3584 #[doc = "TIMx_APRR register is buffered"]
3318 pub const IDLELEVEL: Self = Self(0x01); 3585 pub const ENABLED: Self = Self(0x01);
3319 }
3320 #[repr(transparent)]
3321 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3322 pub struct Cms(pub u8);
3323 impl Cms {
3324 #[doc = "The counter counts up or down depending on the direction bit"]
3325 pub const EDGEALIGNED: Self = Self(0);
3326 #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting down."]
3327 pub const CENTERALIGNED1: Self = Self(0x01);
3328 #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting up."]
3329 pub const CENTERALIGNED2: Self = Self(0x02);
3330 #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set both when the counter is counting up or down."]
3331 pub const CENTERALIGNED3: Self = Self(0x03);
3332 } 3586 }
3333 #[repr(transparent)] 3587 #[repr(transparent)]
3334 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3588 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3335 pub struct CcmrInputCcs(pub u8); 3589 pub struct Ossi(pub u8);
3336 impl CcmrInputCcs { 3590 impl Ossi {
3337 #[doc = "CCx channel is configured as input, normal mapping: ICx mapped to TIx"] 3591 #[doc = "When inactive, OC/OCN outputs are disabled"]
3338 pub const TI4: Self = Self(0x01); 3592 pub const DISABLED: Self = Self(0);
3339 #[doc = "CCx channel is configured as input, alternate mapping (switches 1 with 2, 3 with 4)"] 3593 #[doc = "When inactive, OC/OCN outputs are forced to idle level"]
3340 pub const TI3: Self = Self(0x02); 3594 pub const IDLELEVEL: Self = Self(0x01);
3341 #[doc = "CCx channel is configured as input, ICx is mapped on TRC"]
3342 pub const TRC: Self = Self(0x03);
3343 } 3595 }
3344 #[repr(transparent)] 3596 #[repr(transparent)]
3345 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3597 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
@@ -3362,24 +3614,54 @@ pub mod timer_v1 {
3362 } 3614 }
3363 #[repr(transparent)] 3615 #[repr(transparent)]
3364 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3616 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3365 pub struct Ocm(pub u8); 3617 pub struct Dir(pub u8);
3366 impl Ocm { 3618 impl Dir {
3367 #[doc = "The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs"] 3619 #[doc = "Counter used as upcounter"]
3368 pub const FROZEN: Self = Self(0); 3620 pub const UP: Self = Self(0);
3369 #[doc = "Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register"] 3621 #[doc = "Counter used as downcounter"]
3370 pub const ACTIVEONMATCH: Self = Self(0x01); 3622 pub const DOWN: Self = Self(0x01);
3371 #[doc = "Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register"] 3623 }
3372 pub const INACTIVEONMATCH: Self = Self(0x02); 3624 #[repr(transparent)]
3373 #[doc = "OCyREF toggles when TIMx_CNT=TIMx_CCRy"] 3625 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3374 pub const TOGGLE: Self = Self(0x03); 3626 pub struct Mms(pub u8);
3375 #[doc = "OCyREF is forced low"] 3627 impl Mms {
3376 pub const FORCEINACTIVE: Self = Self(0x04); 3628 #[doc = "The UG bit from the TIMx_EGR register is used as trigger output"]
3377 #[doc = "OCyREF is forced high"] 3629 pub const RESET: Self = Self(0);
3378 pub const FORCEACTIVE: Self = Self(0x05); 3630 #[doc = "The counter enable signal, CNT_EN, is used as trigger output"]
3379 #[doc = "In upcounting, channel is active as long as TIMx_CNT<TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active"] 3631 pub const ENABLE: Self = Self(0x01);
3380 pub const PWMMODE1: Self = Self(0x06); 3632 #[doc = "The update event is selected as trigger output"]
3381 #[doc = "Inversely to PwmMode1"] 3633 pub const UPDATE: Self = Self(0x02);
3382 pub const PWMMODE2: Self = Self(0x07); 3634 #[doc = "The trigger output send a positive pulse when the CC1IF flag it to be set, as soon as a capture or a compare match occurred"]
3635 pub const COMPAREPULSE: Self = Self(0x03);
3636 #[doc = "OC1REF signal is used as trigger output"]
3637 pub const COMPAREOC1: Self = Self(0x04);
3638 #[doc = "OC2REF signal is used as trigger output"]
3639 pub const COMPAREOC2: Self = Self(0x05);
3640 #[doc = "OC3REF signal is used as trigger output"]
3641 pub const COMPAREOC3: Self = Self(0x06);
3642 #[doc = "OC4REF signal is used as trigger output"]
3643 pub const COMPAREOC4: Self = Self(0x07);
3644 }
3645 #[repr(transparent)]
3646 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3647 pub struct Sms(pub u8);
3648 impl Sms {
3649 #[doc = "Slave mode disabled - if CEN = ‘1 then the prescaler is clocked directly by the internal clock."]
3650 pub const DISABLED: Self = Self(0);
3651 #[doc = "Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level."]
3652 pub const ENCODER_MODE_1: Self = Self(0x01);
3653 #[doc = "Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level."]
3654 pub const ENCODER_MODE_2: Self = Self(0x02);
3655 #[doc = "Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input."]
3656 pub const ENCODER_MODE_3: Self = Self(0x03);
3657 #[doc = "Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers."]
3658 pub const RESET_MODE: Self = Self(0x04);
3659 #[doc = "Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled."]
3660 pub const GATED_MODE: Self = Self(0x05);
3661 #[doc = "Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled."]
3662 pub const TRIGGER_MODE: Self = Self(0x06);
3663 #[doc = "External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter."]
3664 pub const EXT_CLOCK_MODE: Self = Self(0x07);
3383 } 3665 }
3384 #[repr(transparent)] 3666 #[repr(transparent)]
3385 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3667 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
@@ -3403,43 +3685,56 @@ pub mod timer_v1 {
3403 } 3685 }
3404 #[repr(transparent)] 3686 #[repr(transparent)]
3405 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3687 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3406 pub struct Msm(pub u8); 3688 pub struct CcmrOutputCcs(pub u8);
3407 impl Msm { 3689 impl CcmrOutputCcs {
3408 #[doc = "No action"] 3690 #[doc = "CCx channel is configured as output"]
3409 pub const NOSYNC: Self = Self(0); 3691 pub const OUTPUT: Self = Self(0);
3410 #[doc = "The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event."]
3411 pub const SYNC: Self = Self(0x01);
3412 }
3413 #[repr(transparent)]
3414 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3415 pub struct Etps(pub u8);
3416 impl Etps {
3417 #[doc = "Prescaler OFF"]
3418 pub const DIV1: Self = Self(0);
3419 #[doc = "ETRP frequency divided by 2"]
3420 pub const DIV2: Self = Self(0x01);
3421 #[doc = "ETRP frequency divided by 4"]
3422 pub const DIV4: Self = Self(0x02);
3423 #[doc = "ETRP frequency divided by 8"]
3424 pub const DIV8: Self = Self(0x03);
3425 } 3692 }
3426 #[repr(transparent)] 3693 #[repr(transparent)]
3427 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3694 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3428 pub struct Ocpe(pub u8); 3695 pub struct Etf(pub u8);
3429 impl Ocpe { 3696 impl Etf {
3430 #[doc = "Preload register on CCR2 disabled. New values written to CCR2 are taken into account immediately"] 3697 #[doc = "No filter, sampling is done at fDTS"]
3431 pub const DISABLED: Self = Self(0); 3698 pub const NOFILTER: Self = Self(0);
3432 #[doc = "Preload register on CCR2 enabled. Preload value is loaded into active register on each update event"] 3699 #[doc = "fSAMPLING=fCK_INT, N=2"]
3433 pub const ENABLED: Self = Self(0x01); 3700 pub const FCK_INT_N2: Self = Self(0x01);
3701 #[doc = "fSAMPLING=fCK_INT, N=4"]
3702 pub const FCK_INT_N4: Self = Self(0x02);
3703 #[doc = "fSAMPLING=fCK_INT, N=8"]
3704 pub const FCK_INT_N8: Self = Self(0x03);
3705 #[doc = "fSAMPLING=fDTS/2, N=6"]
3706 pub const FDTS_DIV2_N6: Self = Self(0x04);
3707 #[doc = "fSAMPLING=fDTS/2, N=8"]
3708 pub const FDTS_DIV2_N8: Self = Self(0x05);
3709 #[doc = "fSAMPLING=fDTS/4, N=6"]
3710 pub const FDTS_DIV4_N6: Self = Self(0x06);
3711 #[doc = "fSAMPLING=fDTS/4, N=8"]
3712 pub const FDTS_DIV4_N8: Self = Self(0x07);
3713 #[doc = "fSAMPLING=fDTS/8, N=6"]
3714 pub const FDTS_DIV8_N6: Self = Self(0x08);
3715 #[doc = "fSAMPLING=fDTS/8, N=8"]
3716 pub const FDTS_DIV8_N8: Self = Self(0x09);
3717 #[doc = "fSAMPLING=fDTS/16, N=5"]
3718 pub const FDTS_DIV16_N5: Self = Self(0x0a);
3719 #[doc = "fSAMPLING=fDTS/16, N=6"]
3720 pub const FDTS_DIV16_N6: Self = Self(0x0b);
3721 #[doc = "fSAMPLING=fDTS/16, N=8"]
3722 pub const FDTS_DIV16_N8: Self = Self(0x0c);
3723 #[doc = "fSAMPLING=fDTS/32, N=5"]
3724 pub const FDTS_DIV32_N5: Self = Self(0x0d);
3725 #[doc = "fSAMPLING=fDTS/32, N=6"]
3726 pub const FDTS_DIV32_N6: Self = Self(0x0e);
3727 #[doc = "fSAMPLING=fDTS/32, N=8"]
3728 pub const FDTS_DIV32_N8: Self = Self(0x0f);
3434 } 3729 }
3435 #[repr(transparent)] 3730 #[repr(transparent)]
3436 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3731 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3437 pub struct Arpe(pub u8); 3732 pub struct Etp(pub u8);
3438 impl Arpe { 3733 impl Etp {
3439 #[doc = "TIMx_APRR register is not buffered"] 3734 #[doc = "ETR is noninverted, active at high level or rising edge"]
3440 pub const DISABLED: Self = Self(0); 3735 pub const NOTINVERTED: Self = Self(0);
3441 #[doc = "TIMx_APRR register is buffered"] 3736 #[doc = "ETR is inverted, active at low level or falling edge"]
3442 pub const ENABLED: Self = Self(0x01); 3737 pub const INVERTED: Self = Self(0x01);
3443 } 3738 }
3444 #[repr(transparent)] 3739 #[repr(transparent)]
3445 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3740 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
@@ -3480,252 +3775,238 @@ pub mod timer_v1 {
3480 } 3775 }
3481 #[repr(transparent)] 3776 #[repr(transparent)]
3482 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3777 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3483 pub struct Opm(pub u8); 3778 pub struct CcmrInputCcs(pub u8);
3484 impl Opm { 3779 impl CcmrInputCcs {
3485 #[doc = "Counter is not stopped at update event"] 3780 #[doc = "CCx channel is configured as input, normal mapping: ICx mapped to TIx"]
3781 pub const TI4: Self = Self(0x01);
3782 #[doc = "CCx channel is configured as input, alternate mapping (switches 1 with 2, 3 with 4)"]
3783 pub const TI3: Self = Self(0x02);
3784 #[doc = "CCx channel is configured as input, ICx is mapped on TRC"]
3785 pub const TRC: Self = Self(0x03);
3786 }
3787 #[repr(transparent)]
3788 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3789 pub struct Ocpe(pub u8);
3790 impl Ocpe {
3791 #[doc = "Preload register on CCR2 disabled. New values written to CCR2 are taken into account immediately"]
3486 pub const DISABLED: Self = Self(0); 3792 pub const DISABLED: Self = Self(0);
3487 #[doc = "Counter stops counting at the next update event (clearing the CEN bit)"] 3793 #[doc = "Preload register on CCR2 enabled. Preload value is loaded into active register on each update event"]
3488 pub const ENABLED: Self = Self(0x01); 3794 pub const ENABLED: Self = Self(0x01);
3489 } 3795 }
3490 #[repr(transparent)] 3796 #[repr(transparent)]
3491 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3797 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3492 pub struct Etp(pub u8); 3798 pub struct Ccds(pub u8);
3493 impl Etp { 3799 impl Ccds {
3494 #[doc = "ETR is noninverted, active at high level or rising edge"] 3800 #[doc = "CCx DMA request sent when CCx event occurs"]
3495 pub const NOTINVERTED: Self = Self(0); 3801 pub const ONCOMPARE: Self = Self(0);
3496 #[doc = "ETR is inverted, active at low level or falling edge"] 3802 #[doc = "CCx DMA request sent when update event occurs"]
3497 pub const INVERTED: Self = Self(0x01); 3803 pub const ONUPDATE: Self = Self(0x01);
3804 }
3805 #[repr(transparent)]
3806 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3807 pub struct Ossr(pub u8);
3808 impl Ossr {
3809 #[doc = "When inactive, OC/OCN outputs are disabled"]
3810 pub const DISABLED: Self = Self(0);
3811 #[doc = "When inactive, OC/OCN outputs are enabled with their inactive level"]
3812 pub const IDLELEVEL: Self = Self(0x01);
3813 }
3814 #[repr(transparent)]
3815 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3816 pub struct Cms(pub u8);
3817 impl Cms {
3818 #[doc = "The counter counts up or down depending on the direction bit"]
3819 pub const EDGEALIGNED: Self = Self(0);
3820 #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting down."]
3821 pub const CENTERALIGNED1: Self = Self(0x01);
3822 #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting up."]
3823 pub const CENTERALIGNED2: Self = Self(0x02);
3824 #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set both when the counter is counting up or down."]
3825 pub const CENTERALIGNED3: Self = Self(0x03);
3826 }
3827 #[repr(transparent)]
3828 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3829 pub struct Etps(pub u8);
3830 impl Etps {
3831 #[doc = "Prescaler OFF"]
3832 pub const DIV1: Self = Self(0);
3833 #[doc = "ETRP frequency divided by 2"]
3834 pub const DIV2: Self = Self(0x01);
3835 #[doc = "ETRP frequency divided by 4"]
3836 pub const DIV4: Self = Self(0x02);
3837 #[doc = "ETRP frequency divided by 8"]
3838 pub const DIV8: Self = Self(0x03);
3498 } 3839 }
3499 } 3840 }
3500} 3841}
3501pub mod gpio_v1 { 3842pub mod gpio_v2 {
3502 use crate::generic::*; 3843 use crate::generic::*;
3503 #[doc = "General purpose I/O"] 3844 #[doc = "General-purpose I/Os"]
3504 #[derive(Copy, Clone)] 3845 #[derive(Copy, Clone)]
3505 pub struct Gpio(pub *mut u8); 3846 pub struct Gpio(pub *mut u8);
3506 unsafe impl Send for Gpio {} 3847 unsafe impl Send for Gpio {}
3507 unsafe impl Sync for Gpio {} 3848 unsafe impl Sync for Gpio {}
3508 impl Gpio { 3849 impl Gpio {
3509 #[doc = "Port configuration register low (GPIOn_CRL)"] 3850 #[doc = "GPIO port mode register"]
3510 pub fn cr(self, n: usize) -> Reg<regs::Cr, RW> { 3851 pub fn moder(self) -> Reg<regs::Moder, RW> {
3511 assert!(n < 2usize); 3852 unsafe { Reg::from_ptr(self.0.add(0usize)) }
3512 unsafe { Reg::from_ptr(self.0.add(0usize + n * 4usize)) }
3513 } 3853 }
3514 #[doc = "Port input data register (GPIOn_IDR)"] 3854 #[doc = "GPIO port output type register"]
3515 pub fn idr(self) -> Reg<regs::Idr, R> { 3855 pub fn otyper(self) -> Reg<regs::Otyper, RW> {
3856 unsafe { Reg::from_ptr(self.0.add(4usize)) }
3857 }
3858 #[doc = "GPIO port output speed register"]
3859 pub fn ospeedr(self) -> Reg<regs::Ospeedr, RW> {
3516 unsafe { Reg::from_ptr(self.0.add(8usize)) } 3860 unsafe { Reg::from_ptr(self.0.add(8usize)) }
3517 } 3861 }
3518 #[doc = "Port output data register (GPIOn_ODR)"] 3862 #[doc = "GPIO port pull-up/pull-down register"]
3519 pub fn odr(self) -> Reg<regs::Odr, RW> { 3863 pub fn pupdr(self) -> Reg<regs::Pupdr, RW> {
3520 unsafe { Reg::from_ptr(self.0.add(12usize)) } 3864 unsafe { Reg::from_ptr(self.0.add(12usize)) }
3521 } 3865 }
3522 #[doc = "Port bit set/reset register (GPIOn_BSRR)"] 3866 #[doc = "GPIO port input data register"]
3523 pub fn bsrr(self) -> Reg<regs::Bsrr, W> { 3867 pub fn idr(self) -> Reg<regs::Idr, R> {
3524 unsafe { Reg::from_ptr(self.0.add(16usize)) } 3868 unsafe { Reg::from_ptr(self.0.add(16usize)) }
3525 } 3869 }
3526 #[doc = "Port bit reset register (GPIOn_BRR)"] 3870 #[doc = "GPIO port output data register"]
3527 pub fn brr(self) -> Reg<regs::Brr, W> { 3871 pub fn odr(self) -> Reg<regs::Odr, RW> {
3528 unsafe { Reg::from_ptr(self.0.add(20usize)) } 3872 unsafe { Reg::from_ptr(self.0.add(20usize)) }
3529 } 3873 }
3530 #[doc = "Port configuration lock register"] 3874 #[doc = "GPIO port bit set/reset register"]
3531 pub fn lckr(self) -> Reg<regs::Lckr, RW> { 3875 pub fn bsrr(self) -> Reg<regs::Bsrr, W> {
3532 unsafe { Reg::from_ptr(self.0.add(24usize)) } 3876 unsafe { Reg::from_ptr(self.0.add(24usize)) }
3533 } 3877 }
3534 } 3878 #[doc = "GPIO port configuration lock register"]
3535 pub mod vals { 3879 pub fn lckr(self) -> Reg<regs::Lckr, RW> {
3536 use crate::generic::*; 3880 unsafe { Reg::from_ptr(self.0.add(28usize)) }
3537 #[repr(transparent)]
3538 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3539 pub struct Odr(pub u8);
3540 impl Odr {
3541 #[doc = "Set output to logic low"]
3542 pub const LOW: Self = Self(0);
3543 #[doc = "Set output to logic high"]
3544 pub const HIGH: Self = Self(0x01);
3545 }
3546 #[repr(transparent)]
3547 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3548 pub struct Lckk(pub u8);
3549 impl Lckk {
3550 #[doc = "Port configuration lock key not active"]
3551 pub const NOTACTIVE: Self = Self(0);
3552 #[doc = "Port configuration lock key active"]
3553 pub const ACTIVE: Self = Self(0x01);
3554 }
3555 #[repr(transparent)]
3556 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3557 pub struct Cnf(pub u8);
3558 impl Cnf {
3559 #[doc = "Analog mode / Push-Pull mode"]
3560 pub const PUSHPULL: Self = Self(0);
3561 #[doc = "Floating input (reset state) / Open Drain-Mode"]
3562 pub const OPENDRAIN: Self = Self(0x01);
3563 #[doc = "Input with pull-up/pull-down / Alternate Function Push-Pull Mode"]
3564 pub const ALTPUSHPULL: Self = Self(0x02);
3565 #[doc = "Alternate Function Open-Drain Mode"]
3566 pub const ALTOPENDRAIN: Self = Self(0x03);
3567 }
3568 #[repr(transparent)]
3569 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3570 pub struct Idr(pub u8);
3571 impl Idr {
3572 #[doc = "Input is logic low"]
3573 pub const LOW: Self = Self(0);
3574 #[doc = "Input is logic high"]
3575 pub const HIGH: Self = Self(0x01);
3576 }
3577 #[repr(transparent)]
3578 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3579 pub struct Bsw(pub u8);
3580 impl Bsw {
3581 #[doc = "No action on the corresponding ODx bit"]
3582 pub const NOACTION: Self = Self(0);
3583 #[doc = "Sets the corresponding ODRx bit"]
3584 pub const SET: Self = Self(0x01);
3585 }
3586 #[repr(transparent)]
3587 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3588 pub struct Brw(pub u8);
3589 impl Brw {
3590 #[doc = "No action on the corresponding ODx bit"]
3591 pub const NOACTION: Self = Self(0);
3592 #[doc = "Reset the ODx bit"]
3593 pub const RESET: Self = Self(0x01);
3594 }
3595 #[repr(transparent)]
3596 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
3597 pub struct Mode(pub u8);
3598 impl Mode {
3599 #[doc = "Input mode (reset state)"]
3600 pub const INPUT: Self = Self(0);
3601 #[doc = "Output mode 10 MHz"]
3602 pub const OUTPUT: Self = Self(0x01);
3603 #[doc = "Output mode 2 MHz"]
3604 pub const OUTPUT2: Self = Self(0x02);
3605 #[doc = "Output mode 50 MHz"]
3606 pub const OUTPUT50: Self = Self(0x03);
3607 } 3881 }
3608 #[repr(transparent)] 3882 #[doc = "GPIO alternate function register (low, high)"]
3609 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 3883 pub fn afr(self, n: usize) -> Reg<regs::Afr, RW> {
3610 pub struct Lck(pub u8); 3884 assert!(n < 2usize);
3611 impl Lck { 3885 unsafe { Reg::from_ptr(self.0.add(32usize + n * 4usize)) }
3612 #[doc = "Port configuration not locked"]
3613 pub const UNLOCKED: Self = Self(0);
3614 #[doc = "Port configuration locked"]
3615 pub const LOCKED: Self = Self(0x01);
3616 } 3886 }
3617 } 3887 }
3618 pub mod regs { 3888 pub mod regs {
3619 use crate::generic::*; 3889 use crate::generic::*;
3620 #[doc = "Port bit reset register (GPIOn_BRR)"] 3890 #[doc = "GPIO port input data register"]
3621 #[repr(transparent)] 3891 #[repr(transparent)]
3622 #[derive(Copy, Clone, Eq, PartialEq)] 3892 #[derive(Copy, Clone, Eq, PartialEq)]
3623 pub struct Brr(pub u32); 3893 pub struct Idr(pub u32);
3624 impl Brr { 3894 impl Idr {
3625 #[doc = "Reset bit"] 3895 #[doc = "Port input data (y = 0..15)"]
3626 pub fn br(&self, n: usize) -> bool { 3896 pub fn idr(&self, n: usize) -> super::vals::Idr {
3627 assert!(n < 16usize); 3897 assert!(n < 16usize);
3628 let offs = 0usize + n * 1usize; 3898 let offs = 0usize + n * 1usize;
3629 let val = (self.0 >> offs) & 0x01; 3899 let val = (self.0 >> offs) & 0x01;
3630 val != 0 3900 super::vals::Idr(val as u8)
3631 } 3901 }
3632 #[doc = "Reset bit"] 3902 #[doc = "Port input data (y = 0..15)"]
3633 pub fn set_br(&mut self, n: usize, val: bool) { 3903 pub fn set_idr(&mut self, n: usize, val: super::vals::Idr) {
3634 assert!(n < 16usize); 3904 assert!(n < 16usize);
3635 let offs = 0usize + n * 1usize; 3905 let offs = 0usize + n * 1usize;
3636 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 3906 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
3637 } 3907 }
3638 } 3908 }
3639 impl Default for Brr { 3909 impl Default for Idr {
3640 fn default() -> Brr { 3910 fn default() -> Idr {
3641 Brr(0) 3911 Idr(0)
3642 } 3912 }
3643 } 3913 }
3644 #[doc = "Port input data register (GPIOn_IDR)"] 3914 #[doc = "GPIO port pull-up/pull-down register"]
3645 #[repr(transparent)] 3915 #[repr(transparent)]
3646 #[derive(Copy, Clone, Eq, PartialEq)] 3916 #[derive(Copy, Clone, Eq, PartialEq)]
3647 pub struct Idr(pub u32); 3917 pub struct Pupdr(pub u32);
3648 impl Idr { 3918 impl Pupdr {
3649 #[doc = "Port input data"] 3919 #[doc = "Port x configuration bits (y = 0..15)"]
3650 pub fn idr(&self, n: usize) -> super::vals::Idr { 3920 pub fn pupdr(&self, n: usize) -> super::vals::Pupdr {
3921 assert!(n < 16usize);
3922 let offs = 0usize + n * 2usize;
3923 let val = (self.0 >> offs) & 0x03;
3924 super::vals::Pupdr(val as u8)
3925 }
3926 #[doc = "Port x configuration bits (y = 0..15)"]
3927 pub fn set_pupdr(&mut self, n: usize, val: super::vals::Pupdr) {
3928 assert!(n < 16usize);
3929 let offs = 0usize + n * 2usize;
3930 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
3931 }
3932 }
3933 impl Default for Pupdr {
3934 fn default() -> Pupdr {
3935 Pupdr(0)
3936 }
3937 }
3938 #[doc = "GPIO port output type register"]
3939 #[repr(transparent)]
3940 #[derive(Copy, Clone, Eq, PartialEq)]
3941 pub struct Otyper(pub u32);
3942 impl Otyper {
3943 #[doc = "Port x configuration bits (y = 0..15)"]
3944 pub fn ot(&self, n: usize) -> super::vals::Ot {
3651 assert!(n < 16usize); 3945 assert!(n < 16usize);
3652 let offs = 0usize + n * 1usize; 3946 let offs = 0usize + n * 1usize;
3653 let val = (self.0 >> offs) & 0x01; 3947 let val = (self.0 >> offs) & 0x01;
3654 super::vals::Idr(val as u8) 3948 super::vals::Ot(val as u8)
3655 } 3949 }
3656 #[doc = "Port input data"] 3950 #[doc = "Port x configuration bits (y = 0..15)"]
3657 pub fn set_idr(&mut self, n: usize, val: super::vals::Idr) { 3951 pub fn set_ot(&mut self, n: usize, val: super::vals::Ot) {
3658 assert!(n < 16usize); 3952 assert!(n < 16usize);
3659 let offs = 0usize + n * 1usize; 3953 let offs = 0usize + n * 1usize;
3660 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); 3954 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
3661 } 3955 }
3662 } 3956 }
3663 impl Default for Idr { 3957 impl Default for Otyper {
3664 fn default() -> Idr { 3958 fn default() -> Otyper {
3665 Idr(0) 3959 Otyper(0)
3666 } 3960 }
3667 } 3961 }
3668 #[doc = "Port configuration register (GPIOn_CRx)"] 3962 #[doc = "GPIO alternate function register"]
3669 #[repr(transparent)] 3963 #[repr(transparent)]
3670 #[derive(Copy, Clone, Eq, PartialEq)] 3964 #[derive(Copy, Clone, Eq, PartialEq)]
3671 pub struct Cr(pub u32); 3965 pub struct Afr(pub u32);
3672 impl Cr { 3966 impl Afr {
3673 #[doc = "Port n mode bits"] 3967 #[doc = "Alternate function selection for port x bit y (y = 0..15)"]
3674 pub fn mode(&self, n: usize) -> super::vals::Mode { 3968 pub fn afr(&self, n: usize) -> super::vals::Afr {
3675 assert!(n < 8usize); 3969 assert!(n < 8usize);
3676 let offs = 0usize + n * 4usize; 3970 let offs = 0usize + n * 4usize;
3677 let val = (self.0 >> offs) & 0x03; 3971 let val = (self.0 >> offs) & 0x0f;
3678 super::vals::Mode(val as u8) 3972 super::vals::Afr(val as u8)
3679 } 3973 }
3680 #[doc = "Port n mode bits"] 3974 #[doc = "Alternate function selection for port x bit y (y = 0..15)"]
3681 pub fn set_mode(&mut self, n: usize, val: super::vals::Mode) { 3975 pub fn set_afr(&mut self, n: usize, val: super::vals::Afr) {
3682 assert!(n < 8usize); 3976 assert!(n < 8usize);
3683 let offs = 0usize + n * 4usize; 3977 let offs = 0usize + n * 4usize;
3684 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); 3978 self.0 = (self.0 & !(0x0f << offs)) | (((val.0 as u32) & 0x0f) << offs);
3685 }
3686 #[doc = "Port n configuration bits"]
3687 pub fn cnf(&self, n: usize) -> super::vals::Cnf {
3688 assert!(n < 8usize);
3689 let offs = 2usize + n * 4usize;
3690 let val = (self.0 >> offs) & 0x03;
3691 super::vals::Cnf(val as u8)
3692 }
3693 #[doc = "Port n configuration bits"]
3694 pub fn set_cnf(&mut self, n: usize, val: super::vals::Cnf) {
3695 assert!(n < 8usize);
3696 let offs = 2usize + n * 4usize;
3697 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
3698 } 3979 }
3699 } 3980 }
3700 impl Default for Cr { 3981 impl Default for Afr {
3701 fn default() -> Cr { 3982 fn default() -> Afr {
3702 Cr(0) 3983 Afr(0)
3703 } 3984 }
3704 } 3985 }
3705 #[doc = "Port configuration lock register"] 3986 #[doc = "GPIO port configuration lock register"]
3706 #[repr(transparent)] 3987 #[repr(transparent)]
3707 #[derive(Copy, Clone, Eq, PartialEq)] 3988 #[derive(Copy, Clone, Eq, PartialEq)]
3708 pub struct Lckr(pub u32); 3989 pub struct Lckr(pub u32);
3709 impl Lckr { 3990 impl Lckr {
3710 #[doc = "Port A Lock bit"] 3991 #[doc = "Port x lock bit y (y= 0..15)"]
3711 pub fn lck(&self, n: usize) -> super::vals::Lck { 3992 pub fn lck(&self, n: usize) -> super::vals::Lck {
3712 assert!(n < 16usize); 3993 assert!(n < 16usize);
3713 let offs = 0usize + n * 1usize; 3994 let offs = 0usize + n * 1usize;
3714 let val = (self.0 >> offs) & 0x01; 3995 let val = (self.0 >> offs) & 0x01;
3715 super::vals::Lck(val as u8) 3996 super::vals::Lck(val as u8)
3716 } 3997 }
3717 #[doc = "Port A Lock bit"] 3998 #[doc = "Port x lock bit y (y= 0..15)"]
3718 pub fn set_lck(&mut self, n: usize, val: super::vals::Lck) { 3999 pub fn set_lck(&mut self, n: usize, val: super::vals::Lck) {
3719 assert!(n < 16usize); 4000 assert!(n < 16usize);
3720 let offs = 0usize + n * 1usize; 4001 let offs = 0usize + n * 1usize;
3721 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); 4002 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
3722 } 4003 }
3723 #[doc = "Lock key"] 4004 #[doc = "Port x lock bit y (y= 0..15)"]
3724 pub const fn lckk(&self) -> super::vals::Lckk { 4005 pub const fn lckk(&self) -> super::vals::Lckk {
3725 let val = (self.0 >> 16usize) & 0x01; 4006 let val = (self.0 >> 16usize) & 0x01;
3726 super::vals::Lckk(val as u8) 4007 super::vals::Lckk(val as u8)
3727 } 4008 }
3728 #[doc = "Lock key"] 4009 #[doc = "Port x lock bit y (y= 0..15)"]
3729 pub fn set_lckk(&mut self, val: super::vals::Lckk) { 4010 pub fn set_lckk(&mut self, val: super::vals::Lckk) {
3730 self.0 = (self.0 & !(0x01 << 16usize)) | (((val.0 as u32) & 0x01) << 16usize); 4011 self.0 = (self.0 & !(0x01 << 16usize)) | (((val.0 as u32) & 0x01) << 16usize);
3731 } 4012 }
@@ -3735,32 +4016,32 @@ pub mod gpio_v1 {
3735 Lckr(0) 4016 Lckr(0)
3736 } 4017 }
3737 } 4018 }
3738 #[doc = "Port bit set/reset register (GPIOn_BSRR)"] 4019 #[doc = "GPIO port bit set/reset register"]
3739 #[repr(transparent)] 4020 #[repr(transparent)]
3740 #[derive(Copy, Clone, Eq, PartialEq)] 4021 #[derive(Copy, Clone, Eq, PartialEq)]
3741 pub struct Bsrr(pub u32); 4022 pub struct Bsrr(pub u32);
3742 impl Bsrr { 4023 impl Bsrr {
3743 #[doc = "Set bit"] 4024 #[doc = "Port x set bit y (y= 0..15)"]
3744 pub fn bs(&self, n: usize) -> bool { 4025 pub fn bs(&self, n: usize) -> bool {
3745 assert!(n < 16usize); 4026 assert!(n < 16usize);
3746 let offs = 0usize + n * 1usize; 4027 let offs = 0usize + n * 1usize;
3747 let val = (self.0 >> offs) & 0x01; 4028 let val = (self.0 >> offs) & 0x01;
3748 val != 0 4029 val != 0
3749 } 4030 }
3750 #[doc = "Set bit"] 4031 #[doc = "Port x set bit y (y= 0..15)"]
3751 pub fn set_bs(&mut self, n: usize, val: bool) { 4032 pub fn set_bs(&mut self, n: usize, val: bool) {
3752 assert!(n < 16usize); 4033 assert!(n < 16usize);
3753 let offs = 0usize + n * 1usize; 4034 let offs = 0usize + n * 1usize;
3754 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 4035 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
3755 } 4036 }
3756 #[doc = "Reset bit"] 4037 #[doc = "Port x set bit y (y= 0..15)"]
3757 pub fn br(&self, n: usize) -> bool { 4038 pub fn br(&self, n: usize) -> bool {
3758 assert!(n < 16usize); 4039 assert!(n < 16usize);
3759 let offs = 16usize + n * 1usize; 4040 let offs = 16usize + n * 1usize;
3760 let val = (self.0 >> offs) & 0x01; 4041 let val = (self.0 >> offs) & 0x01;
3761 val != 0 4042 val != 0
3762 } 4043 }
3763 #[doc = "Reset bit"] 4044 #[doc = "Port x set bit y (y= 0..15)"]
3764 pub fn set_br(&mut self, n: usize, val: bool) { 4045 pub fn set_br(&mut self, n: usize, val: bool) {
3765 assert!(n < 16usize); 4046 assert!(n < 16usize);
3766 let offs = 16usize + n * 1usize; 4047 let offs = 16usize + n * 1usize;
@@ -3772,19 +4053,19 @@ pub mod gpio_v1 {
3772 Bsrr(0) 4053 Bsrr(0)
3773 } 4054 }
3774 } 4055 }
3775 #[doc = "Port output data register (GPIOn_ODR)"] 4056 #[doc = "GPIO port output data register"]
3776 #[repr(transparent)] 4057 #[repr(transparent)]
3777 #[derive(Copy, Clone, Eq, PartialEq)] 4058 #[derive(Copy, Clone, Eq, PartialEq)]
3778 pub struct Odr(pub u32); 4059 pub struct Odr(pub u32);
3779 impl Odr { 4060 impl Odr {
3780 #[doc = "Port output data"] 4061 #[doc = "Port output data (y = 0..15)"]
3781 pub fn odr(&self, n: usize) -> super::vals::Odr { 4062 pub fn odr(&self, n: usize) -> super::vals::Odr {
3782 assert!(n < 16usize); 4063 assert!(n < 16usize);
3783 let offs = 0usize + n * 1usize; 4064 let offs = 0usize + n * 1usize;
3784 let val = (self.0 >> offs) & 0x01; 4065 let val = (self.0 >> offs) & 0x01;
3785 super::vals::Odr(val as u8) 4066 super::vals::Odr(val as u8)
3786 } 4067 }
3787 #[doc = "Port output data"] 4068 #[doc = "Port output data (y = 0..15)"]
3788 pub fn set_odr(&mut self, n: usize, val: super::vals::Odr) { 4069 pub fn set_odr(&mut self, n: usize, val: super::vals::Odr) {
3789 assert!(n < 16usize); 4070 assert!(n < 16usize);
3790 let offs = 0usize + n * 1usize; 4071 let offs = 0usize + n * 1usize;
@@ -3796,410 +4077,52 @@ pub mod gpio_v1 {
3796 Odr(0) 4077 Odr(0)
3797 } 4078 }
3798 } 4079 }
3799 } 4080 #[doc = "GPIO port output speed register"]
3800}
3801pub mod spi_v1 {
3802 use crate::generic::*;
3803 #[doc = "Serial peripheral interface"]
3804 #[derive(Copy, Clone)]
3805 pub struct Spi(pub *mut u8);
3806 unsafe impl Send for Spi {}
3807 unsafe impl Sync for Spi {}
3808 impl Spi {
3809 #[doc = "control register 1"]
3810 pub fn cr1(self) -> Reg<regs::Cr1, RW> {
3811 unsafe { Reg::from_ptr(self.0.add(0usize)) }
3812 }
3813 #[doc = "control register 2"]
3814 pub fn cr2(self) -> Reg<regs::Cr2, RW> {
3815 unsafe { Reg::from_ptr(self.0.add(4usize)) }
3816 }
3817 #[doc = "status register"]
3818 pub fn sr(self) -> Reg<regs::Sr, RW> {
3819 unsafe { Reg::from_ptr(self.0.add(8usize)) }
3820 }
3821 #[doc = "data register"]
3822 pub fn dr(self) -> Reg<regs::Dr, RW> {
3823 unsafe { Reg::from_ptr(self.0.add(12usize)) }
3824 }
3825 #[doc = "CRC polynomial register"]
3826 pub fn crcpr(self) -> Reg<regs::Crcpr, RW> {
3827 unsafe { Reg::from_ptr(self.0.add(16usize)) }
3828 }
3829 #[doc = "RX CRC register"]
3830 pub fn rxcrcr(self) -> Reg<regs::Rxcrcr, R> {
3831 unsafe { Reg::from_ptr(self.0.add(20usize)) }
3832 }
3833 #[doc = "TX CRC register"]
3834 pub fn txcrcr(self) -> Reg<regs::Txcrcr, R> {
3835 unsafe { Reg::from_ptr(self.0.add(24usize)) }
3836 }
3837 }
3838 pub mod regs {
3839 use crate::generic::*;
3840 #[doc = "TX CRC register"]
3841 #[repr(transparent)]
3842 #[derive(Copy, Clone, Eq, PartialEq)]
3843 pub struct Txcrcr(pub u32);
3844 impl Txcrcr {
3845 #[doc = "Tx CRC register"]
3846 pub const fn tx_crc(&self) -> u16 {
3847 let val = (self.0 >> 0usize) & 0xffff;
3848 val as u16
3849 }
3850 #[doc = "Tx CRC register"]
3851 pub fn set_tx_crc(&mut self, val: u16) {
3852 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
3853 }
3854 }
3855 impl Default for Txcrcr {
3856 fn default() -> Txcrcr {
3857 Txcrcr(0)
3858 }
3859 }
3860 #[doc = "RX CRC register"]
3861 #[repr(transparent)]
3862 #[derive(Copy, Clone, Eq, PartialEq)]
3863 pub struct Rxcrcr(pub u32);
3864 impl Rxcrcr {
3865 #[doc = "Rx CRC register"]
3866 pub const fn rx_crc(&self) -> u16 {
3867 let val = (self.0 >> 0usize) & 0xffff;
3868 val as u16
3869 }
3870 #[doc = "Rx CRC register"]
3871 pub fn set_rx_crc(&mut self, val: u16) {
3872 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
3873 }
3874 }
3875 impl Default for Rxcrcr {
3876 fn default() -> Rxcrcr {
3877 Rxcrcr(0)
3878 }
3879 }
3880 #[doc = "control register 2"]
3881 #[repr(transparent)]
3882 #[derive(Copy, Clone, Eq, PartialEq)]
3883 pub struct Cr2(pub u32);
3884 impl Cr2 {
3885 #[doc = "Rx buffer DMA enable"]
3886 pub const fn rxdmaen(&self) -> bool {
3887 let val = (self.0 >> 0usize) & 0x01;
3888 val != 0
3889 }
3890 #[doc = "Rx buffer DMA enable"]
3891 pub fn set_rxdmaen(&mut self, val: bool) {
3892 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
3893 }
3894 #[doc = "Tx buffer DMA enable"]
3895 pub const fn txdmaen(&self) -> bool {
3896 let val = (self.0 >> 1usize) & 0x01;
3897 val != 0
3898 }
3899 #[doc = "Tx buffer DMA enable"]
3900 pub fn set_txdmaen(&mut self, val: bool) {
3901 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
3902 }
3903 #[doc = "SS output enable"]
3904 pub const fn ssoe(&self) -> bool {
3905 let val = (self.0 >> 2usize) & 0x01;
3906 val != 0
3907 }
3908 #[doc = "SS output enable"]
3909 pub fn set_ssoe(&mut self, val: bool) {
3910 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
3911 }
3912 #[doc = "Frame format"]
3913 pub const fn frf(&self) -> super::vals::Frf {
3914 let val = (self.0 >> 4usize) & 0x01;
3915 super::vals::Frf(val as u8)
3916 }
3917 #[doc = "Frame format"]
3918 pub fn set_frf(&mut self, val: super::vals::Frf) {
3919 self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize);
3920 }
3921 #[doc = "Error interrupt enable"]
3922 pub const fn errie(&self) -> bool {
3923 let val = (self.0 >> 5usize) & 0x01;
3924 val != 0
3925 }
3926 #[doc = "Error interrupt enable"]
3927 pub fn set_errie(&mut self, val: bool) {
3928 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
3929 }
3930 #[doc = "RX buffer not empty interrupt enable"]
3931 pub const fn rxneie(&self) -> bool {
3932 let val = (self.0 >> 6usize) & 0x01;
3933 val != 0
3934 }
3935 #[doc = "RX buffer not empty interrupt enable"]
3936 pub fn set_rxneie(&mut self, val: bool) {
3937 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
3938 }
3939 #[doc = "Tx buffer empty interrupt enable"]
3940 pub const fn txeie(&self) -> bool {
3941 let val = (self.0 >> 7usize) & 0x01;
3942 val != 0
3943 }
3944 #[doc = "Tx buffer empty interrupt enable"]
3945 pub fn set_txeie(&mut self, val: bool) {
3946 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
3947 }
3948 }
3949 impl Default for Cr2 {
3950 fn default() -> Cr2 {
3951 Cr2(0)
3952 }
3953 }
3954 #[doc = "control register 1"]
3955 #[repr(transparent)]
3956 #[derive(Copy, Clone, Eq, PartialEq)]
3957 pub struct Cr1(pub u32);
3958 impl Cr1 {
3959 #[doc = "Clock phase"]
3960 pub const fn cpha(&self) -> super::vals::Cpha {
3961 let val = (self.0 >> 0usize) & 0x01;
3962 super::vals::Cpha(val as u8)
3963 }
3964 #[doc = "Clock phase"]
3965 pub fn set_cpha(&mut self, val: super::vals::Cpha) {
3966 self.0 = (self.0 & !(0x01 << 0usize)) | (((val.0 as u32) & 0x01) << 0usize);
3967 }
3968 #[doc = "Clock polarity"]
3969 pub const fn cpol(&self) -> super::vals::Cpol {
3970 let val = (self.0 >> 1usize) & 0x01;
3971 super::vals::Cpol(val as u8)
3972 }
3973 #[doc = "Clock polarity"]
3974 pub fn set_cpol(&mut self, val: super::vals::Cpol) {
3975 self.0 = (self.0 & !(0x01 << 1usize)) | (((val.0 as u32) & 0x01) << 1usize);
3976 }
3977 #[doc = "Master selection"]
3978 pub const fn mstr(&self) -> super::vals::Mstr {
3979 let val = (self.0 >> 2usize) & 0x01;
3980 super::vals::Mstr(val as u8)
3981 }
3982 #[doc = "Master selection"]
3983 pub fn set_mstr(&mut self, val: super::vals::Mstr) {
3984 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
3985 }
3986 #[doc = "Baud rate control"]
3987 pub const fn br(&self) -> super::vals::Br {
3988 let val = (self.0 >> 3usize) & 0x07;
3989 super::vals::Br(val as u8)
3990 }
3991 #[doc = "Baud rate control"]
3992 pub fn set_br(&mut self, val: super::vals::Br) {
3993 self.0 = (self.0 & !(0x07 << 3usize)) | (((val.0 as u32) & 0x07) << 3usize);
3994 }
3995 #[doc = "SPI enable"]
3996 pub const fn spe(&self) -> bool {
3997 let val = (self.0 >> 6usize) & 0x01;
3998 val != 0
3999 }
4000 #[doc = "SPI enable"]
4001 pub fn set_spe(&mut self, val: bool) {
4002 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
4003 }
4004 #[doc = "Frame format"]
4005 pub const fn lsbfirst(&self) -> super::vals::Lsbfirst {
4006 let val = (self.0 >> 7usize) & 0x01;
4007 super::vals::Lsbfirst(val as u8)
4008 }
4009 #[doc = "Frame format"]
4010 pub fn set_lsbfirst(&mut self, val: super::vals::Lsbfirst) {
4011 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
4012 }
4013 #[doc = "Internal slave select"]
4014 pub const fn ssi(&self) -> bool {
4015 let val = (self.0 >> 8usize) & 0x01;
4016 val != 0
4017 }
4018 #[doc = "Internal slave select"]
4019 pub fn set_ssi(&mut self, val: bool) {
4020 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
4021 }
4022 #[doc = "Software slave management"]
4023 pub const fn ssm(&self) -> bool {
4024 let val = (self.0 >> 9usize) & 0x01;
4025 val != 0
4026 }
4027 #[doc = "Software slave management"]
4028 pub fn set_ssm(&mut self, val: bool) {
4029 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
4030 }
4031 #[doc = "Receive only"]
4032 pub const fn rxonly(&self) -> super::vals::Rxonly {
4033 let val = (self.0 >> 10usize) & 0x01;
4034 super::vals::Rxonly(val as u8)
4035 }
4036 #[doc = "Receive only"]
4037 pub fn set_rxonly(&mut self, val: super::vals::Rxonly) {
4038 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize);
4039 }
4040 #[doc = "Data frame format"]
4041 pub const fn dff(&self) -> super::vals::Dff {
4042 let val = (self.0 >> 11usize) & 0x01;
4043 super::vals::Dff(val as u8)
4044 }
4045 #[doc = "Data frame format"]
4046 pub fn set_dff(&mut self, val: super::vals::Dff) {
4047 self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize);
4048 }
4049 #[doc = "CRC transfer next"]
4050 pub const fn crcnext(&self) -> super::vals::Crcnext {
4051 let val = (self.0 >> 12usize) & 0x01;
4052 super::vals::Crcnext(val as u8)
4053 }
4054 #[doc = "CRC transfer next"]
4055 pub fn set_crcnext(&mut self, val: super::vals::Crcnext) {
4056 self.0 = (self.0 & !(0x01 << 12usize)) | (((val.0 as u32) & 0x01) << 12usize);
4057 }
4058 #[doc = "Hardware CRC calculation enable"]
4059 pub const fn crcen(&self) -> bool {
4060 let val = (self.0 >> 13usize) & 0x01;
4061 val != 0
4062 }
4063 #[doc = "Hardware CRC calculation enable"]
4064 pub fn set_crcen(&mut self, val: bool) {
4065 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
4066 }
4067 #[doc = "Output enable in bidirectional mode"]
4068 pub const fn bidioe(&self) -> super::vals::Bidioe {
4069 let val = (self.0 >> 14usize) & 0x01;
4070 super::vals::Bidioe(val as u8)
4071 }
4072 #[doc = "Output enable in bidirectional mode"]
4073 pub fn set_bidioe(&mut self, val: super::vals::Bidioe) {
4074 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
4075 }
4076 #[doc = "Bidirectional data mode enable"]
4077 pub const fn bidimode(&self) -> super::vals::Bidimode {
4078 let val = (self.0 >> 15usize) & 0x01;
4079 super::vals::Bidimode(val as u8)
4080 }
4081 #[doc = "Bidirectional data mode enable"]
4082 pub fn set_bidimode(&mut self, val: super::vals::Bidimode) {
4083 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize);
4084 }
4085 }
4086 impl Default for Cr1 {
4087 fn default() -> Cr1 {
4088 Cr1(0)
4089 }
4090 }
4091 #[doc = "data register"]
4092 #[repr(transparent)]
4093 #[derive(Copy, Clone, Eq, PartialEq)]
4094 pub struct Dr(pub u32);
4095 impl Dr {
4096 #[doc = "Data register"]
4097 pub const fn dr(&self) -> u16 {
4098 let val = (self.0 >> 0usize) & 0xffff;
4099 val as u16
4100 }
4101 #[doc = "Data register"]
4102 pub fn set_dr(&mut self, val: u16) {
4103 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
4104 }
4105 }
4106 impl Default for Dr {
4107 fn default() -> Dr {
4108 Dr(0)
4109 }
4110 }
4111 #[doc = "CRC polynomial register"]
4112 #[repr(transparent)] 4081 #[repr(transparent)]
4113 #[derive(Copy, Clone, Eq, PartialEq)] 4082 #[derive(Copy, Clone, Eq, PartialEq)]
4114 pub struct Crcpr(pub u32); 4083 pub struct Ospeedr(pub u32);
4115 impl Crcpr { 4084 impl Ospeedr {
4116 #[doc = "CRC polynomial register"] 4085 #[doc = "Port x configuration bits (y = 0..15)"]
4117 pub const fn crcpoly(&self) -> u16 { 4086 pub fn ospeedr(&self, n: usize) -> super::vals::Ospeedr {
4118 let val = (self.0 >> 0usize) & 0xffff; 4087 assert!(n < 16usize);
4119 val as u16 4088 let offs = 0usize + n * 2usize;
4089 let val = (self.0 >> offs) & 0x03;
4090 super::vals::Ospeedr(val as u8)
4120 } 4091 }
4121 #[doc = "CRC polynomial register"] 4092 #[doc = "Port x configuration bits (y = 0..15)"]
4122 pub fn set_crcpoly(&mut self, val: u16) { 4093 pub fn set_ospeedr(&mut self, n: usize, val: super::vals::Ospeedr) {
4123 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); 4094 assert!(n < 16usize);
4095 let offs = 0usize + n * 2usize;
4096 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
4124 } 4097 }
4125 } 4098 }
4126 impl Default for Crcpr { 4099 impl Default for Ospeedr {
4127 fn default() -> Crcpr { 4100 fn default() -> Ospeedr {
4128 Crcpr(0) 4101 Ospeedr(0)
4129 } 4102 }
4130 } 4103 }
4131 #[doc = "status register"] 4104 #[doc = "GPIO port mode register"]
4132 #[repr(transparent)] 4105 #[repr(transparent)]
4133 #[derive(Copy, Clone, Eq, PartialEq)] 4106 #[derive(Copy, Clone, Eq, PartialEq)]
4134 pub struct Sr(pub u32); 4107 pub struct Moder(pub u32);
4135 impl Sr { 4108 impl Moder {
4136 #[doc = "Receive buffer not empty"] 4109 #[doc = "Port x configuration bits (y = 0..15)"]
4137 pub const fn rxne(&self) -> bool { 4110 pub fn moder(&self, n: usize) -> super::vals::Moder {
4138 let val = (self.0 >> 0usize) & 0x01; 4111 assert!(n < 16usize);
4139 val != 0 4112 let offs = 0usize + n * 2usize;
4140 } 4113 let val = (self.0 >> offs) & 0x03;
4141 #[doc = "Receive buffer not empty"] 4114 super::vals::Moder(val as u8)
4142 pub fn set_rxne(&mut self, val: bool) {
4143 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
4144 }
4145 #[doc = "Transmit buffer empty"]
4146 pub const fn txe(&self) -> bool {
4147 let val = (self.0 >> 1usize) & 0x01;
4148 val != 0
4149 }
4150 #[doc = "Transmit buffer empty"]
4151 pub fn set_txe(&mut self, val: bool) {
4152 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
4153 }
4154 #[doc = "CRC error flag"]
4155 pub const fn crcerr(&self) -> bool {
4156 let val = (self.0 >> 4usize) & 0x01;
4157 val != 0
4158 }
4159 #[doc = "CRC error flag"]
4160 pub fn set_crcerr(&mut self, val: bool) {
4161 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
4162 }
4163 #[doc = "Mode fault"]
4164 pub const fn modf(&self) -> bool {
4165 let val = (self.0 >> 5usize) & 0x01;
4166 val != 0
4167 }
4168 #[doc = "Mode fault"]
4169 pub fn set_modf(&mut self, val: bool) {
4170 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
4171 }
4172 #[doc = "Overrun flag"]
4173 pub const fn ovr(&self) -> bool {
4174 let val = (self.0 >> 6usize) & 0x01;
4175 val != 0
4176 }
4177 #[doc = "Overrun flag"]
4178 pub fn set_ovr(&mut self, val: bool) {
4179 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
4180 }
4181 #[doc = "Busy flag"]
4182 pub const fn bsy(&self) -> bool {
4183 let val = (self.0 >> 7usize) & 0x01;
4184 val != 0
4185 }
4186 #[doc = "Busy flag"]
4187 pub fn set_bsy(&mut self, val: bool) {
4188 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
4189 }
4190 #[doc = "TI frame format error"]
4191 pub const fn fre(&self) -> bool {
4192 let val = (self.0 >> 8usize) & 0x01;
4193 val != 0
4194 } 4115 }
4195 #[doc = "TI frame format error"] 4116 #[doc = "Port x configuration bits (y = 0..15)"]
4196 pub fn set_fre(&mut self, val: bool) { 4117 pub fn set_moder(&mut self, n: usize, val: super::vals::Moder) {
4197 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 4118 assert!(n < 16usize);
4119 let offs = 0usize + n * 2usize;
4120 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
4198 } 4121 }
4199 } 4122 }
4200 impl Default for Sr { 4123 impl Default for Moder {
4201 fn default() -> Sr { 4124 fn default() -> Moder {
4202 Sr(0) 4125 Moder(0)
4203 } 4126 }
4204 } 4127 }
4205 } 4128 }
@@ -4207,738 +4130,136 @@ pub mod spi_v1 {
4207 use crate::generic::*; 4130 use crate::generic::*;
4208 #[repr(transparent)] 4131 #[repr(transparent)]
4209 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4132 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4210 pub struct Frf(pub u8); 4133 pub struct Brw(pub u8);
4211 impl Frf { 4134 impl Brw {
4212 #[doc = "SPI Motorola mode"] 4135 #[doc = "Resets the corresponding ODRx bit"]
4213 pub const MOTOROLA: Self = Self(0); 4136 pub const RESET: Self = Self(0x01);
4214 #[doc = "SPI TI mode"]
4215 pub const TI: Self = Self(0x01);
4216 }
4217 #[repr(transparent)]
4218 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4219 pub struct Iscfg(pub u8);
4220 impl Iscfg {
4221 #[doc = "Slave - transmit"]
4222 pub const SLAVETX: Self = Self(0);
4223 #[doc = "Slave - receive"]
4224 pub const SLAVERX: Self = Self(0x01);
4225 #[doc = "Master - transmit"]
4226 pub const MASTERTX: Self = Self(0x02);
4227 #[doc = "Master - receive"]
4228 pub const MASTERRX: Self = Self(0x03);
4229 }
4230 #[repr(transparent)]
4231 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4232 pub struct Bidioe(pub u8);
4233 impl Bidioe {
4234 #[doc = "Output disabled (receive-only mode)"]
4235 pub const OUTPUTDISABLED: Self = Self(0);
4236 #[doc = "Output enabled (transmit-only mode)"]
4237 pub const OUTPUTENABLED: Self = Self(0x01);
4238 }
4239 #[repr(transparent)]
4240 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4241 pub struct Dff(pub u8);
4242 impl Dff {
4243 #[doc = "8-bit data frame format is selected for transmission/reception"]
4244 pub const EIGHTBIT: Self = Self(0);
4245 #[doc = "16-bit data frame format is selected for transmission/reception"]
4246 pub const SIXTEENBIT: Self = Self(0x01);
4247 }
4248 #[repr(transparent)]
4249 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4250 pub struct Bidimode(pub u8);
4251 impl Bidimode {
4252 #[doc = "2-line unidirectional data mode selected"]
4253 pub const UNIDIRECTIONAL: Self = Self(0);
4254 #[doc = "1-line bidirectional data mode selected"]
4255 pub const BIDIRECTIONAL: Self = Self(0x01);
4256 }
4257 #[repr(transparent)]
4258 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4259 pub struct Cpha(pub u8);
4260 impl Cpha {
4261 #[doc = "The first clock transition is the first data capture edge"]
4262 pub const FIRSTEDGE: Self = Self(0);
4263 #[doc = "The second clock transition is the first data capture edge"]
4264 pub const SECONDEDGE: Self = Self(0x01);
4265 }
4266 #[repr(transparent)]
4267 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4268 pub struct Rxonly(pub u8);
4269 impl Rxonly {
4270 #[doc = "Full duplex (Transmit and receive)"]
4271 pub const FULLDUPLEX: Self = Self(0);
4272 #[doc = "Output disabled (Receive-only mode)"]
4273 pub const OUTPUTDISABLED: Self = Self(0x01);
4274 }
4275 #[repr(transparent)]
4276 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4277 pub struct Lsbfirst(pub u8);
4278 impl Lsbfirst {
4279 #[doc = "Data is transmitted/received with the MSB first"]
4280 pub const MSBFIRST: Self = Self(0);
4281 #[doc = "Data is transmitted/received with the LSB first"]
4282 pub const LSBFIRST: Self = Self(0x01);
4283 }
4284 #[repr(transparent)]
4285 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4286 pub struct Frer(pub u8);
4287 impl Frer {
4288 #[doc = "No frame format error"]
4289 pub const NOERROR: Self = Self(0);
4290 #[doc = "A frame format error occurred"]
4291 pub const ERROR: Self = Self(0x01);
4292 }
4293 #[repr(transparent)]
4294 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4295 pub struct Crcnext(pub u8);
4296 impl Crcnext {
4297 #[doc = "Next transmit value is from Tx buffer"]
4298 pub const TXBUFFER: Self = Self(0);
4299 #[doc = "Next transmit value is from Tx CRC register"]
4300 pub const CRC: Self = Self(0x01);
4301 }
4302 #[repr(transparent)]
4303 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4304 pub struct Br(pub u8);
4305 impl Br {
4306 #[doc = "f_PCLK / 2"]
4307 pub const DIV2: Self = Self(0);
4308 #[doc = "f_PCLK / 4"]
4309 pub const DIV4: Self = Self(0x01);
4310 #[doc = "f_PCLK / 8"]
4311 pub const DIV8: Self = Self(0x02);
4312 #[doc = "f_PCLK / 16"]
4313 pub const DIV16: Self = Self(0x03);
4314 #[doc = "f_PCLK / 32"]
4315 pub const DIV32: Self = Self(0x04);
4316 #[doc = "f_PCLK / 64"]
4317 pub const DIV64: Self = Self(0x05);
4318 #[doc = "f_PCLK / 128"]
4319 pub const DIV128: Self = Self(0x06);
4320 #[doc = "f_PCLK / 256"]
4321 pub const DIV256: Self = Self(0x07);
4322 }
4323 #[repr(transparent)]
4324 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4325 pub struct Cpol(pub u8);
4326 impl Cpol {
4327 #[doc = "CK to 0 when idle"]
4328 pub const IDLELOW: Self = Self(0);
4329 #[doc = "CK to 1 when idle"]
4330 pub const IDLEHIGH: Self = Self(0x01);
4331 }
4332 #[repr(transparent)]
4333 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4334 pub struct Mstr(pub u8);
4335 impl Mstr {
4336 #[doc = "Slave configuration"]
4337 pub const SLAVE: Self = Self(0);
4338 #[doc = "Master configuration"]
4339 pub const MASTER: Self = Self(0x01);
4340 }
4341 }
4342}
4343pub mod exti_v1 {
4344 use crate::generic::*;
4345 #[doc = "External interrupt/event controller"]
4346 #[derive(Copy, Clone)]
4347 pub struct Exti(pub *mut u8);
4348 unsafe impl Send for Exti {}
4349 unsafe impl Sync for Exti {}
4350 impl Exti {
4351 #[doc = "Interrupt mask register (EXTI_IMR)"]
4352 pub fn imr(self) -> Reg<regs::Imr, RW> {
4353 unsafe { Reg::from_ptr(self.0.add(0usize)) }
4354 }
4355 #[doc = "Event mask register (EXTI_EMR)"]
4356 pub fn emr(self) -> Reg<regs::Emr, RW> {
4357 unsafe { Reg::from_ptr(self.0.add(4usize)) }
4358 }
4359 #[doc = "Rising Trigger selection register (EXTI_RTSR)"]
4360 pub fn rtsr(self) -> Reg<regs::Rtsr, RW> {
4361 unsafe { Reg::from_ptr(self.0.add(8usize)) }
4362 }
4363 #[doc = "Falling Trigger selection register (EXTI_FTSR)"]
4364 pub fn ftsr(self) -> Reg<regs::Ftsr, RW> {
4365 unsafe { Reg::from_ptr(self.0.add(12usize)) }
4366 }
4367 #[doc = "Software interrupt event register (EXTI_SWIER)"]
4368 pub fn swier(self) -> Reg<regs::Swier, RW> {
4369 unsafe { Reg::from_ptr(self.0.add(16usize)) }
4370 }
4371 #[doc = "Pending register (EXTI_PR)"]
4372 pub fn pr(self) -> Reg<regs::Pr, RW> {
4373 unsafe { Reg::from_ptr(self.0.add(20usize)) }
4374 }
4375 }
4376 pub mod vals {
4377 use crate::generic::*;
4378 #[repr(transparent)]
4379 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4380 pub struct Tr(pub u8);
4381 impl Tr {
4382 #[doc = "Falling edge trigger is disabled"]
4383 pub const DISABLED: Self = Self(0);
4384 #[doc = "Falling edge trigger is enabled"]
4385 pub const ENABLED: Self = Self(0x01);
4386 }
4387 #[repr(transparent)]
4388 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4389 pub struct Swierw(pub u8);
4390 impl Swierw {
4391 #[doc = "Generates an interrupt request"]
4392 pub const PEND: Self = Self(0x01);
4393 } 4137 }
4394 #[repr(transparent)] 4138 #[repr(transparent)]
4395 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4139 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4396 pub struct Mr(pub u8); 4140 pub struct Pupdr(pub u8);
4397 impl Mr { 4141 impl Pupdr {
4398 #[doc = "Interrupt request line is masked"] 4142 #[doc = "No pull-up, pull-down"]
4399 pub const MASKED: Self = Self(0); 4143 pub const FLOATING: Self = Self(0);
4400 #[doc = "Interrupt request line is unmasked"] 4144 #[doc = "Pull-up"]
4401 pub const UNMASKED: Self = Self(0x01); 4145 pub const PULLUP: Self = Self(0x01);
4146 #[doc = "Pull-down"]
4147 pub const PULLDOWN: Self = Self(0x02);
4402 } 4148 }
4403 #[repr(transparent)] 4149 #[repr(transparent)]
4404 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4150 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4405 pub struct Prr(pub u8); 4151 pub struct Odr(pub u8);
4406 impl Prr { 4152 impl Odr {
4407 #[doc = "No trigger request occurred"] 4153 #[doc = "Set output to logic low"]
4408 pub const NOTPENDING: Self = Self(0); 4154 pub const LOW: Self = Self(0);
4409 #[doc = "Selected trigger request occurred"] 4155 #[doc = "Set output to logic high"]
4410 pub const PENDING: Self = Self(0x01); 4156 pub const HIGH: Self = Self(0x01);
4411 } 4157 }
4412 #[repr(transparent)] 4158 #[repr(transparent)]
4413 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4159 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4414 pub struct Prw(pub u8); 4160 pub struct Ospeedr(pub u8);
4415 impl Prw { 4161 impl Ospeedr {
4416 #[doc = "Clears pending bit"] 4162 #[doc = "Low speed"]
4417 pub const CLEAR: Self = Self(0x01); 4163 pub const LOWSPEED: Self = Self(0);
4418 } 4164 #[doc = "Medium speed"]
4419 } 4165 pub const MEDIUMSPEED: Self = Self(0x01);
4420 pub mod regs { 4166 #[doc = "High speed"]
4421 use crate::generic::*; 4167 pub const HIGHSPEED: Self = Self(0x02);
4422 #[doc = "Falling Trigger selection register (EXTI_FTSR)"] 4168 #[doc = "Very high speed"]
4423 #[repr(transparent)] 4169 pub const VERYHIGHSPEED: Self = Self(0x03);
4424 #[derive(Copy, Clone, Eq, PartialEq)]
4425 pub struct Ftsr(pub u32);
4426 impl Ftsr {
4427 #[doc = "Falling trigger event configuration of line 0"]
4428 pub fn tr(&self, n: usize) -> super::vals::Tr {
4429 assert!(n < 23usize);
4430 let offs = 0usize + n * 1usize;
4431 let val = (self.0 >> offs) & 0x01;
4432 super::vals::Tr(val as u8)
4433 }
4434 #[doc = "Falling trigger event configuration of line 0"]
4435 pub fn set_tr(&mut self, n: usize, val: super::vals::Tr) {
4436 assert!(n < 23usize);
4437 let offs = 0usize + n * 1usize;
4438 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
4439 }
4440 }
4441 impl Default for Ftsr {
4442 fn default() -> Ftsr {
4443 Ftsr(0)
4444 }
4445 }
4446 #[doc = "Rising Trigger selection register (EXTI_RTSR)"]
4447 #[repr(transparent)]
4448 #[derive(Copy, Clone, Eq, PartialEq)]
4449 pub struct Rtsr(pub u32);
4450 impl Rtsr {
4451 #[doc = "Rising trigger event configuration of line 0"]
4452 pub fn tr(&self, n: usize) -> super::vals::Tr {
4453 assert!(n < 23usize);
4454 let offs = 0usize + n * 1usize;
4455 let val = (self.0 >> offs) & 0x01;
4456 super::vals::Tr(val as u8)
4457 }
4458 #[doc = "Rising trigger event configuration of line 0"]
4459 pub fn set_tr(&mut self, n: usize, val: super::vals::Tr) {
4460 assert!(n < 23usize);
4461 let offs = 0usize + n * 1usize;
4462 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
4463 }
4464 }
4465 impl Default for Rtsr {
4466 fn default() -> Rtsr {
4467 Rtsr(0)
4468 }
4469 }
4470 #[doc = "Event mask register (EXTI_EMR)"]
4471 #[repr(transparent)]
4472 #[derive(Copy, Clone, Eq, PartialEq)]
4473 pub struct Emr(pub u32);
4474 impl Emr {
4475 #[doc = "Event Mask on line 0"]
4476 pub fn mr(&self, n: usize) -> super::vals::Mr {
4477 assert!(n < 23usize);
4478 let offs = 0usize + n * 1usize;
4479 let val = (self.0 >> offs) & 0x01;
4480 super::vals::Mr(val as u8)
4481 }
4482 #[doc = "Event Mask on line 0"]
4483 pub fn set_mr(&mut self, n: usize, val: super::vals::Mr) {
4484 assert!(n < 23usize);
4485 let offs = 0usize + n * 1usize;
4486 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
4487 }
4488 }
4489 impl Default for Emr {
4490 fn default() -> Emr {
4491 Emr(0)
4492 }
4493 }
4494 #[doc = "Interrupt mask register (EXTI_IMR)"]
4495 #[repr(transparent)]
4496 #[derive(Copy, Clone, Eq, PartialEq)]
4497 pub struct Imr(pub u32);
4498 impl Imr {
4499 #[doc = "Interrupt Mask on line 0"]
4500 pub fn mr(&self, n: usize) -> super::vals::Mr {
4501 assert!(n < 23usize);
4502 let offs = 0usize + n * 1usize;
4503 let val = (self.0 >> offs) & 0x01;
4504 super::vals::Mr(val as u8)
4505 }
4506 #[doc = "Interrupt Mask on line 0"]
4507 pub fn set_mr(&mut self, n: usize, val: super::vals::Mr) {
4508 assert!(n < 23usize);
4509 let offs = 0usize + n * 1usize;
4510 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
4511 }
4512 }
4513 impl Default for Imr {
4514 fn default() -> Imr {
4515 Imr(0)
4516 }
4517 }
4518 #[doc = "Pending register (EXTI_PR)"]
4519 #[repr(transparent)]
4520 #[derive(Copy, Clone, Eq, PartialEq)]
4521 pub struct Pr(pub u32);
4522 impl Pr {
4523 #[doc = "Pending bit 0"]
4524 pub fn pr(&self, n: usize) -> bool {
4525 assert!(n < 23usize);
4526 let offs = 0usize + n * 1usize;
4527 let val = (self.0 >> offs) & 0x01;
4528 val != 0
4529 }
4530 #[doc = "Pending bit 0"]
4531 pub fn set_pr(&mut self, n: usize, val: bool) {
4532 assert!(n < 23usize);
4533 let offs = 0usize + n * 1usize;
4534 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4535 }
4536 }
4537 impl Default for Pr {
4538 fn default() -> Pr {
4539 Pr(0)
4540 }
4541 }
4542 #[doc = "Software interrupt event register (EXTI_SWIER)"]
4543 #[repr(transparent)]
4544 #[derive(Copy, Clone, Eq, PartialEq)]
4545 pub struct Swier(pub u32);
4546 impl Swier {
4547 #[doc = "Software Interrupt on line 0"]
4548 pub fn swier(&self, n: usize) -> bool {
4549 assert!(n < 23usize);
4550 let offs = 0usize + n * 1usize;
4551 let val = (self.0 >> offs) & 0x01;
4552 val != 0
4553 }
4554 #[doc = "Software Interrupt on line 0"]
4555 pub fn set_swier(&mut self, n: usize, val: bool) {
4556 assert!(n < 23usize);
4557 let offs = 0usize + n * 1usize;
4558 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4559 }
4560 }
4561 impl Default for Swier {
4562 fn default() -> Swier {
4563 Swier(0)
4564 }
4565 }
4566 }
4567}
4568pub mod dma_v1 {
4569 use crate::generic::*;
4570 #[doc = "DMA controller"]
4571 #[derive(Copy, Clone)]
4572 pub struct Dma(pub *mut u8);
4573 unsafe impl Send for Dma {}
4574 unsafe impl Sync for Dma {}
4575 impl Dma {
4576 #[doc = "DMA interrupt status register (DMA_ISR)"]
4577 pub fn isr(self) -> Reg<regs::Isr, R> {
4578 unsafe { Reg::from_ptr(self.0.add(0usize)) }
4579 }
4580 #[doc = "DMA interrupt flag clear register (DMA_IFCR)"]
4581 pub fn ifcr(self) -> Reg<regs::Ifcr, W> {
4582 unsafe { Reg::from_ptr(self.0.add(4usize)) }
4583 }
4584 #[doc = "Channel cluster: CCR?, CNDTR?, CPAR?, and CMAR? registers"]
4585 pub fn ch(self, n: usize) -> Ch {
4586 assert!(n < 7usize);
4587 unsafe { Ch(self.0.add(8usize + n * 20usize)) }
4588 }
4589 }
4590 #[doc = "Channel cluster: CCR?, CNDTR?, CPAR?, and CMAR? registers"]
4591 #[derive(Copy, Clone)]
4592 pub struct Ch(pub *mut u8);
4593 unsafe impl Send for Ch {}
4594 unsafe impl Sync for Ch {}
4595 impl Ch {
4596 #[doc = "DMA channel configuration register (DMA_CCR)"]
4597 pub fn cr(self) -> Reg<regs::Cr, RW> {
4598 unsafe { Reg::from_ptr(self.0.add(0usize)) }
4599 }
4600 #[doc = "DMA channel 1 number of data register"]
4601 pub fn ndtr(self) -> Reg<regs::Ndtr, RW> {
4602 unsafe { Reg::from_ptr(self.0.add(4usize)) }
4603 }
4604 #[doc = "DMA channel 1 peripheral address register"]
4605 pub fn par(self) -> Reg<u32, RW> {
4606 unsafe { Reg::from_ptr(self.0.add(8usize)) }
4607 }
4608 #[doc = "DMA channel 1 memory address register"]
4609 pub fn mar(self) -> Reg<u32, RW> {
4610 unsafe { Reg::from_ptr(self.0.add(12usize)) }
4611 } 4170 }
4612 }
4613 pub mod vals {
4614 use crate::generic::*;
4615 #[repr(transparent)] 4171 #[repr(transparent)]
4616 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4172 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4617 pub struct Pl(pub u8); 4173 pub struct Idr(pub u8);
4618 impl Pl { 4174 impl Idr {
4619 #[doc = "Low priority"] 4175 #[doc = "Input is logic low"]
4620 pub const LOW: Self = Self(0); 4176 pub const LOW: Self = Self(0);
4621 #[doc = "Medium priority"] 4177 #[doc = "Input is logic high"]
4622 pub const MEDIUM: Self = Self(0x01); 4178 pub const HIGH: Self = Self(0x01);
4623 #[doc = "High priority"]
4624 pub const HIGH: Self = Self(0x02);
4625 #[doc = "Very high priority"]
4626 pub const VERYHIGH: Self = Self(0x03);
4627 } 4179 }
4628 #[repr(transparent)] 4180 #[repr(transparent)]
4629 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4181 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4630 pub struct Dir(pub u8); 4182 pub struct Lckk(pub u8);
4631 impl Dir { 4183 impl Lckk {
4632 #[doc = "Read from peripheral"] 4184 #[doc = "Port configuration lock key not active"]
4633 pub const FROMPERIPHERAL: Self = Self(0); 4185 pub const NOTACTIVE: Self = Self(0);
4634 #[doc = "Read from memory"] 4186 #[doc = "Port configuration lock key active"]
4635 pub const FROMMEMORY: Self = Self(0x01); 4187 pub const ACTIVE: Self = Self(0x01);
4636 } 4188 }
4637 #[repr(transparent)] 4189 #[repr(transparent)]
4638 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4190 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4639 pub struct Size(pub u8); 4191 pub struct Moder(pub u8);
4640 impl Size { 4192 impl Moder {
4641 #[doc = "8-bit size"] 4193 #[doc = "Input mode (reset state)"]
4642 pub const BITS8: Self = Self(0); 4194 pub const INPUT: Self = Self(0);
4643 #[doc = "16-bit size"] 4195 #[doc = "General purpose output mode"]
4644 pub const BITS16: Self = Self(0x01); 4196 pub const OUTPUT: Self = Self(0x01);
4645 #[doc = "32-bit size"] 4197 #[doc = "Alternate function mode"]
4646 pub const BITS32: Self = Self(0x02); 4198 pub const ALTERNATE: Self = Self(0x02);
4199 #[doc = "Analog mode"]
4200 pub const ANALOG: Self = Self(0x03);
4647 } 4201 }
4648 #[repr(transparent)] 4202 #[repr(transparent)]
4649 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4203 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4650 pub struct Memmem(pub u8); 4204 pub struct Ot(pub u8);
4651 impl Memmem { 4205 impl Ot {
4652 #[doc = "Memory to memory mode disabled"] 4206 #[doc = "Output push-pull (reset state)"]
4653 pub const DISABLED: Self = Self(0); 4207 pub const PUSHPULL: Self = Self(0);
4654 #[doc = "Memory to memory mode enabled"] 4208 #[doc = "Output open-drain"]
4655 pub const ENABLED: Self = Self(0x01); 4209 pub const OPENDRAIN: Self = Self(0x01);
4656 } 4210 }
4657 #[repr(transparent)] 4211 #[repr(transparent)]
4658 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4212 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4659 pub struct Circ(pub u8); 4213 pub struct Afr(pub u8);
4660 impl Circ { 4214 impl Afr {
4661 #[doc = "Circular buffer disabled"] 4215 #[doc = "AF0"]
4662 pub const DISABLED: Self = Self(0); 4216 pub const AF0: Self = Self(0);
4663 #[doc = "Circular buffer enabled"] 4217 #[doc = "AF1"]
4664 pub const ENABLED: Self = Self(0x01); 4218 pub const AF1: Self = Self(0x01);
4219 #[doc = "AF2"]
4220 pub const AF2: Self = Self(0x02);
4221 #[doc = "AF3"]
4222 pub const AF3: Self = Self(0x03);
4223 #[doc = "AF4"]
4224 pub const AF4: Self = Self(0x04);
4225 #[doc = "AF5"]
4226 pub const AF5: Self = Self(0x05);
4227 #[doc = "AF6"]
4228 pub const AF6: Self = Self(0x06);
4229 #[doc = "AF7"]
4230 pub const AF7: Self = Self(0x07);
4231 #[doc = "AF8"]
4232 pub const AF8: Self = Self(0x08);
4233 #[doc = "AF9"]
4234 pub const AF9: Self = Self(0x09);
4235 #[doc = "AF10"]
4236 pub const AF10: Self = Self(0x0a);
4237 #[doc = "AF11"]
4238 pub const AF11: Self = Self(0x0b);
4239 #[doc = "AF12"]
4240 pub const AF12: Self = Self(0x0c);
4241 #[doc = "AF13"]
4242 pub const AF13: Self = Self(0x0d);
4243 #[doc = "AF14"]
4244 pub const AF14: Self = Self(0x0e);
4245 #[doc = "AF15"]
4246 pub const AF15: Self = Self(0x0f);
4665 } 4247 }
4666 #[repr(transparent)] 4248 #[repr(transparent)]
4667 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 4249 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4668 pub struct Inc(pub u8); 4250 pub struct Bsw(pub u8);
4669 impl Inc { 4251 impl Bsw {
4670 #[doc = "Increment mode disabled"] 4252 #[doc = "Sets the corresponding ODRx bit"]
4671 pub const DISABLED: Self = Self(0); 4253 pub const SET: Self = Self(0x01);
4672 #[doc = "Increment mode enabled"]
4673 pub const ENABLED: Self = Self(0x01);
4674 }
4675 }
4676 pub mod regs {
4677 use crate::generic::*;
4678 #[doc = "DMA interrupt status register (DMA_ISR)"]
4679 #[repr(transparent)]
4680 #[derive(Copy, Clone, Eq, PartialEq)]
4681 pub struct Isr(pub u32);
4682 impl Isr {
4683 #[doc = "Channel 1 Global interrupt flag"]
4684 pub fn gif(&self, n: usize) -> bool {
4685 assert!(n < 7usize);
4686 let offs = 0usize + n * 4usize;
4687 let val = (self.0 >> offs) & 0x01;
4688 val != 0
4689 }
4690 #[doc = "Channel 1 Global interrupt flag"]
4691 pub fn set_gif(&mut self, n: usize, val: bool) {
4692 assert!(n < 7usize);
4693 let offs = 0usize + n * 4usize;
4694 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4695 }
4696 #[doc = "Channel 1 Transfer Complete flag"]
4697 pub fn tcif(&self, n: usize) -> bool {
4698 assert!(n < 7usize);
4699 let offs = 1usize + n * 4usize;
4700 let val = (self.0 >> offs) & 0x01;
4701 val != 0
4702 }
4703 #[doc = "Channel 1 Transfer Complete flag"]
4704 pub fn set_tcif(&mut self, n: usize, val: bool) {
4705 assert!(n < 7usize);
4706 let offs = 1usize + n * 4usize;
4707 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4708 }
4709 #[doc = "Channel 1 Half Transfer Complete flag"]
4710 pub fn htif(&self, n: usize) -> bool {
4711 assert!(n < 7usize);
4712 let offs = 2usize + n * 4usize;
4713 let val = (self.0 >> offs) & 0x01;
4714 val != 0
4715 }
4716 #[doc = "Channel 1 Half Transfer Complete flag"]
4717 pub fn set_htif(&mut self, n: usize, val: bool) {
4718 assert!(n < 7usize);
4719 let offs = 2usize + n * 4usize;
4720 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4721 }
4722 #[doc = "Channel 1 Transfer Error flag"]
4723 pub fn teif(&self, n: usize) -> bool {
4724 assert!(n < 7usize);
4725 let offs = 3usize + n * 4usize;
4726 let val = (self.0 >> offs) & 0x01;
4727 val != 0
4728 }
4729 #[doc = "Channel 1 Transfer Error flag"]
4730 pub fn set_teif(&mut self, n: usize, val: bool) {
4731 assert!(n < 7usize);
4732 let offs = 3usize + n * 4usize;
4733 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4734 }
4735 }
4736 impl Default for Isr {
4737 fn default() -> Isr {
4738 Isr(0)
4739 }
4740 }
4741 #[doc = "DMA interrupt flag clear register (DMA_IFCR)"]
4742 #[repr(transparent)]
4743 #[derive(Copy, Clone, Eq, PartialEq)]
4744 pub struct Ifcr(pub u32);
4745 impl Ifcr {
4746 #[doc = "Channel 1 Global interrupt clear"]
4747 pub fn cgif(&self, n: usize) -> bool {
4748 assert!(n < 7usize);
4749 let offs = 0usize + n * 4usize;
4750 let val = (self.0 >> offs) & 0x01;
4751 val != 0
4752 }
4753 #[doc = "Channel 1 Global interrupt clear"]
4754 pub fn set_cgif(&mut self, n: usize, val: bool) {
4755 assert!(n < 7usize);
4756 let offs = 0usize + n * 4usize;
4757 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4758 }
4759 #[doc = "Channel 1 Transfer Complete clear"]
4760 pub fn ctcif(&self, n: usize) -> bool {
4761 assert!(n < 7usize);
4762 let offs = 1usize + n * 4usize;
4763 let val = (self.0 >> offs) & 0x01;
4764 val != 0
4765 }
4766 #[doc = "Channel 1 Transfer Complete clear"]
4767 pub fn set_ctcif(&mut self, n: usize, val: bool) {
4768 assert!(n < 7usize);
4769 let offs = 1usize + n * 4usize;
4770 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4771 }
4772 #[doc = "Channel 1 Half Transfer clear"]
4773 pub fn chtif(&self, n: usize) -> bool {
4774 assert!(n < 7usize);
4775 let offs = 2usize + n * 4usize;
4776 let val = (self.0 >> offs) & 0x01;
4777 val != 0
4778 }
4779 #[doc = "Channel 1 Half Transfer clear"]
4780 pub fn set_chtif(&mut self, n: usize, val: bool) {
4781 assert!(n < 7usize);
4782 let offs = 2usize + n * 4usize;
4783 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4784 }
4785 #[doc = "Channel 1 Transfer Error clear"]
4786 pub fn cteif(&self, n: usize) -> bool {
4787 assert!(n < 7usize);
4788 let offs = 3usize + n * 4usize;
4789 let val = (self.0 >> offs) & 0x01;
4790 val != 0
4791 }
4792 #[doc = "Channel 1 Transfer Error clear"]
4793 pub fn set_cteif(&mut self, n: usize, val: bool) {
4794 assert!(n < 7usize);
4795 let offs = 3usize + n * 4usize;
4796 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
4797 }
4798 }
4799 impl Default for Ifcr {
4800 fn default() -> Ifcr {
4801 Ifcr(0)
4802 }
4803 }
4804 #[doc = "DMA channel configuration register (DMA_CCR)"]
4805 #[repr(transparent)]
4806 #[derive(Copy, Clone, Eq, PartialEq)]
4807 pub struct Cr(pub u32);
4808 impl Cr {
4809 #[doc = "Channel enable"]
4810 pub const fn en(&self) -> bool {
4811 let val = (self.0 >> 0usize) & 0x01;
4812 val != 0
4813 }
4814 #[doc = "Channel enable"]
4815 pub fn set_en(&mut self, val: bool) {
4816 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
4817 }
4818 #[doc = "Transfer complete interrupt enable"]
4819 pub const fn tcie(&self) -> bool {
4820 let val = (self.0 >> 1usize) & 0x01;
4821 val != 0
4822 }
4823 #[doc = "Transfer complete interrupt enable"]
4824 pub fn set_tcie(&mut self, val: bool) {
4825 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
4826 }
4827 #[doc = "Half Transfer interrupt enable"]
4828 pub const fn htie(&self) -> bool {
4829 let val = (self.0 >> 2usize) & 0x01;
4830 val != 0
4831 }
4832 #[doc = "Half Transfer interrupt enable"]
4833 pub fn set_htie(&mut self, val: bool) {
4834 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
4835 }
4836 #[doc = "Transfer error interrupt enable"]
4837 pub const fn teie(&self) -> bool {
4838 let val = (self.0 >> 3usize) & 0x01;
4839 val != 0
4840 }
4841 #[doc = "Transfer error interrupt enable"]
4842 pub fn set_teie(&mut self, val: bool) {
4843 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
4844 }
4845 #[doc = "Data transfer direction"]
4846 pub const fn dir(&self) -> super::vals::Dir {
4847 let val = (self.0 >> 4usize) & 0x01;
4848 super::vals::Dir(val as u8)
4849 }
4850 #[doc = "Data transfer direction"]
4851 pub fn set_dir(&mut self, val: super::vals::Dir) {
4852 self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize);
4853 }
4854 #[doc = "Circular mode"]
4855 pub const fn circ(&self) -> super::vals::Circ {
4856 let val = (self.0 >> 5usize) & 0x01;
4857 super::vals::Circ(val as u8)
4858 }
4859 #[doc = "Circular mode"]
4860 pub fn set_circ(&mut self, val: super::vals::Circ) {
4861 self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize);
4862 }
4863 #[doc = "Peripheral increment mode"]
4864 pub const fn pinc(&self) -> super::vals::Inc {
4865 let val = (self.0 >> 6usize) & 0x01;
4866 super::vals::Inc(val as u8)
4867 }
4868 #[doc = "Peripheral increment mode"]
4869 pub fn set_pinc(&mut self, val: super::vals::Inc) {
4870 self.0 = (self.0 & !(0x01 << 6usize)) | (((val.0 as u32) & 0x01) << 6usize);
4871 }
4872 #[doc = "Memory increment mode"]
4873 pub const fn minc(&self) -> super::vals::Inc {
4874 let val = (self.0 >> 7usize) & 0x01;
4875 super::vals::Inc(val as u8)
4876 }
4877 #[doc = "Memory increment mode"]
4878 pub fn set_minc(&mut self, val: super::vals::Inc) {
4879 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
4880 }
4881 #[doc = "Peripheral size"]
4882 pub const fn psize(&self) -> super::vals::Size {
4883 let val = (self.0 >> 8usize) & 0x03;
4884 super::vals::Size(val as u8)
4885 }
4886 #[doc = "Peripheral size"]
4887 pub fn set_psize(&mut self, val: super::vals::Size) {
4888 self.0 = (self.0 & !(0x03 << 8usize)) | (((val.0 as u32) & 0x03) << 8usize);
4889 }
4890 #[doc = "Memory size"]
4891 pub const fn msize(&self) -> super::vals::Size {
4892 let val = (self.0 >> 10usize) & 0x03;
4893 super::vals::Size(val as u8)
4894 }
4895 #[doc = "Memory size"]
4896 pub fn set_msize(&mut self, val: super::vals::Size) {
4897 self.0 = (self.0 & !(0x03 << 10usize)) | (((val.0 as u32) & 0x03) << 10usize);
4898 }
4899 #[doc = "Channel Priority level"]
4900 pub const fn pl(&self) -> super::vals::Pl {
4901 let val = (self.0 >> 12usize) & 0x03;
4902 super::vals::Pl(val as u8)
4903 }
4904 #[doc = "Channel Priority level"]
4905 pub fn set_pl(&mut self, val: super::vals::Pl) {
4906 self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize);
4907 }
4908 #[doc = "Memory to memory mode"]
4909 pub const fn mem2mem(&self) -> super::vals::Memmem {
4910 let val = (self.0 >> 14usize) & 0x01;
4911 super::vals::Memmem(val as u8)
4912 }
4913 #[doc = "Memory to memory mode"]
4914 pub fn set_mem2mem(&mut self, val: super::vals::Memmem) {
4915 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
4916 }
4917 }
4918 impl Default for Cr {
4919 fn default() -> Cr {
4920 Cr(0)
4921 }
4922 } 4254 }
4923 #[doc = "DMA channel 1 number of data register"]
4924 #[repr(transparent)] 4255 #[repr(transparent)]
4925 #[derive(Copy, Clone, Eq, PartialEq)] 4256 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
4926 pub struct Ndtr(pub u32); 4257 pub struct Lck(pub u8);
4927 impl Ndtr { 4258 impl Lck {
4928 #[doc = "Number of data to transfer"] 4259 #[doc = "Port configuration not locked"]
4929 pub const fn ndt(&self) -> u16 { 4260 pub const UNLOCKED: Self = Self(0);
4930 let val = (self.0 >> 0usize) & 0xffff; 4261 #[doc = "Port configuration locked"]
4931 val as u16 4262 pub const LOCKED: Self = Self(0x01);
4932 }
4933 #[doc = "Number of data to transfer"]
4934 pub fn set_ndt(&mut self, val: u16) {
4935 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
4936 }
4937 }
4938 impl Default for Ndtr {
4939 fn default() -> Ndtr {
4940 Ndtr(0)
4941 }
4942 } 4263 }
4943 } 4264 }
4944} 4265}
@@ -5052,430 +4373,6 @@ pub mod rng_v1 {
5052 } 4373 }
5053 } 4374 }
5054} 4375}
5055pub mod gpio_v2 {
5056 use crate::generic::*;
5057 #[doc = "General-purpose I/Os"]
5058 #[derive(Copy, Clone)]
5059 pub struct Gpio(pub *mut u8);
5060 unsafe impl Send for Gpio {}
5061 unsafe impl Sync for Gpio {}
5062 impl Gpio {
5063 #[doc = "GPIO port mode register"]
5064 pub fn moder(self) -> Reg<regs::Moder, RW> {
5065 unsafe { Reg::from_ptr(self.0.add(0usize)) }
5066 }
5067 #[doc = "GPIO port output type register"]
5068 pub fn otyper(self) -> Reg<regs::Otyper, RW> {
5069 unsafe { Reg::from_ptr(self.0.add(4usize)) }
5070 }
5071 #[doc = "GPIO port output speed register"]
5072 pub fn ospeedr(self) -> Reg<regs::Ospeedr, RW> {
5073 unsafe { Reg::from_ptr(self.0.add(8usize)) }
5074 }
5075 #[doc = "GPIO port pull-up/pull-down register"]
5076 pub fn pupdr(self) -> Reg<regs::Pupdr, RW> {
5077 unsafe { Reg::from_ptr(self.0.add(12usize)) }
5078 }
5079 #[doc = "GPIO port input data register"]
5080 pub fn idr(self) -> Reg<regs::Idr, R> {
5081 unsafe { Reg::from_ptr(self.0.add(16usize)) }
5082 }
5083 #[doc = "GPIO port output data register"]
5084 pub fn odr(self) -> Reg<regs::Odr, RW> {
5085 unsafe { Reg::from_ptr(self.0.add(20usize)) }
5086 }
5087 #[doc = "GPIO port bit set/reset register"]
5088 pub fn bsrr(self) -> Reg<regs::Bsrr, W> {
5089 unsafe { Reg::from_ptr(self.0.add(24usize)) }
5090 }
5091 #[doc = "GPIO port configuration lock register"]
5092 pub fn lckr(self) -> Reg<regs::Lckr, RW> {
5093 unsafe { Reg::from_ptr(self.0.add(28usize)) }
5094 }
5095 #[doc = "GPIO alternate function register (low, high)"]
5096 pub fn afr(self, n: usize) -> Reg<regs::Afr, RW> {
5097 assert!(n < 2usize);
5098 unsafe { Reg::from_ptr(self.0.add(32usize + n * 4usize)) }
5099 }
5100 }
5101 pub mod vals {
5102 use crate::generic::*;
5103 #[repr(transparent)]
5104 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5105 pub struct Ot(pub u8);
5106 impl Ot {
5107 #[doc = "Output push-pull (reset state)"]
5108 pub const PUSHPULL: Self = Self(0);
5109 #[doc = "Output open-drain"]
5110 pub const OPENDRAIN: Self = Self(0x01);
5111 }
5112 #[repr(transparent)]
5113 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5114 pub struct Pupdr(pub u8);
5115 impl Pupdr {
5116 #[doc = "No pull-up, pull-down"]
5117 pub const FLOATING: Self = Self(0);
5118 #[doc = "Pull-up"]
5119 pub const PULLUP: Self = Self(0x01);
5120 #[doc = "Pull-down"]
5121 pub const PULLDOWN: Self = Self(0x02);
5122 }
5123 #[repr(transparent)]
5124 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5125 pub struct Afr(pub u8);
5126 impl Afr {
5127 #[doc = "AF0"]
5128 pub const AF0: Self = Self(0);
5129 #[doc = "AF1"]
5130 pub const AF1: Self = Self(0x01);
5131 #[doc = "AF2"]
5132 pub const AF2: Self = Self(0x02);
5133 #[doc = "AF3"]
5134 pub const AF3: Self = Self(0x03);
5135 #[doc = "AF4"]
5136 pub const AF4: Self = Self(0x04);
5137 #[doc = "AF5"]
5138 pub const AF5: Self = Self(0x05);
5139 #[doc = "AF6"]
5140 pub const AF6: Self = Self(0x06);
5141 #[doc = "AF7"]
5142 pub const AF7: Self = Self(0x07);
5143 #[doc = "AF8"]
5144 pub const AF8: Self = Self(0x08);
5145 #[doc = "AF9"]
5146 pub const AF9: Self = Self(0x09);
5147 #[doc = "AF10"]
5148 pub const AF10: Self = Self(0x0a);
5149 #[doc = "AF11"]
5150 pub const AF11: Self = Self(0x0b);
5151 #[doc = "AF12"]
5152 pub const AF12: Self = Self(0x0c);
5153 #[doc = "AF13"]
5154 pub const AF13: Self = Self(0x0d);
5155 #[doc = "AF14"]
5156 pub const AF14: Self = Self(0x0e);
5157 #[doc = "AF15"]
5158 pub const AF15: Self = Self(0x0f);
5159 }
5160 #[repr(transparent)]
5161 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5162 pub struct Moder(pub u8);
5163 impl Moder {
5164 #[doc = "Input mode (reset state)"]
5165 pub const INPUT: Self = Self(0);
5166 #[doc = "General purpose output mode"]
5167 pub const OUTPUT: Self = Self(0x01);
5168 #[doc = "Alternate function mode"]
5169 pub const ALTERNATE: Self = Self(0x02);
5170 #[doc = "Analog mode"]
5171 pub const ANALOG: Self = Self(0x03);
5172 }
5173 #[repr(transparent)]
5174 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5175 pub struct Ospeedr(pub u8);
5176 impl Ospeedr {
5177 #[doc = "Low speed"]
5178 pub const LOWSPEED: Self = Self(0);
5179 #[doc = "Medium speed"]
5180 pub const MEDIUMSPEED: Self = Self(0x01);
5181 #[doc = "High speed"]
5182 pub const HIGHSPEED: Self = Self(0x02);
5183 #[doc = "Very high speed"]
5184 pub const VERYHIGHSPEED: Self = Self(0x03);
5185 }
5186 #[repr(transparent)]
5187 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5188 pub struct Idr(pub u8);
5189 impl Idr {
5190 #[doc = "Input is logic low"]
5191 pub const LOW: Self = Self(0);
5192 #[doc = "Input is logic high"]
5193 pub const HIGH: Self = Self(0x01);
5194 }
5195 #[repr(transparent)]
5196 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5197 pub struct Odr(pub u8);
5198 impl Odr {
5199 #[doc = "Set output to logic low"]
5200 pub const LOW: Self = Self(0);
5201 #[doc = "Set output to logic high"]
5202 pub const HIGH: Self = Self(0x01);
5203 }
5204 #[repr(transparent)]
5205 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5206 pub struct Brw(pub u8);
5207 impl Brw {
5208 #[doc = "Resets the corresponding ODRx bit"]
5209 pub const RESET: Self = Self(0x01);
5210 }
5211 #[repr(transparent)]
5212 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5213 pub struct Bsw(pub u8);
5214 impl Bsw {
5215 #[doc = "Sets the corresponding ODRx bit"]
5216 pub const SET: Self = Self(0x01);
5217 }
5218 #[repr(transparent)]
5219 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5220 pub struct Lckk(pub u8);
5221 impl Lckk {
5222 #[doc = "Port configuration lock key not active"]
5223 pub const NOTACTIVE: Self = Self(0);
5224 #[doc = "Port configuration lock key active"]
5225 pub const ACTIVE: Self = Self(0x01);
5226 }
5227 #[repr(transparent)]
5228 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5229 pub struct Lck(pub u8);
5230 impl Lck {
5231 #[doc = "Port configuration not locked"]
5232 pub const UNLOCKED: Self = Self(0);
5233 #[doc = "Port configuration locked"]
5234 pub const LOCKED: Self = Self(0x01);
5235 }
5236 }
5237 pub mod regs {
5238 use crate::generic::*;
5239 #[doc = "GPIO alternate function register"]
5240 #[repr(transparent)]
5241 #[derive(Copy, Clone, Eq, PartialEq)]
5242 pub struct Afr(pub u32);
5243 impl Afr {
5244 #[doc = "Alternate function selection for port x bit y (y = 0..15)"]
5245 pub fn afr(&self, n: usize) -> super::vals::Afr {
5246 assert!(n < 8usize);
5247 let offs = 0usize + n * 4usize;
5248 let val = (self.0 >> offs) & 0x0f;
5249 super::vals::Afr(val as u8)
5250 }
5251 #[doc = "Alternate function selection for port x bit y (y = 0..15)"]
5252 pub fn set_afr(&mut self, n: usize, val: super::vals::Afr) {
5253 assert!(n < 8usize);
5254 let offs = 0usize + n * 4usize;
5255 self.0 = (self.0 & !(0x0f << offs)) | (((val.0 as u32) & 0x0f) << offs);
5256 }
5257 }
5258 impl Default for Afr {
5259 fn default() -> Afr {
5260 Afr(0)
5261 }
5262 }
5263 #[doc = "GPIO port configuration lock register"]
5264 #[repr(transparent)]
5265 #[derive(Copy, Clone, Eq, PartialEq)]
5266 pub struct Lckr(pub u32);
5267 impl Lckr {
5268 #[doc = "Port x lock bit y (y= 0..15)"]
5269 pub fn lck(&self, n: usize) -> super::vals::Lck {
5270 assert!(n < 16usize);
5271 let offs = 0usize + n * 1usize;
5272 let val = (self.0 >> offs) & 0x01;
5273 super::vals::Lck(val as u8)
5274 }
5275 #[doc = "Port x lock bit y (y= 0..15)"]
5276 pub fn set_lck(&mut self, n: usize, val: super::vals::Lck) {
5277 assert!(n < 16usize);
5278 let offs = 0usize + n * 1usize;
5279 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
5280 }
5281 #[doc = "Port x lock bit y (y= 0..15)"]
5282 pub const fn lckk(&self) -> super::vals::Lckk {
5283 let val = (self.0 >> 16usize) & 0x01;
5284 super::vals::Lckk(val as u8)
5285 }
5286 #[doc = "Port x lock bit y (y= 0..15)"]
5287 pub fn set_lckk(&mut self, val: super::vals::Lckk) {
5288 self.0 = (self.0 & !(0x01 << 16usize)) | (((val.0 as u32) & 0x01) << 16usize);
5289 }
5290 }
5291 impl Default for Lckr {
5292 fn default() -> Lckr {
5293 Lckr(0)
5294 }
5295 }
5296 #[doc = "GPIO port output speed register"]
5297 #[repr(transparent)]
5298 #[derive(Copy, Clone, Eq, PartialEq)]
5299 pub struct Ospeedr(pub u32);
5300 impl Ospeedr {
5301 #[doc = "Port x configuration bits (y = 0..15)"]
5302 pub fn ospeedr(&self, n: usize) -> super::vals::Ospeedr {
5303 assert!(n < 16usize);
5304 let offs = 0usize + n * 2usize;
5305 let val = (self.0 >> offs) & 0x03;
5306 super::vals::Ospeedr(val as u8)
5307 }
5308 #[doc = "Port x configuration bits (y = 0..15)"]
5309 pub fn set_ospeedr(&mut self, n: usize, val: super::vals::Ospeedr) {
5310 assert!(n < 16usize);
5311 let offs = 0usize + n * 2usize;
5312 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
5313 }
5314 }
5315 impl Default for Ospeedr {
5316 fn default() -> Ospeedr {
5317 Ospeedr(0)
5318 }
5319 }
5320 #[doc = "GPIO port input data register"]
5321 #[repr(transparent)]
5322 #[derive(Copy, Clone, Eq, PartialEq)]
5323 pub struct Idr(pub u32);
5324 impl Idr {
5325 #[doc = "Port input data (y = 0..15)"]
5326 pub fn idr(&self, n: usize) -> super::vals::Idr {
5327 assert!(n < 16usize);
5328 let offs = 0usize + n * 1usize;
5329 let val = (self.0 >> offs) & 0x01;
5330 super::vals::Idr(val as u8)
5331 }
5332 #[doc = "Port input data (y = 0..15)"]
5333 pub fn set_idr(&mut self, n: usize, val: super::vals::Idr) {
5334 assert!(n < 16usize);
5335 let offs = 0usize + n * 1usize;
5336 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
5337 }
5338 }
5339 impl Default for Idr {
5340 fn default() -> Idr {
5341 Idr(0)
5342 }
5343 }
5344 #[doc = "GPIO port bit set/reset register"]
5345 #[repr(transparent)]
5346 #[derive(Copy, Clone, Eq, PartialEq)]
5347 pub struct Bsrr(pub u32);
5348 impl Bsrr {
5349 #[doc = "Port x set bit y (y= 0..15)"]
5350 pub fn bs(&self, n: usize) -> bool {
5351 assert!(n < 16usize);
5352 let offs = 0usize + n * 1usize;
5353 let val = (self.0 >> offs) & 0x01;
5354 val != 0
5355 }
5356 #[doc = "Port x set bit y (y= 0..15)"]
5357 pub fn set_bs(&mut self, n: usize, val: bool) {
5358 assert!(n < 16usize);
5359 let offs = 0usize + n * 1usize;
5360 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
5361 }
5362 #[doc = "Port x set bit y (y= 0..15)"]
5363 pub fn br(&self, n: usize) -> bool {
5364 assert!(n < 16usize);
5365 let offs = 16usize + n * 1usize;
5366 let val = (self.0 >> offs) & 0x01;
5367 val != 0
5368 }
5369 #[doc = "Port x set bit y (y= 0..15)"]
5370 pub fn set_br(&mut self, n: usize, val: bool) {
5371 assert!(n < 16usize);
5372 let offs = 16usize + n * 1usize;
5373 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
5374 }
5375 }
5376 impl Default for Bsrr {
5377 fn default() -> Bsrr {
5378 Bsrr(0)
5379 }
5380 }
5381 #[doc = "GPIO port output type register"]
5382 #[repr(transparent)]
5383 #[derive(Copy, Clone, Eq, PartialEq)]
5384 pub struct Otyper(pub u32);
5385 impl Otyper {
5386 #[doc = "Port x configuration bits (y = 0..15)"]
5387 pub fn ot(&self, n: usize) -> super::vals::Ot {
5388 assert!(n < 16usize);
5389 let offs = 0usize + n * 1usize;
5390 let val = (self.0 >> offs) & 0x01;
5391 super::vals::Ot(val as u8)
5392 }
5393 #[doc = "Port x configuration bits (y = 0..15)"]
5394 pub fn set_ot(&mut self, n: usize, val: super::vals::Ot) {
5395 assert!(n < 16usize);
5396 let offs = 0usize + n * 1usize;
5397 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
5398 }
5399 }
5400 impl Default for Otyper {
5401 fn default() -> Otyper {
5402 Otyper(0)
5403 }
5404 }
5405 #[doc = "GPIO port mode register"]
5406 #[repr(transparent)]
5407 #[derive(Copy, Clone, Eq, PartialEq)]
5408 pub struct Moder(pub u32);
5409 impl Moder {
5410 #[doc = "Port x configuration bits (y = 0..15)"]
5411 pub fn moder(&self, n: usize) -> super::vals::Moder {
5412 assert!(n < 16usize);
5413 let offs = 0usize + n * 2usize;
5414 let val = (self.0 >> offs) & 0x03;
5415 super::vals::Moder(val as u8)
5416 }
5417 #[doc = "Port x configuration bits (y = 0..15)"]
5418 pub fn set_moder(&mut self, n: usize, val: super::vals::Moder) {
5419 assert!(n < 16usize);
5420 let offs = 0usize + n * 2usize;
5421 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
5422 }
5423 }
5424 impl Default for Moder {
5425 fn default() -> Moder {
5426 Moder(0)
5427 }
5428 }
5429 #[doc = "GPIO port pull-up/pull-down register"]
5430 #[repr(transparent)]
5431 #[derive(Copy, Clone, Eq, PartialEq)]
5432 pub struct Pupdr(pub u32);
5433 impl Pupdr {
5434 #[doc = "Port x configuration bits (y = 0..15)"]
5435 pub fn pupdr(&self, n: usize) -> super::vals::Pupdr {
5436 assert!(n < 16usize);
5437 let offs = 0usize + n * 2usize;
5438 let val = (self.0 >> offs) & 0x03;
5439 super::vals::Pupdr(val as u8)
5440 }
5441 #[doc = "Port x configuration bits (y = 0..15)"]
5442 pub fn set_pupdr(&mut self, n: usize, val: super::vals::Pupdr) {
5443 assert!(n < 16usize);
5444 let offs = 0usize + n * 2usize;
5445 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
5446 }
5447 }
5448 impl Default for Pupdr {
5449 fn default() -> Pupdr {
5450 Pupdr(0)
5451 }
5452 }
5453 #[doc = "GPIO port output data register"]
5454 #[repr(transparent)]
5455 #[derive(Copy, Clone, Eq, PartialEq)]
5456 pub struct Odr(pub u32);
5457 impl Odr {
5458 #[doc = "Port output data (y = 0..15)"]
5459 pub fn odr(&self, n: usize) -> super::vals::Odr {
5460 assert!(n < 16usize);
5461 let offs = 0usize + n * 1usize;
5462 let val = (self.0 >> offs) & 0x01;
5463 super::vals::Odr(val as u8)
5464 }
5465 #[doc = "Port output data (y = 0..15)"]
5466 pub fn set_odr(&mut self, n: usize, val: super::vals::Odr) {
5467 assert!(n < 16usize);
5468 let offs = 0usize + n * 1usize;
5469 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
5470 }
5471 }
5472 impl Default for Odr {
5473 fn default() -> Odr {
5474 Odr(0)
5475 }
5476 }
5477 }
5478}
5479pub mod syscfg_l4 { 4376pub mod syscfg_l4 {
5480 use crate::generic::*; 4377 use crate::generic::*;
5481 #[doc = "System configuration controller"] 4378 #[doc = "System configuration controller"]
@@ -5516,60 +4413,48 @@ pub mod syscfg_l4 {
5516 } 4413 }
5517 pub mod regs { 4414 pub mod regs {
5518 use crate::generic::*; 4415 use crate::generic::*;
5519 #[doc = "CFGR2"] 4416 #[doc = "external interrupt configuration register 4"]
5520 #[repr(transparent)] 4417 #[repr(transparent)]
5521 #[derive(Copy, Clone, Eq, PartialEq)] 4418 #[derive(Copy, Clone, Eq, PartialEq)]
5522 pub struct Cfgr2(pub u32); 4419 pub struct Exticr(pub u32);
5523 impl Cfgr2 { 4420 impl Exticr {
5524 #[doc = "Cortex LOCKUP (Hardfault) output enable bit"] 4421 #[doc = "EXTI12 configuration bits"]
5525 pub const fn cll(&self) -> bool { 4422 pub fn exti(&self, n: usize) -> u8 {
5526 let val = (self.0 >> 0usize) & 0x01; 4423 assert!(n < 4usize);
5527 val != 0 4424 let offs = 0usize + n * 4usize;
5528 } 4425 let val = (self.0 >> offs) & 0x0f;
5529 #[doc = "Cortex LOCKUP (Hardfault) output enable bit"] 4426 val as u8
5530 pub fn set_cll(&mut self, val: bool) {
5531 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
5532 }
5533 #[doc = "SRAM2 parity lock bit"]
5534 pub const fn spl(&self) -> bool {
5535 let val = (self.0 >> 1usize) & 0x01;
5536 val != 0
5537 }
5538 #[doc = "SRAM2 parity lock bit"]
5539 pub fn set_spl(&mut self, val: bool) {
5540 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
5541 }
5542 #[doc = "PVD lock enable bit"]
5543 pub const fn pvdl(&self) -> bool {
5544 let val = (self.0 >> 2usize) & 0x01;
5545 val != 0
5546 }
5547 #[doc = "PVD lock enable bit"]
5548 pub fn set_pvdl(&mut self, val: bool) {
5549 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
5550 } 4427 }
5551 #[doc = "ECC Lock"] 4428 #[doc = "EXTI12 configuration bits"]
5552 pub const fn eccl(&self) -> bool { 4429 pub fn set_exti(&mut self, n: usize, val: u8) {
5553 let val = (self.0 >> 3usize) & 0x01; 4430 assert!(n < 4usize);
5554 val != 0 4431 let offs = 0usize + n * 4usize;
4432 self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs);
5555 } 4433 }
5556 #[doc = "ECC Lock"] 4434 }
5557 pub fn set_eccl(&mut self, val: bool) { 4435 impl Default for Exticr {
5558 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); 4436 fn default() -> Exticr {
4437 Exticr(0)
5559 } 4438 }
5560 #[doc = "SRAM2 parity error flag"] 4439 }
5561 pub const fn spf(&self) -> bool { 4440 #[doc = "SKR"]
5562 let val = (self.0 >> 8usize) & 0x01; 4441 #[repr(transparent)]
5563 val != 0 4442 #[derive(Copy, Clone, Eq, PartialEq)]
4443 pub struct Skr(pub u32);
4444 impl Skr {
4445 #[doc = "SRAM2 write protection key for software erase"]
4446 pub const fn key(&self) -> u8 {
4447 let val = (self.0 >> 0usize) & 0xff;
4448 val as u8
5564 } 4449 }
5565 #[doc = "SRAM2 parity error flag"] 4450 #[doc = "SRAM2 write protection key for software erase"]
5566 pub fn set_spf(&mut self, val: bool) { 4451 pub fn set_key(&mut self, val: u8) {
5567 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 4452 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
5568 } 4453 }
5569 } 4454 }
5570 impl Default for Cfgr2 { 4455 impl Default for Skr {
5571 fn default() -> Cfgr2 { 4456 fn default() -> Skr {
5572 Cfgr2(0) 4457 Skr(0)
5573 } 4458 }
5574 } 4459 }
5575 #[doc = "configuration register 1"] 4460 #[doc = "configuration register 1"]
@@ -5673,30 +4558,6 @@ pub mod syscfg_l4 {
5673 Cfgr1(0) 4558 Cfgr1(0)
5674 } 4559 }
5675 } 4560 }
5676 #[doc = "external interrupt configuration register 4"]
5677 #[repr(transparent)]
5678 #[derive(Copy, Clone, Eq, PartialEq)]
5679 pub struct Exticr(pub u32);
5680 impl Exticr {
5681 #[doc = "EXTI12 configuration bits"]
5682 pub fn exti(&self, n: usize) -> u8 {
5683 assert!(n < 4usize);
5684 let offs = 0usize + n * 4usize;
5685 let val = (self.0 >> offs) & 0x0f;
5686 val as u8
5687 }
5688 #[doc = "EXTI12 configuration bits"]
5689 pub fn set_exti(&mut self, n: usize, val: u8) {
5690 assert!(n < 4usize);
5691 let offs = 0usize + n * 4usize;
5692 self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs);
5693 }
5694 }
5695 impl Default for Exticr {
5696 fn default() -> Exticr {
5697 Exticr(0)
5698 }
5699 }
5700 #[doc = "memory remap register"] 4561 #[doc = "memory remap register"]
5701 #[repr(transparent)] 4562 #[repr(transparent)]
5702 #[derive(Copy, Clone, Eq, PartialEq)] 4563 #[derive(Copy, Clone, Eq, PartialEq)]
@@ -5735,55 +4596,6 @@ pub mod syscfg_l4 {
5735 Memrmp(0) 4596 Memrmp(0)
5736 } 4597 }
5737 } 4598 }
5738 #[doc = "SKR"]
5739 #[repr(transparent)]
5740 #[derive(Copy, Clone, Eq, PartialEq)]
5741 pub struct Skr(pub u32);
5742 impl Skr {
5743 #[doc = "SRAM2 write protection key for software erase"]
5744 pub const fn key(&self) -> u8 {
5745 let val = (self.0 >> 0usize) & 0xff;
5746 val as u8
5747 }
5748 #[doc = "SRAM2 write protection key for software erase"]
5749 pub fn set_key(&mut self, val: u8) {
5750 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
5751 }
5752 }
5753 impl Default for Skr {
5754 fn default() -> Skr {
5755 Skr(0)
5756 }
5757 }
5758 #[doc = "SCSR"]
5759 #[repr(transparent)]
5760 #[derive(Copy, Clone, Eq, PartialEq)]
5761 pub struct Scsr(pub u32);
5762 impl Scsr {
5763 #[doc = "SRAM2 Erase"]
5764 pub const fn sram2er(&self) -> bool {
5765 let val = (self.0 >> 0usize) & 0x01;
5766 val != 0
5767 }
5768 #[doc = "SRAM2 Erase"]
5769 pub fn set_sram2er(&mut self, val: bool) {
5770 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
5771 }
5772 #[doc = "SRAM2 busy by erase operation"]
5773 pub const fn sram2bsy(&self) -> bool {
5774 let val = (self.0 >> 1usize) & 0x01;
5775 val != 0
5776 }
5777 #[doc = "SRAM2 busy by erase operation"]
5778 pub fn set_sram2bsy(&mut self, val: bool) {
5779 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
5780 }
5781 }
5782 impl Default for Scsr {
5783 fn default() -> Scsr {
5784 Scsr(0)
5785 }
5786 }
5787 #[doc = "SWPR"] 4599 #[doc = "SWPR"]
5788 #[repr(transparent)] 4600 #[repr(transparent)]
5789 #[derive(Copy, Clone, Eq, PartialEq)] 4601 #[derive(Copy, Clone, Eq, PartialEq)]
@@ -5808,753 +4620,92 @@ pub mod syscfg_l4 {
5808 Swpr(0) 4620 Swpr(0)
5809 } 4621 }
5810 } 4622 }
5811 } 4623 #[doc = "CFGR2"]
5812}
5813pub mod generic {
5814 use core::marker::PhantomData;
5815 #[derive(Copy, Clone)]
5816 pub struct RW;
5817 #[derive(Copy, Clone)]
5818 pub struct R;
5819 #[derive(Copy, Clone)]
5820 pub struct W;
5821 mod sealed {
5822 use super::*;
5823 pub trait Access {}
5824 impl Access for R {}
5825 impl Access for W {}
5826 impl Access for RW {}
5827 }
5828 pub trait Access: sealed::Access + Copy {}
5829 impl Access for R {}
5830 impl Access for W {}
5831 impl Access for RW {}
5832 pub trait Read: Access {}
5833 impl Read for RW {}
5834 impl Read for R {}
5835 pub trait Write: Access {}
5836 impl Write for RW {}
5837 impl Write for W {}
5838 #[derive(Copy, Clone)]
5839 pub struct Reg<T: Copy, A: Access> {
5840 ptr: *mut u8,
5841 phantom: PhantomData<*mut (T, A)>,
5842 }
5843 unsafe impl<T: Copy, A: Access> Send for Reg<T, A> {}
5844 unsafe impl<T: Copy, A: Access> Sync for Reg<T, A> {}
5845 impl<T: Copy, A: Access> Reg<T, A> {
5846 pub fn from_ptr(ptr: *mut u8) -> Self {
5847 Self {
5848 ptr,
5849 phantom: PhantomData,
5850 }
5851 }
5852 pub fn ptr(&self) -> *mut T {
5853 self.ptr as _
5854 }
5855 }
5856 impl<T: Copy, A: Read> Reg<T, A> {
5857 pub unsafe fn read(&self) -> T {
5858 (self.ptr as *mut T).read_volatile()
5859 }
5860 }
5861 impl<T: Copy, A: Write> Reg<T, A> {
5862 pub unsafe fn write_value(&self, val: T) {
5863 (self.ptr as *mut T).write_volatile(val)
5864 }
5865 }
5866 impl<T: Default + Copy, A: Write> Reg<T, A> {
5867 pub unsafe fn write<R>(&self, f: impl FnOnce(&mut T) -> R) -> R {
5868 let mut val = Default::default();
5869 let res = f(&mut val);
5870 self.write_value(val);
5871 res
5872 }
5873 }
5874 impl<T: Copy, A: Read + Write> Reg<T, A> {
5875 pub unsafe fn modify<R>(&self, f: impl FnOnce(&mut T) -> R) -> R {
5876 let mut val = self.read();
5877 let res = f(&mut val);
5878 self.write_value(val);
5879 res
5880 }
5881 }
5882}
5883pub mod spi_v2 {
5884 use crate::generic::*;
5885 #[doc = "Serial peripheral interface"]
5886 #[derive(Copy, Clone)]
5887 pub struct Spi(pub *mut u8);
5888 unsafe impl Send for Spi {}
5889 unsafe impl Sync for Spi {}
5890 impl Spi {
5891 #[doc = "control register 1"]
5892 pub fn cr1(self) -> Reg<regs::Cr1, RW> {
5893 unsafe { Reg::from_ptr(self.0.add(0usize)) }
5894 }
5895 #[doc = "control register 2"]
5896 pub fn cr2(self) -> Reg<regs::Cr2, RW> {
5897 unsafe { Reg::from_ptr(self.0.add(4usize)) }
5898 }
5899 #[doc = "status register"]
5900 pub fn sr(self) -> Reg<regs::Sr, RW> {
5901 unsafe { Reg::from_ptr(self.0.add(8usize)) }
5902 }
5903 #[doc = "data register"]
5904 pub fn dr(self) -> Reg<regs::Dr, RW> {
5905 unsafe { Reg::from_ptr(self.0.add(12usize)) }
5906 }
5907 #[doc = "CRC polynomial register"]
5908 pub fn crcpr(self) -> Reg<regs::Crcpr, RW> {
5909 unsafe { Reg::from_ptr(self.0.add(16usize)) }
5910 }
5911 #[doc = "RX CRC register"]
5912 pub fn rxcrcr(self) -> Reg<regs::Rxcrcr, R> {
5913 unsafe { Reg::from_ptr(self.0.add(20usize)) }
5914 }
5915 #[doc = "TX CRC register"]
5916 pub fn txcrcr(self) -> Reg<regs::Txcrcr, R> {
5917 unsafe { Reg::from_ptr(self.0.add(24usize)) }
5918 }
5919 }
5920 pub mod regs {
5921 use crate::generic::*;
5922 #[doc = "TX CRC register"]
5923 #[repr(transparent)]
5924 #[derive(Copy, Clone, Eq, PartialEq)]
5925 pub struct Txcrcr(pub u32);
5926 impl Txcrcr {
5927 #[doc = "Tx CRC register"]
5928 pub const fn tx_crc(&self) -> u16 {
5929 let val = (self.0 >> 0usize) & 0xffff;
5930 val as u16
5931 }
5932 #[doc = "Tx CRC register"]
5933 pub fn set_tx_crc(&mut self, val: u16) {
5934 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
5935 }
5936 }
5937 impl Default for Txcrcr {
5938 fn default() -> Txcrcr {
5939 Txcrcr(0)
5940 }
5941 }
5942 #[doc = "control register 1"]
5943 #[repr(transparent)]
5944 #[derive(Copy, Clone, Eq, PartialEq)]
5945 pub struct Cr1(pub u32);
5946 impl Cr1 {
5947 #[doc = "Clock phase"]
5948 pub const fn cpha(&self) -> super::vals::Cpha {
5949 let val = (self.0 >> 0usize) & 0x01;
5950 super::vals::Cpha(val as u8)
5951 }
5952 #[doc = "Clock phase"]
5953 pub fn set_cpha(&mut self, val: super::vals::Cpha) {
5954 self.0 = (self.0 & !(0x01 << 0usize)) | (((val.0 as u32) & 0x01) << 0usize);
5955 }
5956 #[doc = "Clock polarity"]
5957 pub const fn cpol(&self) -> super::vals::Cpol {
5958 let val = (self.0 >> 1usize) & 0x01;
5959 super::vals::Cpol(val as u8)
5960 }
5961 #[doc = "Clock polarity"]
5962 pub fn set_cpol(&mut self, val: super::vals::Cpol) {
5963 self.0 = (self.0 & !(0x01 << 1usize)) | (((val.0 as u32) & 0x01) << 1usize);
5964 }
5965 #[doc = "Master selection"]
5966 pub const fn mstr(&self) -> super::vals::Mstr {
5967 let val = (self.0 >> 2usize) & 0x01;
5968 super::vals::Mstr(val as u8)
5969 }
5970 #[doc = "Master selection"]
5971 pub fn set_mstr(&mut self, val: super::vals::Mstr) {
5972 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
5973 }
5974 #[doc = "Baud rate control"]
5975 pub const fn br(&self) -> super::vals::Br {
5976 let val = (self.0 >> 3usize) & 0x07;
5977 super::vals::Br(val as u8)
5978 }
5979 #[doc = "Baud rate control"]
5980 pub fn set_br(&mut self, val: super::vals::Br) {
5981 self.0 = (self.0 & !(0x07 << 3usize)) | (((val.0 as u32) & 0x07) << 3usize);
5982 }
5983 #[doc = "SPI enable"]
5984 pub const fn spe(&self) -> bool {
5985 let val = (self.0 >> 6usize) & 0x01;
5986 val != 0
5987 }
5988 #[doc = "SPI enable"]
5989 pub fn set_spe(&mut self, val: bool) {
5990 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
5991 }
5992 #[doc = "Frame format"]
5993 pub const fn lsbfirst(&self) -> super::vals::Lsbfirst {
5994 let val = (self.0 >> 7usize) & 0x01;
5995 super::vals::Lsbfirst(val as u8)
5996 }
5997 #[doc = "Frame format"]
5998 pub fn set_lsbfirst(&mut self, val: super::vals::Lsbfirst) {
5999 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
6000 }
6001 #[doc = "Internal slave select"]
6002 pub const fn ssi(&self) -> bool {
6003 let val = (self.0 >> 8usize) & 0x01;
6004 val != 0
6005 }
6006 #[doc = "Internal slave select"]
6007 pub fn set_ssi(&mut self, val: bool) {
6008 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
6009 }
6010 #[doc = "Software slave management"]
6011 pub const fn ssm(&self) -> bool {
6012 let val = (self.0 >> 9usize) & 0x01;
6013 val != 0
6014 }
6015 #[doc = "Software slave management"]
6016 pub fn set_ssm(&mut self, val: bool) {
6017 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
6018 }
6019 #[doc = "Receive only"]
6020 pub const fn rxonly(&self) -> super::vals::Rxonly {
6021 let val = (self.0 >> 10usize) & 0x01;
6022 super::vals::Rxonly(val as u8)
6023 }
6024 #[doc = "Receive only"]
6025 pub fn set_rxonly(&mut self, val: super::vals::Rxonly) {
6026 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize);
6027 }
6028 #[doc = "CRC length"]
6029 pub const fn crcl(&self) -> super::vals::Crcl {
6030 let val = (self.0 >> 11usize) & 0x01;
6031 super::vals::Crcl(val as u8)
6032 }
6033 #[doc = "CRC length"]
6034 pub fn set_crcl(&mut self, val: super::vals::Crcl) {
6035 self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize);
6036 }
6037 #[doc = "CRC transfer next"]
6038 pub const fn crcnext(&self) -> super::vals::Crcnext {
6039 let val = (self.0 >> 12usize) & 0x01;
6040 super::vals::Crcnext(val as u8)
6041 }
6042 #[doc = "CRC transfer next"]
6043 pub fn set_crcnext(&mut self, val: super::vals::Crcnext) {
6044 self.0 = (self.0 & !(0x01 << 12usize)) | (((val.0 as u32) & 0x01) << 12usize);
6045 }
6046 #[doc = "Hardware CRC calculation enable"]
6047 pub const fn crcen(&self) -> bool {
6048 let val = (self.0 >> 13usize) & 0x01;
6049 val != 0
6050 }
6051 #[doc = "Hardware CRC calculation enable"]
6052 pub fn set_crcen(&mut self, val: bool) {
6053 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
6054 }
6055 #[doc = "Output enable in bidirectional mode"]
6056 pub const fn bidioe(&self) -> super::vals::Bidioe {
6057 let val = (self.0 >> 14usize) & 0x01;
6058 super::vals::Bidioe(val as u8)
6059 }
6060 #[doc = "Output enable in bidirectional mode"]
6061 pub fn set_bidioe(&mut self, val: super::vals::Bidioe) {
6062 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
6063 }
6064 #[doc = "Bidirectional data mode enable"]
6065 pub const fn bidimode(&self) -> super::vals::Bidimode {
6066 let val = (self.0 >> 15usize) & 0x01;
6067 super::vals::Bidimode(val as u8)
6068 }
6069 #[doc = "Bidirectional data mode enable"]
6070 pub fn set_bidimode(&mut self, val: super::vals::Bidimode) {
6071 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize);
6072 }
6073 }
6074 impl Default for Cr1 {
6075 fn default() -> Cr1 {
6076 Cr1(0)
6077 }
6078 }
6079 #[doc = "CRC polynomial register"]
6080 #[repr(transparent)]
6081 #[derive(Copy, Clone, Eq, PartialEq)]
6082 pub struct Crcpr(pub u32);
6083 impl Crcpr {
6084 #[doc = "CRC polynomial register"]
6085 pub const fn crcpoly(&self) -> u16 {
6086 let val = (self.0 >> 0usize) & 0xffff;
6087 val as u16
6088 }
6089 #[doc = "CRC polynomial register"]
6090 pub fn set_crcpoly(&mut self, val: u16) {
6091 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
6092 }
6093 }
6094 impl Default for Crcpr {
6095 fn default() -> Crcpr {
6096 Crcpr(0)
6097 }
6098 }
6099 #[doc = "RX CRC register"]
6100 #[repr(transparent)]
6101 #[derive(Copy, Clone, Eq, PartialEq)]
6102 pub struct Rxcrcr(pub u32);
6103 impl Rxcrcr {
6104 #[doc = "Rx CRC register"]
6105 pub const fn rx_crc(&self) -> u16 {
6106 let val = (self.0 >> 0usize) & 0xffff;
6107 val as u16
6108 }
6109 #[doc = "Rx CRC register"]
6110 pub fn set_rx_crc(&mut self, val: u16) {
6111 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
6112 }
6113 }
6114 impl Default for Rxcrcr {
6115 fn default() -> Rxcrcr {
6116 Rxcrcr(0)
6117 }
6118 }
6119 #[doc = "data register"]
6120 #[repr(transparent)]
6121 #[derive(Copy, Clone, Eq, PartialEq)]
6122 pub struct Dr(pub u32);
6123 impl Dr {
6124 #[doc = "Data register"]
6125 pub const fn dr(&self) -> u16 {
6126 let val = (self.0 >> 0usize) & 0xffff;
6127 val as u16
6128 }
6129 #[doc = "Data register"]
6130 pub fn set_dr(&mut self, val: u16) {
6131 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
6132 }
6133 }
6134 impl Default for Dr {
6135 fn default() -> Dr {
6136 Dr(0)
6137 }
6138 }
6139 #[doc = "status register"]
6140 #[repr(transparent)] 4624 #[repr(transparent)]
6141 #[derive(Copy, Clone, Eq, PartialEq)] 4625 #[derive(Copy, Clone, Eq, PartialEq)]
6142 pub struct Sr(pub u32); 4626 pub struct Cfgr2(pub u32);
6143 impl Sr { 4627 impl Cfgr2 {
6144 #[doc = "Receive buffer not empty"] 4628 #[doc = "Cortex LOCKUP (Hardfault) output enable bit"]
6145 pub const fn rxne(&self) -> bool { 4629 pub const fn cll(&self) -> bool {
6146 let val = (self.0 >> 0usize) & 0x01; 4630 let val = (self.0 >> 0usize) & 0x01;
6147 val != 0 4631 val != 0
6148 } 4632 }
6149 #[doc = "Receive buffer not empty"] 4633 #[doc = "Cortex LOCKUP (Hardfault) output enable bit"]
6150 pub fn set_rxne(&mut self, val: bool) { 4634 pub fn set_cll(&mut self, val: bool) {
6151 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 4635 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
6152 } 4636 }
6153 #[doc = "Transmit buffer empty"] 4637 #[doc = "SRAM2 parity lock bit"]
6154 pub const fn txe(&self) -> bool { 4638 pub const fn spl(&self) -> bool {
6155 let val = (self.0 >> 1usize) & 0x01; 4639 let val = (self.0 >> 1usize) & 0x01;
6156 val != 0 4640 val != 0
6157 } 4641 }
6158 #[doc = "Transmit buffer empty"] 4642 #[doc = "SRAM2 parity lock bit"]
6159 pub fn set_txe(&mut self, val: bool) { 4643 pub fn set_spl(&mut self, val: bool) {
6160 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 4644 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
6161 } 4645 }
6162 #[doc = "CRC error flag"] 4646 #[doc = "PVD lock enable bit"]
6163 pub const fn crcerr(&self) -> bool { 4647 pub const fn pvdl(&self) -> bool {
6164 let val = (self.0 >> 4usize) & 0x01; 4648 let val = (self.0 >> 2usize) & 0x01;
6165 val != 0
6166 }
6167 #[doc = "CRC error flag"]
6168 pub fn set_crcerr(&mut self, val: bool) {
6169 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
6170 }
6171 #[doc = "Mode fault"]
6172 pub const fn modf(&self) -> bool {
6173 let val = (self.0 >> 5usize) & 0x01;
6174 val != 0
6175 }
6176 #[doc = "Mode fault"]
6177 pub fn set_modf(&mut self, val: bool) {
6178 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
6179 }
6180 #[doc = "Overrun flag"]
6181 pub const fn ovr(&self) -> bool {
6182 let val = (self.0 >> 6usize) & 0x01;
6183 val != 0 4649 val != 0
6184 } 4650 }
6185 #[doc = "Overrun flag"] 4651 #[doc = "PVD lock enable bit"]
6186 pub fn set_ovr(&mut self, val: bool) { 4652 pub fn set_pvdl(&mut self, val: bool) {
6187 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 4653 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
6188 } 4654 }
6189 #[doc = "Busy flag"] 4655 #[doc = "ECC Lock"]
6190 pub const fn bsy(&self) -> bool { 4656 pub const fn eccl(&self) -> bool {
6191 let val = (self.0 >> 7usize) & 0x01; 4657 let val = (self.0 >> 3usize) & 0x01;
6192 val != 0 4658 val != 0
6193 } 4659 }
6194 #[doc = "Busy flag"] 4660 #[doc = "ECC Lock"]
6195 pub fn set_bsy(&mut self, val: bool) { 4661 pub fn set_eccl(&mut self, val: bool) {
6196 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 4662 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
6197 } 4663 }
6198 #[doc = "Frame format error"] 4664 #[doc = "SRAM2 parity error flag"]
6199 pub const fn fre(&self) -> bool { 4665 pub const fn spf(&self) -> bool {
6200 let val = (self.0 >> 8usize) & 0x01; 4666 let val = (self.0 >> 8usize) & 0x01;
6201 val != 0 4667 val != 0
6202 } 4668 }
6203 #[doc = "Frame format error"] 4669 #[doc = "SRAM2 parity error flag"]
6204 pub fn set_fre(&mut self, val: bool) { 4670 pub fn set_spf(&mut self, val: bool) {
6205 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 4671 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
6206 } 4672 }
6207 #[doc = "FIFO reception level"]
6208 pub const fn frlvl(&self) -> u8 {
6209 let val = (self.0 >> 9usize) & 0x03;
6210 val as u8
6211 }
6212 #[doc = "FIFO reception level"]
6213 pub fn set_frlvl(&mut self, val: u8) {
6214 self.0 = (self.0 & !(0x03 << 9usize)) | (((val as u32) & 0x03) << 9usize);
6215 }
6216 #[doc = "FIFO Transmission Level"]
6217 pub const fn ftlvl(&self) -> u8 {
6218 let val = (self.0 >> 11usize) & 0x03;
6219 val as u8
6220 }
6221 #[doc = "FIFO Transmission Level"]
6222 pub fn set_ftlvl(&mut self, val: u8) {
6223 self.0 = (self.0 & !(0x03 << 11usize)) | (((val as u32) & 0x03) << 11usize);
6224 }
6225 } 4673 }
6226 impl Default for Sr { 4674 impl Default for Cfgr2 {
6227 fn default() -> Sr { 4675 fn default() -> Cfgr2 {
6228 Sr(0) 4676 Cfgr2(0)
6229 } 4677 }
6230 } 4678 }
6231 #[doc = "control register 2"] 4679 #[doc = "SCSR"]
6232 #[repr(transparent)] 4680 #[repr(transparent)]
6233 #[derive(Copy, Clone, Eq, PartialEq)] 4681 #[derive(Copy, Clone, Eq, PartialEq)]
6234 pub struct Cr2(pub u32); 4682 pub struct Scsr(pub u32);
6235 impl Cr2 { 4683 impl Scsr {
6236 #[doc = "Rx buffer DMA enable"] 4684 #[doc = "SRAM2 Erase"]
6237 pub const fn rxdmaen(&self) -> bool { 4685 pub const fn sram2er(&self) -> bool {
6238 let val = (self.0 >> 0usize) & 0x01; 4686 let val = (self.0 >> 0usize) & 0x01;
6239 val != 0 4687 val != 0
6240 } 4688 }
6241 #[doc = "Rx buffer DMA enable"] 4689 #[doc = "SRAM2 Erase"]
6242 pub fn set_rxdmaen(&mut self, val: bool) { 4690 pub fn set_sram2er(&mut self, val: bool) {
6243 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 4691 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
6244 } 4692 }
6245 #[doc = "Tx buffer DMA enable"] 4693 #[doc = "SRAM2 busy by erase operation"]
6246 pub const fn txdmaen(&self) -> bool { 4694 pub const fn sram2bsy(&self) -> bool {
6247 let val = (self.0 >> 1usize) & 0x01; 4695 let val = (self.0 >> 1usize) & 0x01;
6248 val != 0 4696 val != 0
6249 } 4697 }
6250 #[doc = "Tx buffer DMA enable"] 4698 #[doc = "SRAM2 busy by erase operation"]
6251 pub fn set_txdmaen(&mut self, val: bool) { 4699 pub fn set_sram2bsy(&mut self, val: bool) {
6252 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 4700 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
6253 } 4701 }
6254 #[doc = "SS output enable"]
6255 pub const fn ssoe(&self) -> bool {
6256 let val = (self.0 >> 2usize) & 0x01;
6257 val != 0
6258 }
6259 #[doc = "SS output enable"]
6260 pub fn set_ssoe(&mut self, val: bool) {
6261 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
6262 }
6263 #[doc = "NSS pulse management"]
6264 pub const fn nssp(&self) -> bool {
6265 let val = (self.0 >> 3usize) & 0x01;
6266 val != 0
6267 }
6268 #[doc = "NSS pulse management"]
6269 pub fn set_nssp(&mut self, val: bool) {
6270 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
6271 }
6272 #[doc = "Frame format"]
6273 pub const fn frf(&self) -> super::vals::Frf {
6274 let val = (self.0 >> 4usize) & 0x01;
6275 super::vals::Frf(val as u8)
6276 }
6277 #[doc = "Frame format"]
6278 pub fn set_frf(&mut self, val: super::vals::Frf) {
6279 self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize);
6280 }
6281 #[doc = "Error interrupt enable"]
6282 pub const fn errie(&self) -> bool {
6283 let val = (self.0 >> 5usize) & 0x01;
6284 val != 0
6285 }
6286 #[doc = "Error interrupt enable"]
6287 pub fn set_errie(&mut self, val: bool) {
6288 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
6289 }
6290 #[doc = "RX buffer not empty interrupt enable"]
6291 pub const fn rxneie(&self) -> bool {
6292 let val = (self.0 >> 6usize) & 0x01;
6293 val != 0
6294 }
6295 #[doc = "RX buffer not empty interrupt enable"]
6296 pub fn set_rxneie(&mut self, val: bool) {
6297 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
6298 }
6299 #[doc = "Tx buffer empty interrupt enable"]
6300 pub const fn txeie(&self) -> bool {
6301 let val = (self.0 >> 7usize) & 0x01;
6302 val != 0
6303 }
6304 #[doc = "Tx buffer empty interrupt enable"]
6305 pub fn set_txeie(&mut self, val: bool) {
6306 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
6307 }
6308 #[doc = "Data size"]
6309 pub const fn ds(&self) -> super::vals::Ds {
6310 let val = (self.0 >> 8usize) & 0x0f;
6311 super::vals::Ds(val as u8)
6312 }
6313 #[doc = "Data size"]
6314 pub fn set_ds(&mut self, val: super::vals::Ds) {
6315 self.0 = (self.0 & !(0x0f << 8usize)) | (((val.0 as u32) & 0x0f) << 8usize);
6316 }
6317 #[doc = "FIFO reception threshold"]
6318 pub const fn frxth(&self) -> super::vals::Frxth {
6319 let val = (self.0 >> 12usize) & 0x01;
6320 super::vals::Frxth(val as u8)
6321 }
6322 #[doc = "FIFO reception threshold"]
6323 pub fn set_frxth(&mut self, val: super::vals::Frxth) {
6324 self.0 = (self.0 & !(0x01 << 12usize)) | (((val.0 as u32) & 0x01) << 12usize);
6325 }
6326 #[doc = "Last DMA transfer for reception"]
6327 pub const fn ldma_rx(&self) -> super::vals::LdmaRx {
6328 let val = (self.0 >> 13usize) & 0x01;
6329 super::vals::LdmaRx(val as u8)
6330 }
6331 #[doc = "Last DMA transfer for reception"]
6332 pub fn set_ldma_rx(&mut self, val: super::vals::LdmaRx) {
6333 self.0 = (self.0 & !(0x01 << 13usize)) | (((val.0 as u32) & 0x01) << 13usize);
6334 }
6335 #[doc = "Last DMA transfer for transmission"]
6336 pub const fn ldma_tx(&self) -> super::vals::LdmaTx {
6337 let val = (self.0 >> 14usize) & 0x01;
6338 super::vals::LdmaTx(val as u8)
6339 }
6340 #[doc = "Last DMA transfer for transmission"]
6341 pub fn set_ldma_tx(&mut self, val: super::vals::LdmaTx) {
6342 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
6343 }
6344 } 4702 }
6345 impl Default for Cr2 { 4703 impl Default for Scsr {
6346 fn default() -> Cr2 { 4704 fn default() -> Scsr {
6347 Cr2(0) 4705 Scsr(0)
6348 } 4706 }
6349 } 4707 }
6350 } 4708 }
6351 pub mod vals {
6352 use crate::generic::*;
6353 #[repr(transparent)]
6354 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6355 pub struct Ds(pub u8);
6356 impl Ds {
6357 #[doc = "4-bit"]
6358 pub const FOURBIT: Self = Self(0x03);
6359 #[doc = "5-bit"]
6360 pub const FIVEBIT: Self = Self(0x04);
6361 #[doc = "6-bit"]
6362 pub const SIXBIT: Self = Self(0x05);
6363 #[doc = "7-bit"]
6364 pub const SEVENBIT: Self = Self(0x06);
6365 #[doc = "8-bit"]
6366 pub const EIGHTBIT: Self = Self(0x07);
6367 #[doc = "9-bit"]
6368 pub const NINEBIT: Self = Self(0x08);
6369 #[doc = "10-bit"]
6370 pub const TENBIT: Self = Self(0x09);
6371 #[doc = "11-bit"]
6372 pub const ELEVENBIT: Self = Self(0x0a);
6373 #[doc = "12-bit"]
6374 pub const TWELVEBIT: Self = Self(0x0b);
6375 #[doc = "13-bit"]
6376 pub const THIRTEENBIT: Self = Self(0x0c);
6377 #[doc = "14-bit"]
6378 pub const FOURTEENBIT: Self = Self(0x0d);
6379 #[doc = "15-bit"]
6380 pub const FIFTEENBIT: Self = Self(0x0e);
6381 #[doc = "16-bit"]
6382 pub const SIXTEENBIT: Self = Self(0x0f);
6383 }
6384 #[repr(transparent)]
6385 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6386 pub struct Cpha(pub u8);
6387 impl Cpha {
6388 #[doc = "The first clock transition is the first data capture edge"]
6389 pub const FIRSTEDGE: Self = Self(0);
6390 #[doc = "The second clock transition is the first data capture edge"]
6391 pub const SECONDEDGE: Self = Self(0x01);
6392 }
6393 #[repr(transparent)]
6394 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6395 pub struct LdmaTx(pub u8);
6396 impl LdmaTx {
6397 #[doc = "Number of data to transfer for transmit is even"]
6398 pub const EVEN: Self = Self(0);
6399 #[doc = "Number of data to transfer for transmit is odd"]
6400 pub const ODD: Self = Self(0x01);
6401 }
6402 #[repr(transparent)]
6403 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6404 pub struct Frxth(pub u8);
6405 impl Frxth {
6406 #[doc = "RXNE event is generated if the FIFO level is greater than or equal to 1/2 (16-bit)"]
6407 pub const HALF: Self = Self(0);
6408 #[doc = "RXNE event is generated if the FIFO level is greater than or equal to 1/4 (8-bit)"]
6409 pub const QUARTER: Self = Self(0x01);
6410 }
6411 #[repr(transparent)]
6412 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6413 pub struct Cpol(pub u8);
6414 impl Cpol {
6415 #[doc = "CK to 0 when idle"]
6416 pub const IDLELOW: Self = Self(0);
6417 #[doc = "CK to 1 when idle"]
6418 pub const IDLEHIGH: Self = Self(0x01);
6419 }
6420 #[repr(transparent)]
6421 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6422 pub struct Frf(pub u8);
6423 impl Frf {
6424 #[doc = "SPI Motorola mode"]
6425 pub const MOTOROLA: Self = Self(0);
6426 #[doc = "SPI TI mode"]
6427 pub const TI: Self = Self(0x01);
6428 }
6429 #[repr(transparent)]
6430 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6431 pub struct Crcl(pub u8);
6432 impl Crcl {
6433 #[doc = "8-bit CRC length"]
6434 pub const EIGHTBIT: Self = Self(0);
6435 #[doc = "16-bit CRC length"]
6436 pub const SIXTEENBIT: Self = Self(0x01);
6437 }
6438 #[repr(transparent)]
6439 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6440 pub struct Bidimode(pub u8);
6441 impl Bidimode {
6442 #[doc = "2-line unidirectional data mode selected"]
6443 pub const UNIDIRECTIONAL: Self = Self(0);
6444 #[doc = "1-line bidirectional data mode selected"]
6445 pub const BIDIRECTIONAL: Self = Self(0x01);
6446 }
6447 #[repr(transparent)]
6448 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6449 pub struct Mstr(pub u8);
6450 impl Mstr {
6451 #[doc = "Slave configuration"]
6452 pub const SLAVE: Self = Self(0);
6453 #[doc = "Master configuration"]
6454 pub const MASTER: Self = Self(0x01);
6455 }
6456 #[repr(transparent)]
6457 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6458 pub struct LdmaRx(pub u8);
6459 impl LdmaRx {
6460 #[doc = "Number of data to transfer for receive is even"]
6461 pub const EVEN: Self = Self(0);
6462 #[doc = "Number of data to transfer for receive is odd"]
6463 pub const ODD: Self = Self(0x01);
6464 }
6465 #[repr(transparent)]
6466 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6467 pub struct Ftlvlr(pub u8);
6468 impl Ftlvlr {
6469 #[doc = "Tx FIFO Empty"]
6470 pub const EMPTY: Self = Self(0);
6471 #[doc = "Tx 1/4 FIFO"]
6472 pub const QUARTER: Self = Self(0x01);
6473 #[doc = "Tx 1/2 FIFO"]
6474 pub const HALF: Self = Self(0x02);
6475 #[doc = "Tx FIFO full"]
6476 pub const FULL: Self = Self(0x03);
6477 }
6478 #[repr(transparent)]
6479 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6480 pub struct Br(pub u8);
6481 impl Br {
6482 #[doc = "f_PCLK / 2"]
6483 pub const DIV2: Self = Self(0);
6484 #[doc = "f_PCLK / 4"]
6485 pub const DIV4: Self = Self(0x01);
6486 #[doc = "f_PCLK / 8"]
6487 pub const DIV8: Self = Self(0x02);
6488 #[doc = "f_PCLK / 16"]
6489 pub const DIV16: Self = Self(0x03);
6490 #[doc = "f_PCLK / 32"]
6491 pub const DIV32: Self = Self(0x04);
6492 #[doc = "f_PCLK / 64"]
6493 pub const DIV64: Self = Self(0x05);
6494 #[doc = "f_PCLK / 128"]
6495 pub const DIV128: Self = Self(0x06);
6496 #[doc = "f_PCLK / 256"]
6497 pub const DIV256: Self = Self(0x07);
6498 }
6499 #[repr(transparent)]
6500 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6501 pub struct Crcnext(pub u8);
6502 impl Crcnext {
6503 #[doc = "Next transmit value is from Tx buffer"]
6504 pub const TXBUFFER: Self = Self(0);
6505 #[doc = "Next transmit value is from Tx CRC register"]
6506 pub const CRC: Self = Self(0x01);
6507 }
6508 #[repr(transparent)]
6509 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6510 pub struct Bidioe(pub u8);
6511 impl Bidioe {
6512 #[doc = "Output disabled (receive-only mode)"]
6513 pub const OUTPUTDISABLED: Self = Self(0);
6514 #[doc = "Output enabled (transmit-only mode)"]
6515 pub const OUTPUTENABLED: Self = Self(0x01);
6516 }
6517 #[repr(transparent)]
6518 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6519 pub struct Frer(pub u8);
6520 impl Frer {
6521 #[doc = "No frame format error"]
6522 pub const NOERROR: Self = Self(0);
6523 #[doc = "A frame format error occurred"]
6524 pub const ERROR: Self = Self(0x01);
6525 }
6526 #[repr(transparent)]
6527 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6528 pub struct Lsbfirst(pub u8);
6529 impl Lsbfirst {
6530 #[doc = "Data is transmitted/received with the MSB first"]
6531 pub const MSBFIRST: Self = Self(0);
6532 #[doc = "Data is transmitted/received with the LSB first"]
6533 pub const LSBFIRST: Self = Self(0x01);
6534 }
6535 #[repr(transparent)]
6536 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6537 pub struct Frlvlr(pub u8);
6538 impl Frlvlr {
6539 #[doc = "Rx FIFO Empty"]
6540 pub const EMPTY: Self = Self(0);
6541 #[doc = "Rx 1/4 FIFO"]
6542 pub const QUARTER: Self = Self(0x01);
6543 #[doc = "Rx 1/2 FIFO"]
6544 pub const HALF: Self = Self(0x02);
6545 #[doc = "Rx FIFO full"]
6546 pub const FULL: Self = Self(0x03);
6547 }
6548 #[repr(transparent)]
6549 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6550 pub struct Rxonly(pub u8);
6551 impl Rxonly {
6552 #[doc = "Full duplex (Transmit and receive)"]
6553 pub const FULLDUPLEX: Self = Self(0);
6554 #[doc = "Output disabled (Receive-only mode)"]
6555 pub const OUTPUTDISABLED: Self = Self(0x01);
6556 }
6557 }
6558} 4709}
6559pub mod usart_v1 { 4710pub mod usart_v1 {
6560 use crate::generic::*; 4711 use crate::generic::*;
@@ -6626,6 +4777,26 @@ pub mod usart_v1 {
6626 } 4777 }
6627 pub mod regs { 4778 pub mod regs {
6628 use crate::generic::*; 4779 use crate::generic::*;
4780 #[doc = "Data register"]
4781 #[repr(transparent)]
4782 #[derive(Copy, Clone, Eq, PartialEq)]
4783 pub struct Dr(pub u32);
4784 impl Dr {
4785 #[doc = "Data value"]
4786 pub const fn dr(&self) -> u16 {
4787 let val = (self.0 >> 0usize) & 0x01ff;
4788 val as u16
4789 }
4790 #[doc = "Data value"]
4791 pub fn set_dr(&mut self, val: u16) {
4792 self.0 = (self.0 & !(0x01ff << 0usize)) | (((val as u32) & 0x01ff) << 0usize);
4793 }
4794 }
4795 impl Default for Dr {
4796 fn default() -> Dr {
4797 Dr(0)
4798 }
4799 }
6629 #[doc = "Status register"] 4800 #[doc = "Status register"]
6630 #[repr(transparent)] 4801 #[repr(transparent)]
6631 #[derive(Copy, Clone, Eq, PartialEq)] 4802 #[derive(Copy, Clone, Eq, PartialEq)]
@@ -6718,170 +4889,60 @@ pub mod usart_v1 {
6718 Sr(0) 4889 Sr(0)
6719 } 4890 }
6720 } 4891 }
6721 #[doc = "Control register 3"] 4892 #[doc = "Control register 2"]
6722 #[repr(transparent)]
6723 #[derive(Copy, Clone, Eq, PartialEq)]
6724 pub struct Cr3(pub u32);
6725 impl Cr3 {
6726 #[doc = "Error interrupt enable"]
6727 pub const fn eie(&self) -> bool {
6728 let val = (self.0 >> 0usize) & 0x01;
6729 val != 0
6730 }
6731 #[doc = "Error interrupt enable"]
6732 pub fn set_eie(&mut self, val: bool) {
6733 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
6734 }
6735 #[doc = "IrDA mode enable"]
6736 pub const fn iren(&self) -> bool {
6737 let val = (self.0 >> 1usize) & 0x01;
6738 val != 0
6739 }
6740 #[doc = "IrDA mode enable"]
6741 pub fn set_iren(&mut self, val: bool) {
6742 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
6743 }
6744 #[doc = "IrDA low-power"]
6745 pub const fn irlp(&self) -> super::vals::Irlp {
6746 let val = (self.0 >> 2usize) & 0x01;
6747 super::vals::Irlp(val as u8)
6748 }
6749 #[doc = "IrDA low-power"]
6750 pub fn set_irlp(&mut self, val: super::vals::Irlp) {
6751 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
6752 }
6753 #[doc = "Half-duplex selection"]
6754 pub const fn hdsel(&self) -> super::vals::Hdsel {
6755 let val = (self.0 >> 3usize) & 0x01;
6756 super::vals::Hdsel(val as u8)
6757 }
6758 #[doc = "Half-duplex selection"]
6759 pub fn set_hdsel(&mut self, val: super::vals::Hdsel) {
6760 self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize);
6761 }
6762 #[doc = "DMA enable receiver"]
6763 pub const fn dmar(&self) -> bool {
6764 let val = (self.0 >> 6usize) & 0x01;
6765 val != 0
6766 }
6767 #[doc = "DMA enable receiver"]
6768 pub fn set_dmar(&mut self, val: bool) {
6769 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
6770 }
6771 #[doc = "DMA enable transmitter"]
6772 pub const fn dmat(&self) -> bool {
6773 let val = (self.0 >> 7usize) & 0x01;
6774 val != 0
6775 }
6776 #[doc = "DMA enable transmitter"]
6777 pub fn set_dmat(&mut self, val: bool) {
6778 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
6779 }
6780 }
6781 impl Default for Cr3 {
6782 fn default() -> Cr3 {
6783 Cr3(0)
6784 }
6785 }
6786 #[doc = "Status register"]
6787 #[repr(transparent)] 4893 #[repr(transparent)]
6788 #[derive(Copy, Clone, Eq, PartialEq)] 4894 #[derive(Copy, Clone, Eq, PartialEq)]
6789 pub struct SrUsart(pub u32); 4895 pub struct Cr2(pub u32);
6790 impl SrUsart { 4896 impl Cr2 {
6791 #[doc = "Parity error"] 4897 #[doc = "Address of the USART node"]
6792 pub const fn pe(&self) -> bool { 4898 pub const fn add(&self) -> u8 {
6793 let val = (self.0 >> 0usize) & 0x01; 4899 let val = (self.0 >> 0usize) & 0x0f;
6794 val != 0 4900 val as u8
6795 }
6796 #[doc = "Parity error"]
6797 pub fn set_pe(&mut self, val: bool) {
6798 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
6799 }
6800 #[doc = "Framing error"]
6801 pub const fn fe(&self) -> bool {
6802 let val = (self.0 >> 1usize) & 0x01;
6803 val != 0
6804 }
6805 #[doc = "Framing error"]
6806 pub fn set_fe(&mut self, val: bool) {
6807 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
6808 }
6809 #[doc = "Noise error flag"]
6810 pub const fn ne(&self) -> bool {
6811 let val = (self.0 >> 2usize) & 0x01;
6812 val != 0
6813 }
6814 #[doc = "Noise error flag"]
6815 pub fn set_ne(&mut self, val: bool) {
6816 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
6817 }
6818 #[doc = "Overrun error"]
6819 pub const fn ore(&self) -> bool {
6820 let val = (self.0 >> 3usize) & 0x01;
6821 val != 0
6822 }
6823 #[doc = "Overrun error"]
6824 pub fn set_ore(&mut self, val: bool) {
6825 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
6826 }
6827 #[doc = "IDLE line detected"]
6828 pub const fn idle(&self) -> bool {
6829 let val = (self.0 >> 4usize) & 0x01;
6830 val != 0
6831 } 4901 }
6832 #[doc = "IDLE line detected"] 4902 #[doc = "Address of the USART node"]
6833 pub fn set_idle(&mut self, val: bool) { 4903 pub fn set_add(&mut self, val: u8) {
6834 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); 4904 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize);
6835 } 4905 }
6836 #[doc = "Read data register not empty"] 4906 #[doc = "lin break detection length"]
6837 pub const fn rxne(&self) -> bool { 4907 pub const fn lbdl(&self) -> super::vals::Lbdl {
6838 let val = (self.0 >> 5usize) & 0x01; 4908 let val = (self.0 >> 5usize) & 0x01;
6839 val != 0 4909 super::vals::Lbdl(val as u8)
6840 } 4910 }
6841 #[doc = "Read data register not empty"] 4911 #[doc = "lin break detection length"]
6842 pub fn set_rxne(&mut self, val: bool) { 4912 pub fn set_lbdl(&mut self, val: super::vals::Lbdl) {
6843 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); 4913 self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize);
6844 } 4914 }
6845 #[doc = "Transmission complete"] 4915 #[doc = "LIN break detection interrupt enable"]
6846 pub const fn tc(&self) -> bool { 4916 pub const fn lbdie(&self) -> bool {
6847 let val = (self.0 >> 6usize) & 0x01; 4917 let val = (self.0 >> 6usize) & 0x01;
6848 val != 0 4918 val != 0
6849 } 4919 }
6850 #[doc = "Transmission complete"] 4920 #[doc = "LIN break detection interrupt enable"]
6851 pub fn set_tc(&mut self, val: bool) { 4921 pub fn set_lbdie(&mut self, val: bool) {
6852 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 4922 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
6853 } 4923 }
6854 #[doc = "Transmit data register empty"] 4924 #[doc = "STOP bits"]
6855 pub const fn txe(&self) -> bool { 4925 pub const fn stop(&self) -> super::vals::Stop {
6856 let val = (self.0 >> 7usize) & 0x01; 4926 let val = (self.0 >> 12usize) & 0x03;
6857 val != 0 4927 super::vals::Stop(val as u8)
6858 }
6859 #[doc = "Transmit data register empty"]
6860 pub fn set_txe(&mut self, val: bool) {
6861 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
6862 }
6863 #[doc = "LIN break detection flag"]
6864 pub const fn lbd(&self) -> bool {
6865 let val = (self.0 >> 8usize) & 0x01;
6866 val != 0
6867 } 4928 }
6868 #[doc = "LIN break detection flag"] 4929 #[doc = "STOP bits"]
6869 pub fn set_lbd(&mut self, val: bool) { 4930 pub fn set_stop(&mut self, val: super::vals::Stop) {
6870 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 4931 self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize);
6871 } 4932 }
6872 #[doc = "CTS flag"] 4933 #[doc = "LIN mode enable"]
6873 pub const fn cts(&self) -> bool { 4934 pub const fn linen(&self) -> bool {
6874 let val = (self.0 >> 9usize) & 0x01; 4935 let val = (self.0 >> 14usize) & 0x01;
6875 val != 0 4936 val != 0
6876 } 4937 }
6877 #[doc = "CTS flag"] 4938 #[doc = "LIN mode enable"]
6878 pub fn set_cts(&mut self, val: bool) { 4939 pub fn set_linen(&mut self, val: bool) {
6879 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); 4940 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
6880 } 4941 }
6881 } 4942 }
6882 impl Default for SrUsart { 4943 impl Default for Cr2 {
6883 fn default() -> SrUsart { 4944 fn default() -> Cr2 {
6884 SrUsart(0) 4945 Cr2(0)
6885 } 4946 }
6886 } 4947 }
6887 #[doc = "Control register 2"] 4948 #[doc = "Control register 2"]
@@ -6979,6 +5040,71 @@ pub mod usart_v1 {
6979 #[doc = "Control register 3"] 5040 #[doc = "Control register 3"]
6980 #[repr(transparent)] 5041 #[repr(transparent)]
6981 #[derive(Copy, Clone, Eq, PartialEq)] 5042 #[derive(Copy, Clone, Eq, PartialEq)]
5043 pub struct Cr3(pub u32);
5044 impl Cr3 {
5045 #[doc = "Error interrupt enable"]
5046 pub const fn eie(&self) -> bool {
5047 let val = (self.0 >> 0usize) & 0x01;
5048 val != 0
5049 }
5050 #[doc = "Error interrupt enable"]
5051 pub fn set_eie(&mut self, val: bool) {
5052 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
5053 }
5054 #[doc = "IrDA mode enable"]
5055 pub const fn iren(&self) -> bool {
5056 let val = (self.0 >> 1usize) & 0x01;
5057 val != 0
5058 }
5059 #[doc = "IrDA mode enable"]
5060 pub fn set_iren(&mut self, val: bool) {
5061 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
5062 }
5063 #[doc = "IrDA low-power"]
5064 pub const fn irlp(&self) -> super::vals::Irlp {
5065 let val = (self.0 >> 2usize) & 0x01;
5066 super::vals::Irlp(val as u8)
5067 }
5068 #[doc = "IrDA low-power"]
5069 pub fn set_irlp(&mut self, val: super::vals::Irlp) {
5070 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
5071 }
5072 #[doc = "Half-duplex selection"]
5073 pub const fn hdsel(&self) -> super::vals::Hdsel {
5074 let val = (self.0 >> 3usize) & 0x01;
5075 super::vals::Hdsel(val as u8)
5076 }
5077 #[doc = "Half-duplex selection"]
5078 pub fn set_hdsel(&mut self, val: super::vals::Hdsel) {
5079 self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize);
5080 }
5081 #[doc = "DMA enable receiver"]
5082 pub const fn dmar(&self) -> bool {
5083 let val = (self.0 >> 6usize) & 0x01;
5084 val != 0
5085 }
5086 #[doc = "DMA enable receiver"]
5087 pub fn set_dmar(&mut self, val: bool) {
5088 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
5089 }
5090 #[doc = "DMA enable transmitter"]
5091 pub const fn dmat(&self) -> bool {
5092 let val = (self.0 >> 7usize) & 0x01;
5093 val != 0
5094 }
5095 #[doc = "DMA enable transmitter"]
5096 pub fn set_dmat(&mut self, val: bool) {
5097 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
5098 }
5099 }
5100 impl Default for Cr3 {
5101 fn default() -> Cr3 {
5102 Cr3(0)
5103 }
5104 }
5105 #[doc = "Control register 3"]
5106 #[repr(transparent)]
5107 #[derive(Copy, Clone, Eq, PartialEq)]
6982 pub struct Cr3Usart(pub u32); 5108 pub struct Cr3Usart(pub u32);
6983 impl Cr3Usart { 5109 impl Cr3Usart {
6984 #[doc = "Error interrupt enable"] 5110 #[doc = "Error interrupt enable"]
@@ -7086,80 +5212,134 @@ pub mod usart_v1 {
7086 Cr3Usart(0) 5212 Cr3Usart(0)
7087 } 5213 }
7088 } 5214 }
7089 #[doc = "Data register"] 5215 #[doc = "Status register"]
7090 #[repr(transparent)] 5216 #[repr(transparent)]
7091 #[derive(Copy, Clone, Eq, PartialEq)] 5217 #[derive(Copy, Clone, Eq, PartialEq)]
7092 pub struct Dr(pub u32); 5218 pub struct SrUsart(pub u32);
7093 impl Dr { 5219 impl SrUsart {
7094 #[doc = "Data value"] 5220 #[doc = "Parity error"]
7095 pub const fn dr(&self) -> u16 { 5221 pub const fn pe(&self) -> bool {
7096 let val = (self.0 >> 0usize) & 0x01ff; 5222 let val = (self.0 >> 0usize) & 0x01;
7097 val as u16 5223 val != 0
7098 } 5224 }
7099 #[doc = "Data value"] 5225 #[doc = "Parity error"]
7100 pub fn set_dr(&mut self, val: u16) { 5226 pub fn set_pe(&mut self, val: bool) {
7101 self.0 = (self.0 & !(0x01ff << 0usize)) | (((val as u32) & 0x01ff) << 0usize); 5227 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
7102 } 5228 }
7103 } 5229 #[doc = "Framing error"]
7104 impl Default for Dr { 5230 pub const fn fe(&self) -> bool {
7105 fn default() -> Dr { 5231 let val = (self.0 >> 1usize) & 0x01;
7106 Dr(0) 5232 val != 0
7107 } 5233 }
7108 } 5234 #[doc = "Framing error"]
7109 #[doc = "Control register 2"] 5235 pub fn set_fe(&mut self, val: bool) {
7110 #[repr(transparent)] 5236 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
7111 #[derive(Copy, Clone, Eq, PartialEq)]
7112 pub struct Cr2(pub u32);
7113 impl Cr2 {
7114 #[doc = "Address of the USART node"]
7115 pub const fn add(&self) -> u8 {
7116 let val = (self.0 >> 0usize) & 0x0f;
7117 val as u8
7118 } 5237 }
7119 #[doc = "Address of the USART node"] 5238 #[doc = "Noise error flag"]
7120 pub fn set_add(&mut self, val: u8) { 5239 pub const fn ne(&self) -> bool {
7121 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); 5240 let val = (self.0 >> 2usize) & 0x01;
5241 val != 0
7122 } 5242 }
7123 #[doc = "lin break detection length"] 5243 #[doc = "Noise error flag"]
7124 pub const fn lbdl(&self) -> super::vals::Lbdl { 5244 pub fn set_ne(&mut self, val: bool) {
5245 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
5246 }
5247 #[doc = "Overrun error"]
5248 pub const fn ore(&self) -> bool {
5249 let val = (self.0 >> 3usize) & 0x01;
5250 val != 0
5251 }
5252 #[doc = "Overrun error"]
5253 pub fn set_ore(&mut self, val: bool) {
5254 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
5255 }
5256 #[doc = "IDLE line detected"]
5257 pub const fn idle(&self) -> bool {
5258 let val = (self.0 >> 4usize) & 0x01;
5259 val != 0
5260 }
5261 #[doc = "IDLE line detected"]
5262 pub fn set_idle(&mut self, val: bool) {
5263 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
5264 }
5265 #[doc = "Read data register not empty"]
5266 pub const fn rxne(&self) -> bool {
7125 let val = (self.0 >> 5usize) & 0x01; 5267 let val = (self.0 >> 5usize) & 0x01;
7126 super::vals::Lbdl(val as u8) 5268 val != 0
7127 } 5269 }
7128 #[doc = "lin break detection length"] 5270 #[doc = "Read data register not empty"]
7129 pub fn set_lbdl(&mut self, val: super::vals::Lbdl) { 5271 pub fn set_rxne(&mut self, val: bool) {
7130 self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize); 5272 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
7131 } 5273 }
7132 #[doc = "LIN break detection interrupt enable"] 5274 #[doc = "Transmission complete"]
7133 pub const fn lbdie(&self) -> bool { 5275 pub const fn tc(&self) -> bool {
7134 let val = (self.0 >> 6usize) & 0x01; 5276 let val = (self.0 >> 6usize) & 0x01;
7135 val != 0 5277 val != 0
7136 } 5278 }
7137 #[doc = "LIN break detection interrupt enable"] 5279 #[doc = "Transmission complete"]
7138 pub fn set_lbdie(&mut self, val: bool) { 5280 pub fn set_tc(&mut self, val: bool) {
7139 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 5281 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
7140 } 5282 }
7141 #[doc = "STOP bits"] 5283 #[doc = "Transmit data register empty"]
7142 pub const fn stop(&self) -> super::vals::Stop { 5284 pub const fn txe(&self) -> bool {
7143 let val = (self.0 >> 12usize) & 0x03; 5285 let val = (self.0 >> 7usize) & 0x01;
7144 super::vals::Stop(val as u8) 5286 val != 0
7145 } 5287 }
7146 #[doc = "STOP bits"] 5288 #[doc = "Transmit data register empty"]
7147 pub fn set_stop(&mut self, val: super::vals::Stop) { 5289 pub fn set_txe(&mut self, val: bool) {
7148 self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize); 5290 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
7149 } 5291 }
7150 #[doc = "LIN mode enable"] 5292 #[doc = "LIN break detection flag"]
7151 pub const fn linen(&self) -> bool { 5293 pub const fn lbd(&self) -> bool {
7152 let val = (self.0 >> 14usize) & 0x01; 5294 let val = (self.0 >> 8usize) & 0x01;
7153 val != 0 5295 val != 0
7154 } 5296 }
7155 #[doc = "LIN mode enable"] 5297 #[doc = "LIN break detection flag"]
7156 pub fn set_linen(&mut self, val: bool) { 5298 pub fn set_lbd(&mut self, val: bool) {
7157 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); 5299 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
5300 }
5301 #[doc = "CTS flag"]
5302 pub const fn cts(&self) -> bool {
5303 let val = (self.0 >> 9usize) & 0x01;
5304 val != 0
5305 }
5306 #[doc = "CTS flag"]
5307 pub fn set_cts(&mut self, val: bool) {
5308 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
7158 } 5309 }
7159 } 5310 }
7160 impl Default for Cr2 { 5311 impl Default for SrUsart {
7161 fn default() -> Cr2 { 5312 fn default() -> SrUsart {
7162 Cr2(0) 5313 SrUsart(0)
5314 }
5315 }
5316 #[doc = "Guard time and prescaler register"]
5317 #[repr(transparent)]
5318 #[derive(Copy, Clone, Eq, PartialEq)]
5319 pub struct Gtpr(pub u32);
5320 impl Gtpr {
5321 #[doc = "Prescaler value"]
5322 pub const fn psc(&self) -> u8 {
5323 let val = (self.0 >> 0usize) & 0xff;
5324 val as u8
5325 }
5326 #[doc = "Prescaler value"]
5327 pub fn set_psc(&mut self, val: u8) {
5328 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
5329 }
5330 #[doc = "Guard time value"]
5331 pub const fn gt(&self) -> u8 {
5332 let val = (self.0 >> 8usize) & 0xff;
5333 val as u8
5334 }
5335 #[doc = "Guard time value"]
5336 pub fn set_gt(&mut self, val: u8) {
5337 self.0 = (self.0 & !(0xff << 8usize)) | (((val as u32) & 0xff) << 8usize);
5338 }
5339 }
5340 impl Default for Gtpr {
5341 fn default() -> Gtpr {
5342 Gtpr(0)
7163 } 5343 }
7164 } 5344 }
7165 #[doc = "Baud rate register"] 5345 #[doc = "Baud rate register"]
@@ -7328,55 +5508,57 @@ pub mod usart_v1 {
7328 Cr1(0) 5508 Cr1(0)
7329 } 5509 }
7330 } 5510 }
7331 #[doc = "Guard time and prescaler register"]
7332 #[repr(transparent)]
7333 #[derive(Copy, Clone, Eq, PartialEq)]
7334 pub struct Gtpr(pub u32);
7335 impl Gtpr {
7336 #[doc = "Prescaler value"]
7337 pub const fn psc(&self) -> u8 {
7338 let val = (self.0 >> 0usize) & 0xff;
7339 val as u8
7340 }
7341 #[doc = "Prescaler value"]
7342 pub fn set_psc(&mut self, val: u8) {
7343 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
7344 }
7345 #[doc = "Guard time value"]
7346 pub const fn gt(&self) -> u8 {
7347 let val = (self.0 >> 8usize) & 0xff;
7348 val as u8
7349 }
7350 #[doc = "Guard time value"]
7351 pub fn set_gt(&mut self, val: u8) {
7352 self.0 = (self.0 & !(0xff << 8usize)) | (((val as u32) & 0xff) << 8usize);
7353 }
7354 }
7355 impl Default for Gtpr {
7356 fn default() -> Gtpr {
7357 Gtpr(0)
7358 }
7359 }
7360 } 5511 }
7361 pub mod vals { 5512 pub mod vals {
7362 use crate::generic::*; 5513 use crate::generic::*;
7363 #[repr(transparent)] 5514 #[repr(transparent)]
7364 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5515 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7365 pub struct Wake(pub u8); 5516 pub struct Cpha(pub u8);
7366 impl Wake { 5517 impl Cpha {
7367 #[doc = "USART wakeup on idle line"] 5518 #[doc = "The first clock transition is the first data capture edge"]
7368 pub const IDLELINE: Self = Self(0); 5519 pub const FIRST: Self = Self(0);
7369 #[doc = "USART wakeup on address mark"] 5520 #[doc = "The second clock transition is the first data capture edge"]
7370 pub const ADDRESSMARK: Self = Self(0x01); 5521 pub const SECOND: Self = Self(0x01);
7371 } 5522 }
7372 #[repr(transparent)] 5523 #[repr(transparent)]
7373 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5524 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7374 pub struct M(pub u8); 5525 pub struct Irlp(pub u8);
7375 impl M { 5526 impl Irlp {
7376 #[doc = "8 data bits"] 5527 #[doc = "Normal mode"]
7377 pub const M8: Self = Self(0); 5528 pub const NORMAL: Self = Self(0);
7378 #[doc = "9 data bits"] 5529 #[doc = "Low-power mode"]
7379 pub const M9: Self = Self(0x01); 5530 pub const LOWPOWER: Self = Self(0x01);
5531 }
5532 #[repr(transparent)]
5533 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5534 pub struct Cpol(pub u8);
5535 impl Cpol {
5536 #[doc = "Steady low value on CK pin outside transmission window"]
5537 pub const LOW: Self = Self(0);
5538 #[doc = "Steady high value on CK pin outside transmission window"]
5539 pub const HIGH: Self = Self(0x01);
5540 }
5541 #[repr(transparent)]
5542 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5543 pub struct Stop(pub u8);
5544 impl Stop {
5545 #[doc = "1 stop bit"]
5546 pub const STOP1: Self = Self(0);
5547 #[doc = "0.5 stop bits"]
5548 pub const STOP0P5: Self = Self(0x01);
5549 #[doc = "2 stop bits"]
5550 pub const STOP2: Self = Self(0x02);
5551 #[doc = "1.5 stop bits"]
5552 pub const STOP1P5: Self = Self(0x03);
5553 }
5554 #[repr(transparent)]
5555 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5556 pub struct Lbdl(pub u8);
5557 impl Lbdl {
5558 #[doc = "10-bit break detection"]
5559 pub const LBDL10: Self = Self(0);
5560 #[doc = "11-bit break detection"]
5561 pub const LBDL11: Self = Self(0x01);
7380 } 5562 }
7381 #[repr(transparent)] 5563 #[repr(transparent)]
7382 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5564 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
@@ -7389,6 +5571,15 @@ pub mod usart_v1 {
7389 } 5571 }
7390 #[repr(transparent)] 5572 #[repr(transparent)]
7391 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5573 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5574 pub struct M(pub u8);
5575 impl M {
5576 #[doc = "8 data bits"]
5577 pub const M8: Self = Self(0);
5578 #[doc = "9 data bits"]
5579 pub const M9: Self = Self(0x01);
5580 }
5581 #[repr(transparent)]
5582 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7392 pub struct Sbk(pub u8); 5583 pub struct Sbk(pub u8);
7393 impl Sbk { 5584 impl Sbk {
7394 #[doc = "No break character is transmitted"] 5585 #[doc = "No break character is transmitted"]
@@ -7416,52 +5607,688 @@ pub mod usart_v1 {
7416 } 5607 }
7417 #[repr(transparent)] 5608 #[repr(transparent)]
7418 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5609 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7419 pub struct Cpol(pub u8); 5610 pub struct Wake(pub u8);
7420 impl Cpol { 5611 impl Wake {
7421 #[doc = "Steady low value on CK pin outside transmission window"] 5612 #[doc = "USART wakeup on idle line"]
7422 pub const LOW: Self = Self(0); 5613 pub const IDLELINE: Self = Self(0);
7423 #[doc = "Steady high value on CK pin outside transmission window"] 5614 #[doc = "USART wakeup on address mark"]
7424 pub const HIGH: Self = Self(0x01); 5615 pub const ADDRESSMARK: Self = Self(0x01);
7425 } 5616 }
5617 }
5618}
5619pub mod spi_v2 {
5620 use crate::generic::*;
5621 #[doc = "Serial peripheral interface"]
5622 #[derive(Copy, Clone)]
5623 pub struct Spi(pub *mut u8);
5624 unsafe impl Send for Spi {}
5625 unsafe impl Sync for Spi {}
5626 impl Spi {
5627 #[doc = "control register 1"]
5628 pub fn cr1(self) -> Reg<regs::Cr1, RW> {
5629 unsafe { Reg::from_ptr(self.0.add(0usize)) }
5630 }
5631 #[doc = "control register 2"]
5632 pub fn cr2(self) -> Reg<regs::Cr2, RW> {
5633 unsafe { Reg::from_ptr(self.0.add(4usize)) }
5634 }
5635 #[doc = "status register"]
5636 pub fn sr(self) -> Reg<regs::Sr, RW> {
5637 unsafe { Reg::from_ptr(self.0.add(8usize)) }
5638 }
5639 #[doc = "data register"]
5640 pub fn dr(self) -> Reg<regs::Dr, RW> {
5641 unsafe { Reg::from_ptr(self.0.add(12usize)) }
5642 }
5643 #[doc = "CRC polynomial register"]
5644 pub fn crcpr(self) -> Reg<regs::Crcpr, RW> {
5645 unsafe { Reg::from_ptr(self.0.add(16usize)) }
5646 }
5647 #[doc = "RX CRC register"]
5648 pub fn rxcrcr(self) -> Reg<regs::Rxcrcr, R> {
5649 unsafe { Reg::from_ptr(self.0.add(20usize)) }
5650 }
5651 #[doc = "TX CRC register"]
5652 pub fn txcrcr(self) -> Reg<regs::Txcrcr, R> {
5653 unsafe { Reg::from_ptr(self.0.add(24usize)) }
5654 }
5655 }
5656 pub mod vals {
5657 use crate::generic::*;
7426 #[repr(transparent)] 5658 #[repr(transparent)]
7427 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5659 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7428 pub struct Stop(pub u8); 5660 pub struct Frlvlr(pub u8);
7429 impl Stop { 5661 impl Frlvlr {
7430 #[doc = "1 stop bit"] 5662 #[doc = "Rx FIFO Empty"]
7431 pub const STOP1: Self = Self(0); 5663 pub const EMPTY: Self = Self(0);
7432 #[doc = "0.5 stop bits"] 5664 #[doc = "Rx 1/4 FIFO"]
7433 pub const STOP0P5: Self = Self(0x01); 5665 pub const QUARTER: Self = Self(0x01);
7434 #[doc = "2 stop bits"] 5666 #[doc = "Rx 1/2 FIFO"]
7435 pub const STOP2: Self = Self(0x02); 5667 pub const HALF: Self = Self(0x02);
7436 #[doc = "1.5 stop bits"] 5668 #[doc = "Rx FIFO full"]
7437 pub const STOP1P5: Self = Self(0x03); 5669 pub const FULL: Self = Self(0x03);
5670 }
5671 #[repr(transparent)]
5672 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5673 pub struct Rxonly(pub u8);
5674 impl Rxonly {
5675 #[doc = "Full duplex (Transmit and receive)"]
5676 pub const FULLDUPLEX: Self = Self(0);
5677 #[doc = "Output disabled (Receive-only mode)"]
5678 pub const OUTPUTDISABLED: Self = Self(0x01);
5679 }
5680 #[repr(transparent)]
5681 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5682 pub struct Mstr(pub u8);
5683 impl Mstr {
5684 #[doc = "Slave configuration"]
5685 pub const SLAVE: Self = Self(0);
5686 #[doc = "Master configuration"]
5687 pub const MASTER: Self = Self(0x01);
7438 } 5688 }
7439 #[repr(transparent)] 5689 #[repr(transparent)]
7440 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5690 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7441 pub struct Cpha(pub u8); 5691 pub struct Cpha(pub u8);
7442 impl Cpha { 5692 impl Cpha {
7443 #[doc = "The first clock transition is the first data capture edge"] 5693 #[doc = "The first clock transition is the first data capture edge"]
7444 pub const FIRST: Self = Self(0); 5694 pub const FIRSTEDGE: Self = Self(0);
7445 #[doc = "The second clock transition is the first data capture edge"] 5695 #[doc = "The second clock transition is the first data capture edge"]
7446 pub const SECOND: Self = Self(0x01); 5696 pub const SECONDEDGE: Self = Self(0x01);
7447 } 5697 }
7448 #[repr(transparent)] 5698 #[repr(transparent)]
7449 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5699 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7450 pub struct Irlp(pub u8); 5700 pub struct Frxth(pub u8);
7451 impl Irlp { 5701 impl Frxth {
7452 #[doc = "Normal mode"] 5702 #[doc = "RXNE event is generated if the FIFO level is greater than or equal to 1/2 (16-bit)"]
7453 pub const NORMAL: Self = Self(0); 5703 pub const HALF: Self = Self(0);
7454 #[doc = "Low-power mode"] 5704 #[doc = "RXNE event is generated if the FIFO level is greater than or equal to 1/4 (8-bit)"]
7455 pub const LOWPOWER: Self = Self(0x01); 5705 pub const QUARTER: Self = Self(0x01);
7456 } 5706 }
7457 #[repr(transparent)] 5707 #[repr(transparent)]
7458 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 5708 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
7459 pub struct Lbdl(pub u8); 5709 pub struct Ftlvlr(pub u8);
7460 impl Lbdl { 5710 impl Ftlvlr {
7461 #[doc = "10-bit break detection"] 5711 #[doc = "Tx FIFO Empty"]
7462 pub const LBDL10: Self = Self(0); 5712 pub const EMPTY: Self = Self(0);
7463 #[doc = "11-bit break detection"] 5713 #[doc = "Tx 1/4 FIFO"]
7464 pub const LBDL11: Self = Self(0x01); 5714 pub const QUARTER: Self = Self(0x01);
5715 #[doc = "Tx 1/2 FIFO"]
5716 pub const HALF: Self = Self(0x02);
5717 #[doc = "Tx FIFO full"]
5718 pub const FULL: Self = Self(0x03);
5719 }
5720 #[repr(transparent)]
5721 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5722 pub struct Bidioe(pub u8);
5723 impl Bidioe {
5724 #[doc = "Output disabled (receive-only mode)"]
5725 pub const OUTPUTDISABLED: Self = Self(0);
5726 #[doc = "Output enabled (transmit-only mode)"]
5727 pub const OUTPUTENABLED: Self = Self(0x01);
5728 }
5729 #[repr(transparent)]
5730 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5731 pub struct Lsbfirst(pub u8);
5732 impl Lsbfirst {
5733 #[doc = "Data is transmitted/received with the MSB first"]
5734 pub const MSBFIRST: Self = Self(0);
5735 #[doc = "Data is transmitted/received with the LSB first"]
5736 pub const LSBFIRST: Self = Self(0x01);
5737 }
5738 #[repr(transparent)]
5739 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5740 pub struct LdmaTx(pub u8);
5741 impl LdmaTx {
5742 #[doc = "Number of data to transfer for transmit is even"]
5743 pub const EVEN: Self = Self(0);
5744 #[doc = "Number of data to transfer for transmit is odd"]
5745 pub const ODD: Self = Self(0x01);
5746 }
5747 #[repr(transparent)]
5748 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5749 pub struct Crcnext(pub u8);
5750 impl Crcnext {
5751 #[doc = "Next transmit value is from Tx buffer"]
5752 pub const TXBUFFER: Self = Self(0);
5753 #[doc = "Next transmit value is from Tx CRC register"]
5754 pub const CRC: Self = Self(0x01);
5755 }
5756 #[repr(transparent)]
5757 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5758 pub struct Ds(pub u8);
5759 impl Ds {
5760 #[doc = "4-bit"]
5761 pub const FOURBIT: Self = Self(0x03);
5762 #[doc = "5-bit"]
5763 pub const FIVEBIT: Self = Self(0x04);
5764 #[doc = "6-bit"]
5765 pub const SIXBIT: Self = Self(0x05);
5766 #[doc = "7-bit"]
5767 pub const SEVENBIT: Self = Self(0x06);
5768 #[doc = "8-bit"]
5769 pub const EIGHTBIT: Self = Self(0x07);
5770 #[doc = "9-bit"]
5771 pub const NINEBIT: Self = Self(0x08);
5772 #[doc = "10-bit"]
5773 pub const TENBIT: Self = Self(0x09);
5774 #[doc = "11-bit"]
5775 pub const ELEVENBIT: Self = Self(0x0a);
5776 #[doc = "12-bit"]
5777 pub const TWELVEBIT: Self = Self(0x0b);
5778 #[doc = "13-bit"]
5779 pub const THIRTEENBIT: Self = Self(0x0c);
5780 #[doc = "14-bit"]
5781 pub const FOURTEENBIT: Self = Self(0x0d);
5782 #[doc = "15-bit"]
5783 pub const FIFTEENBIT: Self = Self(0x0e);
5784 #[doc = "16-bit"]
5785 pub const SIXTEENBIT: Self = Self(0x0f);
5786 }
5787 #[repr(transparent)]
5788 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5789 pub struct LdmaRx(pub u8);
5790 impl LdmaRx {
5791 #[doc = "Number of data to transfer for receive is even"]
5792 pub const EVEN: Self = Self(0);
5793 #[doc = "Number of data to transfer for receive is odd"]
5794 pub const ODD: Self = Self(0x01);
5795 }
5796 #[repr(transparent)]
5797 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5798 pub struct Br(pub u8);
5799 impl Br {
5800 #[doc = "f_PCLK / 2"]
5801 pub const DIV2: Self = Self(0);
5802 #[doc = "f_PCLK / 4"]
5803 pub const DIV4: Self = Self(0x01);
5804 #[doc = "f_PCLK / 8"]
5805 pub const DIV8: Self = Self(0x02);
5806 #[doc = "f_PCLK / 16"]
5807 pub const DIV16: Self = Self(0x03);
5808 #[doc = "f_PCLK / 32"]
5809 pub const DIV32: Self = Self(0x04);
5810 #[doc = "f_PCLK / 64"]
5811 pub const DIV64: Self = Self(0x05);
5812 #[doc = "f_PCLK / 128"]
5813 pub const DIV128: Self = Self(0x06);
5814 #[doc = "f_PCLK / 256"]
5815 pub const DIV256: Self = Self(0x07);
5816 }
5817 #[repr(transparent)]
5818 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5819 pub struct Crcl(pub u8);
5820 impl Crcl {
5821 #[doc = "8-bit CRC length"]
5822 pub const EIGHTBIT: Self = Self(0);
5823 #[doc = "16-bit CRC length"]
5824 pub const SIXTEENBIT: Self = Self(0x01);
5825 }
5826 #[repr(transparent)]
5827 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5828 pub struct Frer(pub u8);
5829 impl Frer {
5830 #[doc = "No frame format error"]
5831 pub const NOERROR: Self = Self(0);
5832 #[doc = "A frame format error occurred"]
5833 pub const ERROR: Self = Self(0x01);
5834 }
5835 #[repr(transparent)]
5836 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5837 pub struct Frf(pub u8);
5838 impl Frf {
5839 #[doc = "SPI Motorola mode"]
5840 pub const MOTOROLA: Self = Self(0);
5841 #[doc = "SPI TI mode"]
5842 pub const TI: Self = Self(0x01);
5843 }
5844 #[repr(transparent)]
5845 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5846 pub struct Bidimode(pub u8);
5847 impl Bidimode {
5848 #[doc = "2-line unidirectional data mode selected"]
5849 pub const UNIDIRECTIONAL: Self = Self(0);
5850 #[doc = "1-line bidirectional data mode selected"]
5851 pub const BIDIRECTIONAL: Self = Self(0x01);
5852 }
5853 #[repr(transparent)]
5854 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
5855 pub struct Cpol(pub u8);
5856 impl Cpol {
5857 #[doc = "CK to 0 when idle"]
5858 pub const IDLELOW: Self = Self(0);
5859 #[doc = "CK to 1 when idle"]
5860 pub const IDLEHIGH: Self = Self(0x01);
5861 }
5862 }
5863 pub mod regs {
5864 use crate::generic::*;
5865 #[doc = "control register 1"]
5866 #[repr(transparent)]
5867 #[derive(Copy, Clone, Eq, PartialEq)]
5868 pub struct Cr1(pub u32);
5869 impl Cr1 {
5870 #[doc = "Clock phase"]
5871 pub const fn cpha(&self) -> super::vals::Cpha {
5872 let val = (self.0 >> 0usize) & 0x01;
5873 super::vals::Cpha(val as u8)
5874 }
5875 #[doc = "Clock phase"]
5876 pub fn set_cpha(&mut self, val: super::vals::Cpha) {
5877 self.0 = (self.0 & !(0x01 << 0usize)) | (((val.0 as u32) & 0x01) << 0usize);
5878 }
5879 #[doc = "Clock polarity"]
5880 pub const fn cpol(&self) -> super::vals::Cpol {
5881 let val = (self.0 >> 1usize) & 0x01;
5882 super::vals::Cpol(val as u8)
5883 }
5884 #[doc = "Clock polarity"]
5885 pub fn set_cpol(&mut self, val: super::vals::Cpol) {
5886 self.0 = (self.0 & !(0x01 << 1usize)) | (((val.0 as u32) & 0x01) << 1usize);
5887 }
5888 #[doc = "Master selection"]
5889 pub const fn mstr(&self) -> super::vals::Mstr {
5890 let val = (self.0 >> 2usize) & 0x01;
5891 super::vals::Mstr(val as u8)
5892 }
5893 #[doc = "Master selection"]
5894 pub fn set_mstr(&mut self, val: super::vals::Mstr) {
5895 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
5896 }
5897 #[doc = "Baud rate control"]
5898 pub const fn br(&self) -> super::vals::Br {
5899 let val = (self.0 >> 3usize) & 0x07;
5900 super::vals::Br(val as u8)
5901 }
5902 #[doc = "Baud rate control"]
5903 pub fn set_br(&mut self, val: super::vals::Br) {
5904 self.0 = (self.0 & !(0x07 << 3usize)) | (((val.0 as u32) & 0x07) << 3usize);
5905 }
5906 #[doc = "SPI enable"]
5907 pub const fn spe(&self) -> bool {
5908 let val = (self.0 >> 6usize) & 0x01;
5909 val != 0
5910 }
5911 #[doc = "SPI enable"]
5912 pub fn set_spe(&mut self, val: bool) {
5913 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
5914 }
5915 #[doc = "Frame format"]
5916 pub const fn lsbfirst(&self) -> super::vals::Lsbfirst {
5917 let val = (self.0 >> 7usize) & 0x01;
5918 super::vals::Lsbfirst(val as u8)
5919 }
5920 #[doc = "Frame format"]
5921 pub fn set_lsbfirst(&mut self, val: super::vals::Lsbfirst) {
5922 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
5923 }
5924 #[doc = "Internal slave select"]
5925 pub const fn ssi(&self) -> bool {
5926 let val = (self.0 >> 8usize) & 0x01;
5927 val != 0
5928 }
5929 #[doc = "Internal slave select"]
5930 pub fn set_ssi(&mut self, val: bool) {
5931 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
5932 }
5933 #[doc = "Software slave management"]
5934 pub const fn ssm(&self) -> bool {
5935 let val = (self.0 >> 9usize) & 0x01;
5936 val != 0
5937 }
5938 #[doc = "Software slave management"]
5939 pub fn set_ssm(&mut self, val: bool) {
5940 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
5941 }
5942 #[doc = "Receive only"]
5943 pub const fn rxonly(&self) -> super::vals::Rxonly {
5944 let val = (self.0 >> 10usize) & 0x01;
5945 super::vals::Rxonly(val as u8)
5946 }
5947 #[doc = "Receive only"]
5948 pub fn set_rxonly(&mut self, val: super::vals::Rxonly) {
5949 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize);
5950 }
5951 #[doc = "CRC length"]
5952 pub const fn crcl(&self) -> super::vals::Crcl {
5953 let val = (self.0 >> 11usize) & 0x01;
5954 super::vals::Crcl(val as u8)
5955 }
5956 #[doc = "CRC length"]
5957 pub fn set_crcl(&mut self, val: super::vals::Crcl) {
5958 self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize);
5959 }
5960 #[doc = "CRC transfer next"]
5961 pub const fn crcnext(&self) -> super::vals::Crcnext {
5962 let val = (self.0 >> 12usize) & 0x01;
5963 super::vals::Crcnext(val as u8)
5964 }
5965 #[doc = "CRC transfer next"]
5966 pub fn set_crcnext(&mut self, val: super::vals::Crcnext) {
5967 self.0 = (self.0 & !(0x01 << 12usize)) | (((val.0 as u32) & 0x01) << 12usize);
5968 }
5969 #[doc = "Hardware CRC calculation enable"]
5970 pub const fn crcen(&self) -> bool {
5971 let val = (self.0 >> 13usize) & 0x01;
5972 val != 0
5973 }
5974 #[doc = "Hardware CRC calculation enable"]
5975 pub fn set_crcen(&mut self, val: bool) {
5976 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
5977 }
5978 #[doc = "Output enable in bidirectional mode"]
5979 pub const fn bidioe(&self) -> super::vals::Bidioe {
5980 let val = (self.0 >> 14usize) & 0x01;
5981 super::vals::Bidioe(val as u8)
5982 }
5983 #[doc = "Output enable in bidirectional mode"]
5984 pub fn set_bidioe(&mut self, val: super::vals::Bidioe) {
5985 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
5986 }
5987 #[doc = "Bidirectional data mode enable"]
5988 pub const fn bidimode(&self) -> super::vals::Bidimode {
5989 let val = (self.0 >> 15usize) & 0x01;
5990 super::vals::Bidimode(val as u8)
5991 }
5992 #[doc = "Bidirectional data mode enable"]
5993 pub fn set_bidimode(&mut self, val: super::vals::Bidimode) {
5994 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize);
5995 }
5996 }
5997 impl Default for Cr1 {
5998 fn default() -> Cr1 {
5999 Cr1(0)
6000 }
6001 }
6002 #[doc = "data register"]
6003 #[repr(transparent)]
6004 #[derive(Copy, Clone, Eq, PartialEq)]
6005 pub struct Dr(pub u32);
6006 impl Dr {
6007 #[doc = "Data register"]
6008 pub const fn dr(&self) -> u16 {
6009 let val = (self.0 >> 0usize) & 0xffff;
6010 val as u16
6011 }
6012 #[doc = "Data register"]
6013 pub fn set_dr(&mut self, val: u16) {
6014 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
6015 }
6016 }
6017 impl Default for Dr {
6018 fn default() -> Dr {
6019 Dr(0)
6020 }
6021 }
6022 #[doc = "status register"]
6023 #[repr(transparent)]
6024 #[derive(Copy, Clone, Eq, PartialEq)]
6025 pub struct Sr(pub u32);
6026 impl Sr {
6027 #[doc = "Receive buffer not empty"]
6028 pub const fn rxne(&self) -> bool {
6029 let val = (self.0 >> 0usize) & 0x01;
6030 val != 0
6031 }
6032 #[doc = "Receive buffer not empty"]
6033 pub fn set_rxne(&mut self, val: bool) {
6034 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
6035 }
6036 #[doc = "Transmit buffer empty"]
6037 pub const fn txe(&self) -> bool {
6038 let val = (self.0 >> 1usize) & 0x01;
6039 val != 0
6040 }
6041 #[doc = "Transmit buffer empty"]
6042 pub fn set_txe(&mut self, val: bool) {
6043 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
6044 }
6045 #[doc = "CRC error flag"]
6046 pub const fn crcerr(&self) -> bool {
6047 let val = (self.0 >> 4usize) & 0x01;
6048 val != 0
6049 }
6050 #[doc = "CRC error flag"]
6051 pub fn set_crcerr(&mut self, val: bool) {
6052 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
6053 }
6054 #[doc = "Mode fault"]
6055 pub const fn modf(&self) -> bool {
6056 let val = (self.0 >> 5usize) & 0x01;
6057 val != 0
6058 }
6059 #[doc = "Mode fault"]
6060 pub fn set_modf(&mut self, val: bool) {
6061 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
6062 }
6063 #[doc = "Overrun flag"]
6064 pub const fn ovr(&self) -> bool {
6065 let val = (self.0 >> 6usize) & 0x01;
6066 val != 0
6067 }
6068 #[doc = "Overrun flag"]
6069 pub fn set_ovr(&mut self, val: bool) {
6070 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
6071 }
6072 #[doc = "Busy flag"]
6073 pub const fn bsy(&self) -> bool {
6074 let val = (self.0 >> 7usize) & 0x01;
6075 val != 0
6076 }
6077 #[doc = "Busy flag"]
6078 pub fn set_bsy(&mut self, val: bool) {
6079 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
6080 }
6081 #[doc = "Frame format error"]
6082 pub const fn fre(&self) -> bool {
6083 let val = (self.0 >> 8usize) & 0x01;
6084 val != 0
6085 }
6086 #[doc = "Frame format error"]
6087 pub fn set_fre(&mut self, val: bool) {
6088 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
6089 }
6090 #[doc = "FIFO reception level"]
6091 pub const fn frlvl(&self) -> u8 {
6092 let val = (self.0 >> 9usize) & 0x03;
6093 val as u8
6094 }
6095 #[doc = "FIFO reception level"]
6096 pub fn set_frlvl(&mut self, val: u8) {
6097 self.0 = (self.0 & !(0x03 << 9usize)) | (((val as u32) & 0x03) << 9usize);
6098 }
6099 #[doc = "FIFO Transmission Level"]
6100 pub const fn ftlvl(&self) -> u8 {
6101 let val = (self.0 >> 11usize) & 0x03;
6102 val as u8
6103 }
6104 #[doc = "FIFO Transmission Level"]
6105 pub fn set_ftlvl(&mut self, val: u8) {
6106 self.0 = (self.0 & !(0x03 << 11usize)) | (((val as u32) & 0x03) << 11usize);
6107 }
6108 }
6109 impl Default for Sr {
6110 fn default() -> Sr {
6111 Sr(0)
6112 }
6113 }
6114 #[doc = "control register 2"]
6115 #[repr(transparent)]
6116 #[derive(Copy, Clone, Eq, PartialEq)]
6117 pub struct Cr2(pub u32);
6118 impl Cr2 {
6119 #[doc = "Rx buffer DMA enable"]
6120 pub const fn rxdmaen(&self) -> bool {
6121 let val = (self.0 >> 0usize) & 0x01;
6122 val != 0
6123 }
6124 #[doc = "Rx buffer DMA enable"]
6125 pub fn set_rxdmaen(&mut self, val: bool) {
6126 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
6127 }
6128 #[doc = "Tx buffer DMA enable"]
6129 pub const fn txdmaen(&self) -> bool {
6130 let val = (self.0 >> 1usize) & 0x01;
6131 val != 0
6132 }
6133 #[doc = "Tx buffer DMA enable"]
6134 pub fn set_txdmaen(&mut self, val: bool) {
6135 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
6136 }
6137 #[doc = "SS output enable"]
6138 pub const fn ssoe(&self) -> bool {
6139 let val = (self.0 >> 2usize) & 0x01;
6140 val != 0
6141 }
6142 #[doc = "SS output enable"]
6143 pub fn set_ssoe(&mut self, val: bool) {
6144 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
6145 }
6146 #[doc = "NSS pulse management"]
6147 pub const fn nssp(&self) -> bool {
6148 let val = (self.0 >> 3usize) & 0x01;
6149 val != 0
6150 }
6151 #[doc = "NSS pulse management"]
6152 pub fn set_nssp(&mut self, val: bool) {
6153 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
6154 }
6155 #[doc = "Frame format"]
6156 pub const fn frf(&self) -> super::vals::Frf {
6157 let val = (self.0 >> 4usize) & 0x01;
6158 super::vals::Frf(val as u8)
6159 }
6160 #[doc = "Frame format"]
6161 pub fn set_frf(&mut self, val: super::vals::Frf) {
6162 self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize);
6163 }
6164 #[doc = "Error interrupt enable"]
6165 pub const fn errie(&self) -> bool {
6166 let val = (self.0 >> 5usize) & 0x01;
6167 val != 0
6168 }
6169 #[doc = "Error interrupt enable"]
6170 pub fn set_errie(&mut self, val: bool) {
6171 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
6172 }
6173 #[doc = "RX buffer not empty interrupt enable"]
6174 pub const fn rxneie(&self) -> bool {
6175 let val = (self.0 >> 6usize) & 0x01;
6176 val != 0
6177 }
6178 #[doc = "RX buffer not empty interrupt enable"]
6179 pub fn set_rxneie(&mut self, val: bool) {
6180 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
6181 }
6182 #[doc = "Tx buffer empty interrupt enable"]
6183 pub const fn txeie(&self) -> bool {
6184 let val = (self.0 >> 7usize) & 0x01;
6185 val != 0
6186 }
6187 #[doc = "Tx buffer empty interrupt enable"]
6188 pub fn set_txeie(&mut self, val: bool) {
6189 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
6190 }
6191 #[doc = "Data size"]
6192 pub const fn ds(&self) -> super::vals::Ds {
6193 let val = (self.0 >> 8usize) & 0x0f;
6194 super::vals::Ds(val as u8)
6195 }
6196 #[doc = "Data size"]
6197 pub fn set_ds(&mut self, val: super::vals::Ds) {
6198 self.0 = (self.0 & !(0x0f << 8usize)) | (((val.0 as u32) & 0x0f) << 8usize);
6199 }
6200 #[doc = "FIFO reception threshold"]
6201 pub const fn frxth(&self) -> super::vals::Frxth {
6202 let val = (self.0 >> 12usize) & 0x01;
6203 super::vals::Frxth(val as u8)
6204 }
6205 #[doc = "FIFO reception threshold"]
6206 pub fn set_frxth(&mut self, val: super::vals::Frxth) {
6207 self.0 = (self.0 & !(0x01 << 12usize)) | (((val.0 as u32) & 0x01) << 12usize);
6208 }
6209 #[doc = "Last DMA transfer for reception"]
6210 pub const fn ldma_rx(&self) -> super::vals::LdmaRx {
6211 let val = (self.0 >> 13usize) & 0x01;
6212 super::vals::LdmaRx(val as u8)
6213 }
6214 #[doc = "Last DMA transfer for reception"]
6215 pub fn set_ldma_rx(&mut self, val: super::vals::LdmaRx) {
6216 self.0 = (self.0 & !(0x01 << 13usize)) | (((val.0 as u32) & 0x01) << 13usize);
6217 }
6218 #[doc = "Last DMA transfer for transmission"]
6219 pub const fn ldma_tx(&self) -> super::vals::LdmaTx {
6220 let val = (self.0 >> 14usize) & 0x01;
6221 super::vals::LdmaTx(val as u8)
6222 }
6223 #[doc = "Last DMA transfer for transmission"]
6224 pub fn set_ldma_tx(&mut self, val: super::vals::LdmaTx) {
6225 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
6226 }
6227 }
6228 impl Default for Cr2 {
6229 fn default() -> Cr2 {
6230 Cr2(0)
6231 }
6232 }
6233 #[doc = "CRC polynomial register"]
6234 #[repr(transparent)]
6235 #[derive(Copy, Clone, Eq, PartialEq)]
6236 pub struct Crcpr(pub u32);
6237 impl Crcpr {
6238 #[doc = "CRC polynomial register"]
6239 pub const fn crcpoly(&self) -> u16 {
6240 let val = (self.0 >> 0usize) & 0xffff;
6241 val as u16
6242 }
6243 #[doc = "CRC polynomial register"]
6244 pub fn set_crcpoly(&mut self, val: u16) {
6245 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
6246 }
6247 }
6248 impl Default for Crcpr {
6249 fn default() -> Crcpr {
6250 Crcpr(0)
6251 }
6252 }
6253 #[doc = "TX CRC register"]
6254 #[repr(transparent)]
6255 #[derive(Copy, Clone, Eq, PartialEq)]
6256 pub struct Txcrcr(pub u32);
6257 impl Txcrcr {
6258 #[doc = "Tx CRC register"]
6259 pub const fn tx_crc(&self) -> u16 {
6260 let val = (self.0 >> 0usize) & 0xffff;
6261 val as u16
6262 }
6263 #[doc = "Tx CRC register"]
6264 pub fn set_tx_crc(&mut self, val: u16) {
6265 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
6266 }
6267 }
6268 impl Default for Txcrcr {
6269 fn default() -> Txcrcr {
6270 Txcrcr(0)
6271 }
6272 }
6273 #[doc = "RX CRC register"]
6274 #[repr(transparent)]
6275 #[derive(Copy, Clone, Eq, PartialEq)]
6276 pub struct Rxcrcr(pub u32);
6277 impl Rxcrcr {
6278 #[doc = "Rx CRC register"]
6279 pub const fn rx_crc(&self) -> u16 {
6280 let val = (self.0 >> 0usize) & 0xffff;
6281 val as u16
6282 }
6283 #[doc = "Rx CRC register"]
6284 pub fn set_rx_crc(&mut self, val: u16) {
6285 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
6286 }
6287 }
6288 impl Default for Rxcrcr {
6289 fn default() -> Rxcrcr {
6290 Rxcrcr(0)
6291 }
7465 } 6292 }
7466 } 6293 }
7467} 6294}
@@ -7531,6 +6358,30 @@ pub mod syscfg_f4 {
7531 Memrm(0) 6358 Memrm(0)
7532 } 6359 }
7533 } 6360 }
6361 #[doc = "external interrupt configuration register"]
6362 #[repr(transparent)]
6363 #[derive(Copy, Clone, Eq, PartialEq)]
6364 pub struct Exticr(pub u32);
6365 impl Exticr {
6366 #[doc = "EXTI x configuration"]
6367 pub fn exti(&self, n: usize) -> u8 {
6368 assert!(n < 4usize);
6369 let offs = 0usize + n * 4usize;
6370 let val = (self.0 >> offs) & 0x0f;
6371 val as u8
6372 }
6373 #[doc = "EXTI x configuration"]
6374 pub fn set_exti(&mut self, n: usize, val: u8) {
6375 assert!(n < 4usize);
6376 let offs = 0usize + n * 4usize;
6377 self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs);
6378 }
6379 }
6380 impl Default for Exticr {
6381 fn default() -> Exticr {
6382 Exticr(0)
6383 }
6384 }
7534 #[doc = "peripheral mode configuration register"] 6385 #[doc = "peripheral mode configuration register"]
7535 #[repr(transparent)] 6386 #[repr(transparent)]
7536 #[derive(Copy, Clone, Eq, PartialEq)] 6387 #[derive(Copy, Clone, Eq, PartialEq)]
@@ -7578,30 +6429,6 @@ pub mod syscfg_f4 {
7578 Pmc(0) 6429 Pmc(0)
7579 } 6430 }
7580 } 6431 }
7581 #[doc = "external interrupt configuration register"]
7582 #[repr(transparent)]
7583 #[derive(Copy, Clone, Eq, PartialEq)]
7584 pub struct Exticr(pub u32);
7585 impl Exticr {
7586 #[doc = "EXTI x configuration"]
7587 pub fn exti(&self, n: usize) -> u8 {
7588 assert!(n < 4usize);
7589 let offs = 0usize + n * 4usize;
7590 let val = (self.0 >> offs) & 0x0f;
7591 val as u8
7592 }
7593 #[doc = "EXTI x configuration"]
7594 pub fn set_exti(&mut self, n: usize, val: u8) {
7595 assert!(n < 4usize);
7596 let offs = 0usize + n * 4usize;
7597 self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs);
7598 }
7599 }
7600 impl Default for Exticr {
7601 fn default() -> Exticr {
7602 Exticr(0)
7603 }
7604 }
7605 #[doc = "Compensation cell control register"] 6432 #[doc = "Compensation cell control register"]
7606 #[repr(transparent)] 6433 #[repr(transparent)]
7607 #[derive(Copy, Clone, Eq, PartialEq)] 6434 #[derive(Copy, Clone, Eq, PartialEq)]
@@ -7633,1471 +6460,2644 @@ pub mod syscfg_f4 {
7633 } 6460 }
7634 } 6461 }
7635} 6462}
7636pub mod dma_v2 { 6463pub mod spi_v1 {
7637 use crate::generic::*; 6464 use crate::generic::*;
7638 #[doc = "DMA controller"] 6465 #[doc = "Serial peripheral interface"]
7639 #[derive(Copy, Clone)]
7640 pub struct Dma(pub *mut u8);
7641 unsafe impl Send for Dma {}
7642 unsafe impl Sync for Dma {}
7643 impl Dma {
7644 #[doc = "low interrupt status register"]
7645 pub fn isr(self, n: usize) -> Reg<regs::Isr, R> {
7646 assert!(n < 2usize);
7647 unsafe { Reg::from_ptr(self.0.add(0usize + n * 4usize)) }
7648 }
7649 #[doc = "low interrupt flag clear register"]
7650 pub fn ifcr(self, n: usize) -> Reg<regs::Ifcr, W> {
7651 assert!(n < 2usize);
7652 unsafe { Reg::from_ptr(self.0.add(8usize + n * 4usize)) }
7653 }
7654 #[doc = "Stream cluster: S?CR, S?NDTR, S?M0AR, S?M1AR and S?FCR registers"]
7655 pub fn st(self, n: usize) -> St {
7656 assert!(n < 8usize);
7657 unsafe { St(self.0.add(16usize + n * 24usize)) }
7658 }
7659 }
7660 #[doc = "Stream cluster: S?CR, S?NDTR, S?M0AR, S?M1AR and S?FCR registers"]
7661 #[derive(Copy, Clone)] 6466 #[derive(Copy, Clone)]
7662 pub struct St(pub *mut u8); 6467 pub struct Spi(pub *mut u8);
7663 unsafe impl Send for St {} 6468 unsafe impl Send for Spi {}
7664 unsafe impl Sync for St {} 6469 unsafe impl Sync for Spi {}
7665 impl St { 6470 impl Spi {
7666 #[doc = "stream x configuration register"] 6471 #[doc = "control register 1"]
7667 pub fn cr(self) -> Reg<regs::Cr, RW> { 6472 pub fn cr1(self) -> Reg<regs::Cr1, RW> {
7668 unsafe { Reg::from_ptr(self.0.add(0usize)) } 6473 unsafe { Reg::from_ptr(self.0.add(0usize)) }
7669 } 6474 }
7670 #[doc = "stream x number of data register"] 6475 #[doc = "control register 2"]
7671 pub fn ndtr(self) -> Reg<regs::Ndtr, RW> { 6476 pub fn cr2(self) -> Reg<regs::Cr2, RW> {
7672 unsafe { Reg::from_ptr(self.0.add(4usize)) } 6477 unsafe { Reg::from_ptr(self.0.add(4usize)) }
7673 } 6478 }
7674 #[doc = "stream x peripheral address register"] 6479 #[doc = "status register"]
7675 pub fn par(self) -> Reg<u32, RW> { 6480 pub fn sr(self) -> Reg<regs::Sr, RW> {
7676 unsafe { Reg::from_ptr(self.0.add(8usize)) } 6481 unsafe { Reg::from_ptr(self.0.add(8usize)) }
7677 } 6482 }
7678 #[doc = "stream x memory 0 address register"] 6483 #[doc = "data register"]
7679 pub fn m0ar(self) -> Reg<u32, RW> { 6484 pub fn dr(self) -> Reg<regs::Dr, RW> {
7680 unsafe { Reg::from_ptr(self.0.add(12usize)) } 6485 unsafe { Reg::from_ptr(self.0.add(12usize)) }
7681 } 6486 }
7682 #[doc = "stream x memory 1 address register"] 6487 #[doc = "CRC polynomial register"]
7683 pub fn m1ar(self) -> Reg<u32, RW> { 6488 pub fn crcpr(self) -> Reg<regs::Crcpr, RW> {
7684 unsafe { Reg::from_ptr(self.0.add(16usize)) } 6489 unsafe { Reg::from_ptr(self.0.add(16usize)) }
7685 } 6490 }
7686 #[doc = "stream x FIFO control register"] 6491 #[doc = "RX CRC register"]
7687 pub fn fcr(self) -> Reg<regs::Fcr, RW> { 6492 pub fn rxcrcr(self) -> Reg<regs::Rxcrcr, R> {
7688 unsafe { Reg::from_ptr(self.0.add(20usize)) } 6493 unsafe { Reg::from_ptr(self.0.add(20usize)) }
7689 } 6494 }
6495 #[doc = "TX CRC register"]
6496 pub fn txcrcr(self) -> Reg<regs::Txcrcr, R> {
6497 unsafe { Reg::from_ptr(self.0.add(24usize)) }
6498 }
6499 }
6500 pub mod vals {
6501 use crate::generic::*;
6502 #[repr(transparent)]
6503 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6504 pub struct Lsbfirst(pub u8);
6505 impl Lsbfirst {
6506 #[doc = "Data is transmitted/received with the MSB first"]
6507 pub const MSBFIRST: Self = Self(0);
6508 #[doc = "Data is transmitted/received with the LSB first"]
6509 pub const LSBFIRST: Self = Self(0x01);
6510 }
6511 #[repr(transparent)]
6512 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6513 pub struct Iscfg(pub u8);
6514 impl Iscfg {
6515 #[doc = "Slave - transmit"]
6516 pub const SLAVETX: Self = Self(0);
6517 #[doc = "Slave - receive"]
6518 pub const SLAVERX: Self = Self(0x01);
6519 #[doc = "Master - transmit"]
6520 pub const MASTERTX: Self = Self(0x02);
6521 #[doc = "Master - receive"]
6522 pub const MASTERRX: Self = Self(0x03);
6523 }
6524 #[repr(transparent)]
6525 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6526 pub struct Rxonly(pub u8);
6527 impl Rxonly {
6528 #[doc = "Full duplex (Transmit and receive)"]
6529 pub const FULLDUPLEX: Self = Self(0);
6530 #[doc = "Output disabled (Receive-only mode)"]
6531 pub const OUTPUTDISABLED: Self = Self(0x01);
6532 }
6533 #[repr(transparent)]
6534 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6535 pub struct Mstr(pub u8);
6536 impl Mstr {
6537 #[doc = "Slave configuration"]
6538 pub const SLAVE: Self = Self(0);
6539 #[doc = "Master configuration"]
6540 pub const MASTER: Self = Self(0x01);
6541 }
6542 #[repr(transparent)]
6543 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6544 pub struct Crcnext(pub u8);
6545 impl Crcnext {
6546 #[doc = "Next transmit value is from Tx buffer"]
6547 pub const TXBUFFER: Self = Self(0);
6548 #[doc = "Next transmit value is from Tx CRC register"]
6549 pub const CRC: Self = Self(0x01);
6550 }
6551 #[repr(transparent)]
6552 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6553 pub struct Br(pub u8);
6554 impl Br {
6555 #[doc = "f_PCLK / 2"]
6556 pub const DIV2: Self = Self(0);
6557 #[doc = "f_PCLK / 4"]
6558 pub const DIV4: Self = Self(0x01);
6559 #[doc = "f_PCLK / 8"]
6560 pub const DIV8: Self = Self(0x02);
6561 #[doc = "f_PCLK / 16"]
6562 pub const DIV16: Self = Self(0x03);
6563 #[doc = "f_PCLK / 32"]
6564 pub const DIV32: Self = Self(0x04);
6565 #[doc = "f_PCLK / 64"]
6566 pub const DIV64: Self = Self(0x05);
6567 #[doc = "f_PCLK / 128"]
6568 pub const DIV128: Self = Self(0x06);
6569 #[doc = "f_PCLK / 256"]
6570 pub const DIV256: Self = Self(0x07);
6571 }
6572 #[repr(transparent)]
6573 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6574 pub struct Frf(pub u8);
6575 impl Frf {
6576 #[doc = "SPI Motorola mode"]
6577 pub const MOTOROLA: Self = Self(0);
6578 #[doc = "SPI TI mode"]
6579 pub const TI: Self = Self(0x01);
6580 }
6581 #[repr(transparent)]
6582 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6583 pub struct Cpha(pub u8);
6584 impl Cpha {
6585 #[doc = "The first clock transition is the first data capture edge"]
6586 pub const FIRSTEDGE: Self = Self(0);
6587 #[doc = "The second clock transition is the first data capture edge"]
6588 pub const SECONDEDGE: Self = Self(0x01);
6589 }
6590 #[repr(transparent)]
6591 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6592 pub struct Bidioe(pub u8);
6593 impl Bidioe {
6594 #[doc = "Output disabled (receive-only mode)"]
6595 pub const OUTPUTDISABLED: Self = Self(0);
6596 #[doc = "Output enabled (transmit-only mode)"]
6597 pub const OUTPUTENABLED: Self = Self(0x01);
6598 }
6599 #[repr(transparent)]
6600 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6601 pub struct Cpol(pub u8);
6602 impl Cpol {
6603 #[doc = "CK to 0 when idle"]
6604 pub const IDLELOW: Self = Self(0);
6605 #[doc = "CK to 1 when idle"]
6606 pub const IDLEHIGH: Self = Self(0x01);
6607 }
6608 #[repr(transparent)]
6609 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6610 pub struct Dff(pub u8);
6611 impl Dff {
6612 #[doc = "8-bit data frame format is selected for transmission/reception"]
6613 pub const EIGHTBIT: Self = Self(0);
6614 #[doc = "16-bit data frame format is selected for transmission/reception"]
6615 pub const SIXTEENBIT: Self = Self(0x01);
6616 }
6617 #[repr(transparent)]
6618 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6619 pub struct Frer(pub u8);
6620 impl Frer {
6621 #[doc = "No frame format error"]
6622 pub const NOERROR: Self = Self(0);
6623 #[doc = "A frame format error occurred"]
6624 pub const ERROR: Self = Self(0x01);
6625 }
6626 #[repr(transparent)]
6627 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
6628 pub struct Bidimode(pub u8);
6629 impl Bidimode {
6630 #[doc = "2-line unidirectional data mode selected"]
6631 pub const UNIDIRECTIONAL: Self = Self(0);
6632 #[doc = "1-line bidirectional data mode selected"]
6633 pub const BIDIRECTIONAL: Self = Self(0x01);
6634 }
7690 } 6635 }
7691 pub mod regs { 6636 pub mod regs {
7692 use crate::generic::*; 6637 use crate::generic::*;
7693 #[doc = "stream x number of data register"] 6638 #[doc = "CRC polynomial register"]
7694 #[repr(transparent)] 6639 #[repr(transparent)]
7695 #[derive(Copy, Clone, Eq, PartialEq)] 6640 #[derive(Copy, Clone, Eq, PartialEq)]
7696 pub struct Ndtr(pub u32); 6641 pub struct Crcpr(pub u32);
7697 impl Ndtr { 6642 impl Crcpr {
7698 #[doc = "Number of data items to transfer"] 6643 #[doc = "CRC polynomial register"]
7699 pub const fn ndt(&self) -> u16 { 6644 pub const fn crcpoly(&self) -> u16 {
7700 let val = (self.0 >> 0usize) & 0xffff; 6645 let val = (self.0 >> 0usize) & 0xffff;
7701 val as u16 6646 val as u16
7702 } 6647 }
7703 #[doc = "Number of data items to transfer"] 6648 #[doc = "CRC polynomial register"]
7704 pub fn set_ndt(&mut self, val: u16) { 6649 pub fn set_crcpoly(&mut self, val: u16) {
7705 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); 6650 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
7706 } 6651 }
7707 } 6652 }
7708 impl Default for Ndtr { 6653 impl Default for Crcpr {
7709 fn default() -> Ndtr { 6654 fn default() -> Crcpr {
7710 Ndtr(0) 6655 Crcpr(0)
7711 } 6656 }
7712 } 6657 }
7713 #[doc = "stream x FIFO control register"] 6658 #[doc = "TX CRC register"]
7714 #[repr(transparent)] 6659 #[repr(transparent)]
7715 #[derive(Copy, Clone, Eq, PartialEq)] 6660 #[derive(Copy, Clone, Eq, PartialEq)]
7716 pub struct Fcr(pub u32); 6661 pub struct Txcrcr(pub u32);
7717 impl Fcr { 6662 impl Txcrcr {
7718 #[doc = "FIFO threshold selection"] 6663 #[doc = "Tx CRC register"]
7719 pub const fn fth(&self) -> super::vals::Fth { 6664 pub const fn tx_crc(&self) -> u16 {
7720 let val = (self.0 >> 0usize) & 0x03; 6665 let val = (self.0 >> 0usize) & 0xffff;
7721 super::vals::Fth(val as u8) 6666 val as u16
7722 }
7723 #[doc = "FIFO threshold selection"]
7724 pub fn set_fth(&mut self, val: super::vals::Fth) {
7725 self.0 = (self.0 & !(0x03 << 0usize)) | (((val.0 as u32) & 0x03) << 0usize);
7726 }
7727 #[doc = "Direct mode disable"]
7728 pub const fn dmdis(&self) -> super::vals::Dmdis {
7729 let val = (self.0 >> 2usize) & 0x01;
7730 super::vals::Dmdis(val as u8)
7731 }
7732 #[doc = "Direct mode disable"]
7733 pub fn set_dmdis(&mut self, val: super::vals::Dmdis) {
7734 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
7735 }
7736 #[doc = "FIFO status"]
7737 pub const fn fs(&self) -> super::vals::Fs {
7738 let val = (self.0 >> 3usize) & 0x07;
7739 super::vals::Fs(val as u8)
7740 }
7741 #[doc = "FIFO status"]
7742 pub fn set_fs(&mut self, val: super::vals::Fs) {
7743 self.0 = (self.0 & !(0x07 << 3usize)) | (((val.0 as u32) & 0x07) << 3usize);
7744 }
7745 #[doc = "FIFO error interrupt enable"]
7746 pub const fn feie(&self) -> bool {
7747 let val = (self.0 >> 7usize) & 0x01;
7748 val != 0
7749 } 6667 }
7750 #[doc = "FIFO error interrupt enable"] 6668 #[doc = "Tx CRC register"]
7751 pub fn set_feie(&mut self, val: bool) { 6669 pub fn set_tx_crc(&mut self, val: u16) {
7752 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 6670 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
7753 } 6671 }
7754 } 6672 }
7755 impl Default for Fcr { 6673 impl Default for Txcrcr {
7756 fn default() -> Fcr { 6674 fn default() -> Txcrcr {
7757 Fcr(0) 6675 Txcrcr(0)
7758 } 6676 }
7759 } 6677 }
7760 #[doc = "low interrupt flag clear register"] 6678 #[doc = "control register 2"]
7761 #[repr(transparent)] 6679 #[repr(transparent)]
7762 #[derive(Copy, Clone, Eq, PartialEq)] 6680 #[derive(Copy, Clone, Eq, PartialEq)]
7763 pub struct Ifcr(pub u32); 6681 pub struct Cr2(pub u32);
7764 impl Ifcr { 6682 impl Cr2 {
7765 #[doc = "Stream x clear FIFO error interrupt flag (x = 3..0)"] 6683 #[doc = "Rx buffer DMA enable"]
7766 pub fn cfeif(&self, n: usize) -> bool { 6684 pub const fn rxdmaen(&self) -> bool {
7767 assert!(n < 4usize); 6685 let val = (self.0 >> 0usize) & 0x01;
7768 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7769 let val = (self.0 >> offs) & 0x01;
7770 val != 0 6686 val != 0
7771 } 6687 }
7772 #[doc = "Stream x clear FIFO error interrupt flag (x = 3..0)"] 6688 #[doc = "Rx buffer DMA enable"]
7773 pub fn set_cfeif(&mut self, n: usize, val: bool) { 6689 pub fn set_rxdmaen(&mut self, val: bool) {
7774 assert!(n < 4usize); 6690 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
7775 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7776 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
7777 } 6691 }
7778 #[doc = "Stream x clear direct mode error interrupt flag (x = 3..0)"] 6692 #[doc = "Tx buffer DMA enable"]
7779 pub fn cdmeif(&self, n: usize) -> bool { 6693 pub const fn txdmaen(&self) -> bool {
7780 assert!(n < 4usize); 6694 let val = (self.0 >> 1usize) & 0x01;
7781 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7782 let val = (self.0 >> offs) & 0x01;
7783 val != 0 6695 val != 0
7784 } 6696 }
7785 #[doc = "Stream x clear direct mode error interrupt flag (x = 3..0)"] 6697 #[doc = "Tx buffer DMA enable"]
7786 pub fn set_cdmeif(&mut self, n: usize, val: bool) { 6698 pub fn set_txdmaen(&mut self, val: bool) {
7787 assert!(n < 4usize); 6699 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
7788 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7789 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
7790 } 6700 }
7791 #[doc = "Stream x clear transfer error interrupt flag (x = 3..0)"] 6701 #[doc = "SS output enable"]
7792 pub fn cteif(&self, n: usize) -> bool { 6702 pub const fn ssoe(&self) -> bool {
7793 assert!(n < 4usize); 6703 let val = (self.0 >> 2usize) & 0x01;
7794 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7795 let val = (self.0 >> offs) & 0x01;
7796 val != 0 6704 val != 0
7797 } 6705 }
7798 #[doc = "Stream x clear transfer error interrupt flag (x = 3..0)"] 6706 #[doc = "SS output enable"]
7799 pub fn set_cteif(&mut self, n: usize, val: bool) { 6707 pub fn set_ssoe(&mut self, val: bool) {
7800 assert!(n < 4usize); 6708 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
7801 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7802 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
7803 } 6709 }
7804 #[doc = "Stream x clear half transfer interrupt flag (x = 3..0)"] 6710 #[doc = "Frame format"]
7805 pub fn chtif(&self, n: usize) -> bool { 6711 pub const fn frf(&self) -> super::vals::Frf {
7806 assert!(n < 4usize); 6712 let val = (self.0 >> 4usize) & 0x01;
7807 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); 6713 super::vals::Frf(val as u8)
7808 let val = (self.0 >> offs) & 0x01; 6714 }
6715 #[doc = "Frame format"]
6716 pub fn set_frf(&mut self, val: super::vals::Frf) {
6717 self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize);
6718 }
6719 #[doc = "Error interrupt enable"]
6720 pub const fn errie(&self) -> bool {
6721 let val = (self.0 >> 5usize) & 0x01;
7809 val != 0 6722 val != 0
7810 } 6723 }
7811 #[doc = "Stream x clear half transfer interrupt flag (x = 3..0)"] 6724 #[doc = "Error interrupt enable"]
7812 pub fn set_chtif(&mut self, n: usize, val: bool) { 6725 pub fn set_errie(&mut self, val: bool) {
7813 assert!(n < 4usize); 6726 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
7814 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7815 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
7816 } 6727 }
7817 #[doc = "Stream x clear transfer complete interrupt flag (x = 3..0)"] 6728 #[doc = "RX buffer not empty interrupt enable"]
7818 pub fn ctcif(&self, n: usize) -> bool { 6729 pub const fn rxneie(&self) -> bool {
7819 assert!(n < 4usize); 6730 let val = (self.0 >> 6usize) & 0x01;
7820 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
7821 let val = (self.0 >> offs) & 0x01;
7822 val != 0 6731 val != 0
7823 } 6732 }
7824 #[doc = "Stream x clear transfer complete interrupt flag (x = 3..0)"] 6733 #[doc = "RX buffer not empty interrupt enable"]
7825 pub fn set_ctcif(&mut self, n: usize, val: bool) { 6734 pub fn set_rxneie(&mut self, val: bool) {
7826 assert!(n < 4usize); 6735 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
7827 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); 6736 }
7828 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 6737 #[doc = "Tx buffer empty interrupt enable"]
6738 pub const fn txeie(&self) -> bool {
6739 let val = (self.0 >> 7usize) & 0x01;
6740 val != 0
6741 }
6742 #[doc = "Tx buffer empty interrupt enable"]
6743 pub fn set_txeie(&mut self, val: bool) {
6744 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
7829 } 6745 }
7830 } 6746 }
7831 impl Default for Ifcr { 6747 impl Default for Cr2 {
7832 fn default() -> Ifcr { 6748 fn default() -> Cr2 {
7833 Ifcr(0) 6749 Cr2(0)
7834 } 6750 }
7835 } 6751 }
7836 #[doc = "stream x configuration register"] 6752 #[doc = "control register 1"]
7837 #[repr(transparent)] 6753 #[repr(transparent)]
7838 #[derive(Copy, Clone, Eq, PartialEq)] 6754 #[derive(Copy, Clone, Eq, PartialEq)]
7839 pub struct Cr(pub u32); 6755 pub struct Cr1(pub u32);
7840 impl Cr { 6756 impl Cr1 {
7841 #[doc = "Stream enable / flag stream ready when read low"] 6757 #[doc = "Clock phase"]
7842 pub const fn en(&self) -> bool { 6758 pub const fn cpha(&self) -> super::vals::Cpha {
7843 let val = (self.0 >> 0usize) & 0x01; 6759 let val = (self.0 >> 0usize) & 0x01;
7844 val != 0 6760 super::vals::Cpha(val as u8)
7845 } 6761 }
7846 #[doc = "Stream enable / flag stream ready when read low"] 6762 #[doc = "Clock phase"]
7847 pub fn set_en(&mut self, val: bool) { 6763 pub fn set_cpha(&mut self, val: super::vals::Cpha) {
7848 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 6764 self.0 = (self.0 & !(0x01 << 0usize)) | (((val.0 as u32) & 0x01) << 0usize);
7849 } 6765 }
7850 #[doc = "Direct mode error interrupt enable"] 6766 #[doc = "Clock polarity"]
7851 pub const fn dmeie(&self) -> bool { 6767 pub const fn cpol(&self) -> super::vals::Cpol {
7852 let val = (self.0 >> 1usize) & 0x01; 6768 let val = (self.0 >> 1usize) & 0x01;
7853 val != 0 6769 super::vals::Cpol(val as u8)
7854 } 6770 }
7855 #[doc = "Direct mode error interrupt enable"] 6771 #[doc = "Clock polarity"]
7856 pub fn set_dmeie(&mut self, val: bool) { 6772 pub fn set_cpol(&mut self, val: super::vals::Cpol) {
7857 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 6773 self.0 = (self.0 & !(0x01 << 1usize)) | (((val.0 as u32) & 0x01) << 1usize);
7858 } 6774 }
7859 #[doc = "Transfer error interrupt enable"] 6775 #[doc = "Master selection"]
7860 pub const fn teie(&self) -> bool { 6776 pub const fn mstr(&self) -> super::vals::Mstr {
7861 let val = (self.0 >> 2usize) & 0x01; 6777 let val = (self.0 >> 2usize) & 0x01;
7862 val != 0 6778 super::vals::Mstr(val as u8)
7863 } 6779 }
7864 #[doc = "Transfer error interrupt enable"] 6780 #[doc = "Master selection"]
7865 pub fn set_teie(&mut self, val: bool) { 6781 pub fn set_mstr(&mut self, val: super::vals::Mstr) {
7866 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); 6782 self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize);
7867 } 6783 }
7868 #[doc = "Half transfer interrupt enable"] 6784 #[doc = "Baud rate control"]
7869 pub const fn htie(&self) -> bool { 6785 pub const fn br(&self) -> super::vals::Br {
7870 let val = (self.0 >> 3usize) & 0x01; 6786 let val = (self.0 >> 3usize) & 0x07;
7871 val != 0 6787 super::vals::Br(val as u8)
7872 } 6788 }
7873 #[doc = "Half transfer interrupt enable"] 6789 #[doc = "Baud rate control"]
7874 pub fn set_htie(&mut self, val: bool) { 6790 pub fn set_br(&mut self, val: super::vals::Br) {
7875 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); 6791 self.0 = (self.0 & !(0x07 << 3usize)) | (((val.0 as u32) & 0x07) << 3usize);
7876 } 6792 }
7877 #[doc = "Transfer complete interrupt enable"] 6793 #[doc = "SPI enable"]
7878 pub const fn tcie(&self) -> bool { 6794 pub const fn spe(&self) -> bool {
7879 let val = (self.0 >> 4usize) & 0x01; 6795 let val = (self.0 >> 6usize) & 0x01;
7880 val != 0 6796 val != 0
7881 } 6797 }
7882 #[doc = "Transfer complete interrupt enable"] 6798 #[doc = "SPI enable"]
7883 pub fn set_tcie(&mut self, val: bool) { 6799 pub fn set_spe(&mut self, val: bool) {
7884 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); 6800 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
7885 }
7886 #[doc = "Peripheral flow controller"]
7887 pub const fn pfctrl(&self) -> super::vals::Pfctrl {
7888 let val = (self.0 >> 5usize) & 0x01;
7889 super::vals::Pfctrl(val as u8)
7890 }
7891 #[doc = "Peripheral flow controller"]
7892 pub fn set_pfctrl(&mut self, val: super::vals::Pfctrl) {
7893 self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize);
7894 } 6801 }
7895 #[doc = "Data transfer direction"] 6802 #[doc = "Frame format"]
7896 pub const fn dir(&self) -> super::vals::Dir { 6803 pub const fn lsbfirst(&self) -> super::vals::Lsbfirst {
7897 let val = (self.0 >> 6usize) & 0x03; 6804 let val = (self.0 >> 7usize) & 0x01;
7898 super::vals::Dir(val as u8) 6805 super::vals::Lsbfirst(val as u8)
7899 } 6806 }
7900 #[doc = "Data transfer direction"] 6807 #[doc = "Frame format"]
7901 pub fn set_dir(&mut self, val: super::vals::Dir) { 6808 pub fn set_lsbfirst(&mut self, val: super::vals::Lsbfirst) {
7902 self.0 = (self.0 & !(0x03 << 6usize)) | (((val.0 as u32) & 0x03) << 6usize); 6809 self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize);
7903 } 6810 }
7904 #[doc = "Circular mode"] 6811 #[doc = "Internal slave select"]
7905 pub const fn circ(&self) -> super::vals::Circ { 6812 pub const fn ssi(&self) -> bool {
7906 let val = (self.0 >> 8usize) & 0x01; 6813 let val = (self.0 >> 8usize) & 0x01;
7907 super::vals::Circ(val as u8) 6814 val != 0
7908 } 6815 }
7909 #[doc = "Circular mode"] 6816 #[doc = "Internal slave select"]
7910 pub fn set_circ(&mut self, val: super::vals::Circ) { 6817 pub fn set_ssi(&mut self, val: bool) {
7911 self.0 = (self.0 & !(0x01 << 8usize)) | (((val.0 as u32) & 0x01) << 8usize); 6818 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
7912 } 6819 }
7913 #[doc = "Peripheral increment mode"] 6820 #[doc = "Software slave management"]
7914 pub const fn pinc(&self) -> super::vals::Inc { 6821 pub const fn ssm(&self) -> bool {
7915 let val = (self.0 >> 9usize) & 0x01; 6822 let val = (self.0 >> 9usize) & 0x01;
7916 super::vals::Inc(val as u8) 6823 val != 0
7917 } 6824 }
7918 #[doc = "Peripheral increment mode"] 6825 #[doc = "Software slave management"]
7919 pub fn set_pinc(&mut self, val: super::vals::Inc) { 6826 pub fn set_ssm(&mut self, val: bool) {
7920 self.0 = (self.0 & !(0x01 << 9usize)) | (((val.0 as u32) & 0x01) << 9usize); 6827 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
7921 } 6828 }
7922 #[doc = "Memory increment mode"] 6829 #[doc = "Receive only"]
7923 pub const fn minc(&self) -> super::vals::Inc { 6830 pub const fn rxonly(&self) -> super::vals::Rxonly {
7924 let val = (self.0 >> 10usize) & 0x01; 6831 let val = (self.0 >> 10usize) & 0x01;
7925 super::vals::Inc(val as u8) 6832 super::vals::Rxonly(val as u8)
7926 } 6833 }
7927 #[doc = "Memory increment mode"] 6834 #[doc = "Receive only"]
7928 pub fn set_minc(&mut self, val: super::vals::Inc) { 6835 pub fn set_rxonly(&mut self, val: super::vals::Rxonly) {
7929 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize); 6836 self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize);
7930 } 6837 }
7931 #[doc = "Peripheral data size"] 6838 #[doc = "Data frame format"]
7932 pub const fn psize(&self) -> super::vals::Size { 6839 pub const fn dff(&self) -> super::vals::Dff {
7933 let val = (self.0 >> 11usize) & 0x03; 6840 let val = (self.0 >> 11usize) & 0x01;
7934 super::vals::Size(val as u8) 6841 super::vals::Dff(val as u8)
7935 }
7936 #[doc = "Peripheral data size"]
7937 pub fn set_psize(&mut self, val: super::vals::Size) {
7938 self.0 = (self.0 & !(0x03 << 11usize)) | (((val.0 as u32) & 0x03) << 11usize);
7939 }
7940 #[doc = "Memory data size"]
7941 pub const fn msize(&self) -> super::vals::Size {
7942 let val = (self.0 >> 13usize) & 0x03;
7943 super::vals::Size(val as u8)
7944 } 6842 }
7945 #[doc = "Memory data size"] 6843 #[doc = "Data frame format"]
7946 pub fn set_msize(&mut self, val: super::vals::Size) { 6844 pub fn set_dff(&mut self, val: super::vals::Dff) {
7947 self.0 = (self.0 & !(0x03 << 13usize)) | (((val.0 as u32) & 0x03) << 13usize); 6845 self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize);
7948 } 6846 }
7949 #[doc = "Peripheral increment offset size"] 6847 #[doc = "CRC transfer next"]
7950 pub const fn pincos(&self) -> super::vals::Pincos { 6848 pub const fn crcnext(&self) -> super::vals::Crcnext {
7951 let val = (self.0 >> 15usize) & 0x01; 6849 let val = (self.0 >> 12usize) & 0x01;
7952 super::vals::Pincos(val as u8) 6850 super::vals::Crcnext(val as u8)
7953 } 6851 }
7954 #[doc = "Peripheral increment offset size"] 6852 #[doc = "CRC transfer next"]
7955 pub fn set_pincos(&mut self, val: super::vals::Pincos) { 6853 pub fn set_crcnext(&mut self, val: super::vals::Crcnext) {
7956 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize); 6854 self.0 = (self.0 & !(0x01 << 12usize)) | (((val.0 as u32) & 0x01) << 12usize);
7957 } 6855 }
7958 #[doc = "Priority level"] 6856 #[doc = "Hardware CRC calculation enable"]
7959 pub const fn pl(&self) -> super::vals::Pl { 6857 pub const fn crcen(&self) -> bool {
7960 let val = (self.0 >> 16usize) & 0x03; 6858 let val = (self.0 >> 13usize) & 0x01;
7961 super::vals::Pl(val as u8) 6859 val != 0
7962 } 6860 }
7963 #[doc = "Priority level"] 6861 #[doc = "Hardware CRC calculation enable"]
7964 pub fn set_pl(&mut self, val: super::vals::Pl) { 6862 pub fn set_crcen(&mut self, val: bool) {
7965 self.0 = (self.0 & !(0x03 << 16usize)) | (((val.0 as u32) & 0x03) << 16usize); 6863 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
7966 } 6864 }
7967 #[doc = "Double buffer mode"] 6865 #[doc = "Output enable in bidirectional mode"]
7968 pub const fn dbm(&self) -> super::vals::Dbm { 6866 pub const fn bidioe(&self) -> super::vals::Bidioe {
7969 let val = (self.0 >> 18usize) & 0x01; 6867 let val = (self.0 >> 14usize) & 0x01;
7970 super::vals::Dbm(val as u8) 6868 super::vals::Bidioe(val as u8)
7971 } 6869 }
7972 #[doc = "Double buffer mode"] 6870 #[doc = "Output enable in bidirectional mode"]
7973 pub fn set_dbm(&mut self, val: super::vals::Dbm) { 6871 pub fn set_bidioe(&mut self, val: super::vals::Bidioe) {
7974 self.0 = (self.0 & !(0x01 << 18usize)) | (((val.0 as u32) & 0x01) << 18usize); 6872 self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize);
7975 } 6873 }
7976 #[doc = "Current target (only in double buffer mode)"] 6874 #[doc = "Bidirectional data mode enable"]
7977 pub const fn ct(&self) -> super::vals::Ct { 6875 pub const fn bidimode(&self) -> super::vals::Bidimode {
7978 let val = (self.0 >> 19usize) & 0x01; 6876 let val = (self.0 >> 15usize) & 0x01;
7979 super::vals::Ct(val as u8) 6877 super::vals::Bidimode(val as u8)
7980 } 6878 }
7981 #[doc = "Current target (only in double buffer mode)"] 6879 #[doc = "Bidirectional data mode enable"]
7982 pub fn set_ct(&mut self, val: super::vals::Ct) { 6880 pub fn set_bidimode(&mut self, val: super::vals::Bidimode) {
7983 self.0 = (self.0 & !(0x01 << 19usize)) | (((val.0 as u32) & 0x01) << 19usize); 6881 self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize);
7984 } 6882 }
7985 #[doc = "Peripheral burst transfer configuration"] 6883 }
7986 pub const fn pburst(&self) -> super::vals::Burst { 6884 impl Default for Cr1 {
7987 let val = (self.0 >> 21usize) & 0x03; 6885 fn default() -> Cr1 {
7988 super::vals::Burst(val as u8) 6886 Cr1(0)
7989 } 6887 }
7990 #[doc = "Peripheral burst transfer configuration"] 6888 }
7991 pub fn set_pburst(&mut self, val: super::vals::Burst) { 6889 #[doc = "RX CRC register"]
7992 self.0 = (self.0 & !(0x03 << 21usize)) | (((val.0 as u32) & 0x03) << 21usize); 6890 #[repr(transparent)]
6891 #[derive(Copy, Clone, Eq, PartialEq)]
6892 pub struct Rxcrcr(pub u32);
6893 impl Rxcrcr {
6894 #[doc = "Rx CRC register"]
6895 pub const fn rx_crc(&self) -> u16 {
6896 let val = (self.0 >> 0usize) & 0xffff;
6897 val as u16
7993 } 6898 }
7994 #[doc = "Memory burst transfer configuration"] 6899 #[doc = "Rx CRC register"]
7995 pub const fn mburst(&self) -> super::vals::Burst { 6900 pub fn set_rx_crc(&mut self, val: u16) {
7996 let val = (self.0 >> 23usize) & 0x03; 6901 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
7997 super::vals::Burst(val as u8)
7998 } 6902 }
7999 #[doc = "Memory burst transfer configuration"] 6903 }
8000 pub fn set_mburst(&mut self, val: super::vals::Burst) { 6904 impl Default for Rxcrcr {
8001 self.0 = (self.0 & !(0x03 << 23usize)) | (((val.0 as u32) & 0x03) << 23usize); 6905 fn default() -> Rxcrcr {
6906 Rxcrcr(0)
8002 } 6907 }
8003 #[doc = "Channel selection"] 6908 }
8004 pub const fn chsel(&self) -> u8 { 6909 #[doc = "data register"]
8005 let val = (self.0 >> 25usize) & 0x0f; 6910 #[repr(transparent)]
8006 val as u8 6911 #[derive(Copy, Clone, Eq, PartialEq)]
6912 pub struct Dr(pub u32);
6913 impl Dr {
6914 #[doc = "Data register"]
6915 pub const fn dr(&self) -> u16 {
6916 let val = (self.0 >> 0usize) & 0xffff;
6917 val as u16
8007 } 6918 }
8008 #[doc = "Channel selection"] 6919 #[doc = "Data register"]
8009 pub fn set_chsel(&mut self, val: u8) { 6920 pub fn set_dr(&mut self, val: u16) {
8010 self.0 = (self.0 & !(0x0f << 25usize)) | (((val as u32) & 0x0f) << 25usize); 6921 self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize);
8011 } 6922 }
8012 } 6923 }
8013 impl Default for Cr { 6924 impl Default for Dr {
8014 fn default() -> Cr { 6925 fn default() -> Dr {
8015 Cr(0) 6926 Dr(0)
8016 } 6927 }
8017 } 6928 }
8018 #[doc = "low interrupt status register"] 6929 #[doc = "status register"]
8019 #[repr(transparent)] 6930 #[repr(transparent)]
8020 #[derive(Copy, Clone, Eq, PartialEq)] 6931 #[derive(Copy, Clone, Eq, PartialEq)]
8021 pub struct Isr(pub u32); 6932 pub struct Sr(pub u32);
8022 impl Isr { 6933 impl Sr {
8023 #[doc = "Stream x FIFO error interrupt flag (x=3..0)"] 6934 #[doc = "Receive buffer not empty"]
8024 pub fn feif(&self, n: usize) -> bool { 6935 pub const fn rxne(&self) -> bool {
8025 assert!(n < 4usize); 6936 let val = (self.0 >> 0usize) & 0x01;
8026 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8027 let val = (self.0 >> offs) & 0x01;
8028 val != 0 6937 val != 0
8029 } 6938 }
8030 #[doc = "Stream x FIFO error interrupt flag (x=3..0)"] 6939 #[doc = "Receive buffer not empty"]
8031 pub fn set_feif(&mut self, n: usize, val: bool) { 6940 pub fn set_rxne(&mut self, val: bool) {
8032 assert!(n < 4usize); 6941 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
8033 let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8034 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
8035 } 6942 }
8036 #[doc = "Stream x direct mode error interrupt flag (x=3..0)"] 6943 #[doc = "Transmit buffer empty"]
8037 pub fn dmeif(&self, n: usize) -> bool { 6944 pub const fn txe(&self) -> bool {
8038 assert!(n < 4usize); 6945 let val = (self.0 >> 1usize) & 0x01;
8039 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8040 let val = (self.0 >> offs) & 0x01;
8041 val != 0 6946 val != 0
8042 } 6947 }
8043 #[doc = "Stream x direct mode error interrupt flag (x=3..0)"] 6948 #[doc = "Transmit buffer empty"]
8044 pub fn set_dmeif(&mut self, n: usize, val: bool) { 6949 pub fn set_txe(&mut self, val: bool) {
8045 assert!(n < 4usize); 6950 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
8046 let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8047 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
8048 } 6951 }
8049 #[doc = "Stream x transfer error interrupt flag (x=3..0)"] 6952 #[doc = "CRC error flag"]
8050 pub fn teif(&self, n: usize) -> bool { 6953 pub const fn crcerr(&self) -> bool {
8051 assert!(n < 4usize); 6954 let val = (self.0 >> 4usize) & 0x01;
8052 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8053 let val = (self.0 >> offs) & 0x01;
8054 val != 0 6955 val != 0
8055 } 6956 }
8056 #[doc = "Stream x transfer error interrupt flag (x=3..0)"] 6957 #[doc = "CRC error flag"]
8057 pub fn set_teif(&mut self, n: usize, val: bool) { 6958 pub fn set_crcerr(&mut self, val: bool) {
8058 assert!(n < 4usize); 6959 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
8059 let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8060 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
8061 } 6960 }
8062 #[doc = "Stream x half transfer interrupt flag (x=3..0)"] 6961 #[doc = "Mode fault"]
8063 pub fn htif(&self, n: usize) -> bool { 6962 pub const fn modf(&self) -> bool {
8064 assert!(n < 4usize); 6963 let val = (self.0 >> 5usize) & 0x01;
8065 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8066 let val = (self.0 >> offs) & 0x01;
8067 val != 0 6964 val != 0
8068 } 6965 }
8069 #[doc = "Stream x half transfer interrupt flag (x=3..0)"] 6966 #[doc = "Mode fault"]
8070 pub fn set_htif(&mut self, n: usize, val: bool) { 6967 pub fn set_modf(&mut self, val: bool) {
8071 assert!(n < 4usize); 6968 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
8072 let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8073 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
8074 } 6969 }
8075 #[doc = "Stream x transfer complete interrupt flag (x = 3..0)"] 6970 #[doc = "Overrun flag"]
8076 pub fn tcif(&self, n: usize) -> bool { 6971 pub const fn ovr(&self) -> bool {
8077 assert!(n < 4usize); 6972 let val = (self.0 >> 6usize) & 0x01;
8078 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize);
8079 let val = (self.0 >> offs) & 0x01;
8080 val != 0 6973 val != 0
8081 } 6974 }
8082 #[doc = "Stream x transfer complete interrupt flag (x = 3..0)"] 6975 #[doc = "Overrun flag"]
8083 pub fn set_tcif(&mut self, n: usize, val: bool) { 6976 pub fn set_ovr(&mut self, val: bool) {
8084 assert!(n < 4usize); 6977 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
8085 let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); 6978 }
8086 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); 6979 #[doc = "Busy flag"]
6980 pub const fn bsy(&self) -> bool {
6981 let val = (self.0 >> 7usize) & 0x01;
6982 val != 0
6983 }
6984 #[doc = "Busy flag"]
6985 pub fn set_bsy(&mut self, val: bool) {
6986 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
6987 }
6988 #[doc = "TI frame format error"]
6989 pub const fn fre(&self) -> bool {
6990 let val = (self.0 >> 8usize) & 0x01;
6991 val != 0
6992 }
6993 #[doc = "TI frame format error"]
6994 pub fn set_fre(&mut self, val: bool) {
6995 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
8087 } 6996 }
8088 } 6997 }
8089 impl Default for Isr { 6998 impl Default for Sr {
8090 fn default() -> Isr { 6999 fn default() -> Sr {
8091 Isr(0) 7000 Sr(0)
8092 } 7001 }
8093 } 7002 }
8094 } 7003 }
8095 pub mod vals { 7004}
8096 use crate::generic::*; 7005pub mod generic {
8097 #[repr(transparent)] 7006 use core::marker::PhantomData;
8098 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7007 #[derive(Copy, Clone)]
8099 pub struct Dmdis(pub u8); 7008 pub struct RW;
8100 impl Dmdis { 7009 #[derive(Copy, Clone)]
8101 #[doc = "Direct mode is enabled"] 7010 pub struct R;
8102 pub const ENABLED: Self = Self(0); 7011 #[derive(Copy, Clone)]
8103 #[doc = "Direct mode is disabled"] 7012 pub struct W;
8104 pub const DISABLED: Self = Self(0x01); 7013 mod sealed {
8105 } 7014 use super::*;
8106 #[repr(transparent)] 7015 pub trait Access {}
8107 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7016 impl Access for R {}
8108 pub struct Size(pub u8); 7017 impl Access for W {}
8109 impl Size { 7018 impl Access for RW {}
8110 #[doc = "Byte (8-bit)"] 7019 }
8111 pub const BITS8: Self = Self(0); 7020 pub trait Access: sealed::Access + Copy {}
8112 #[doc = "Half-word (16-bit)"] 7021 impl Access for R {}
8113 pub const BITS16: Self = Self(0x01); 7022 impl Access for W {}
8114 #[doc = "Word (32-bit)"] 7023 impl Access for RW {}
8115 pub const BITS32: Self = Self(0x02); 7024 pub trait Read: Access {}
8116 } 7025 impl Read for RW {}
8117 #[repr(transparent)] 7026 impl Read for R {}
8118 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7027 pub trait Write: Access {}
8119 pub struct Inc(pub u8); 7028 impl Write for RW {}
8120 impl Inc { 7029 impl Write for W {}
8121 #[doc = "Address pointer is fixed"] 7030 #[derive(Copy, Clone)]
8122 pub const FIXED: Self = Self(0); 7031 pub struct Reg<T: Copy, A: Access> {
8123 #[doc = "Address pointer is incremented after each data transfer"] 7032 ptr: *mut u8,
8124 pub const INCREMENTED: Self = Self(0x01); 7033 phantom: PhantomData<*mut (T, A)>,
8125 } 7034 }
8126 #[repr(transparent)] 7035 unsafe impl<T: Copy, A: Access> Send for Reg<T, A> {}
8127 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7036 unsafe impl<T: Copy, A: Access> Sync for Reg<T, A> {}
8128 pub struct Pfctrl(pub u8); 7037 impl<T: Copy, A: Access> Reg<T, A> {
8129 impl Pfctrl { 7038 pub fn from_ptr(ptr: *mut u8) -> Self {
8130 #[doc = "The DMA is the flow controller"] 7039 Self {
8131 pub const DMA: Self = Self(0); 7040 ptr,
8132 #[doc = "The peripheral is the flow controller"] 7041 phantom: PhantomData,
8133 pub const PERIPHERAL: Self = Self(0x01); 7042 }
8134 }
8135 #[repr(transparent)]
8136 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8137 pub struct Circ(pub u8);
8138 impl Circ {
8139 #[doc = "Circular mode disabled"]
8140 pub const DISABLED: Self = Self(0);
8141 #[doc = "Circular mode enabled"]
8142 pub const ENABLED: Self = Self(0x01);
8143 }
8144 #[repr(transparent)]
8145 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8146 pub struct Burst(pub u8);
8147 impl Burst {
8148 #[doc = "Single transfer"]
8149 pub const SINGLE: Self = Self(0);
8150 #[doc = "Incremental burst of 4 beats"]
8151 pub const INCR4: Self = Self(0x01);
8152 #[doc = "Incremental burst of 8 beats"]
8153 pub const INCR8: Self = Self(0x02);
8154 #[doc = "Incremental burst of 16 beats"]
8155 pub const INCR16: Self = Self(0x03);
8156 }
8157 #[repr(transparent)]
8158 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8159 pub struct Dir(pub u8);
8160 impl Dir {
8161 #[doc = "Peripheral-to-memory"]
8162 pub const PERIPHERALTOMEMORY: Self = Self(0);
8163 #[doc = "Memory-to-peripheral"]
8164 pub const MEMORYTOPERIPHERAL: Self = Self(0x01);
8165 #[doc = "Memory-to-memory"]
8166 pub const MEMORYTOMEMORY: Self = Self(0x02);
8167 }
8168 #[repr(transparent)]
8169 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8170 pub struct Pl(pub u8);
8171 impl Pl {
8172 #[doc = "Low"]
8173 pub const LOW: Self = Self(0);
8174 #[doc = "Medium"]
8175 pub const MEDIUM: Self = Self(0x01);
8176 #[doc = "High"]
8177 pub const HIGH: Self = Self(0x02);
8178 #[doc = "Very high"]
8179 pub const VERYHIGH: Self = Self(0x03);
8180 } 7043 }
8181 #[repr(transparent)] 7044 pub fn ptr(&self) -> *mut T {
8182 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7045 self.ptr as _
8183 pub struct Fs(pub u8);
8184 impl Fs {
8185 #[doc = "0 < fifo_level < 1/4"]
8186 pub const QUARTER1: Self = Self(0);
8187 #[doc = "1/4 <= fifo_level < 1/2"]
8188 pub const QUARTER2: Self = Self(0x01);
8189 #[doc = "1/2 <= fifo_level < 3/4"]
8190 pub const QUARTER3: Self = Self(0x02);
8191 #[doc = "3/4 <= fifo_level < full"]
8192 pub const QUARTER4: Self = Self(0x03);
8193 #[doc = "FIFO is empty"]
8194 pub const EMPTY: Self = Self(0x04);
8195 #[doc = "FIFO is full"]
8196 pub const FULL: Self = Self(0x05);
8197 } 7046 }
8198 #[repr(transparent)] 7047 }
8199 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7048 impl<T: Copy, A: Read> Reg<T, A> {
8200 pub struct Fth(pub u8); 7049 pub unsafe fn read(&self) -> T {
8201 impl Fth { 7050 (self.ptr as *mut T).read_volatile()
8202 #[doc = "1/4 full FIFO"]
8203 pub const QUARTER: Self = Self(0);
8204 #[doc = "1/2 full FIFO"]
8205 pub const HALF: Self = Self(0x01);
8206 #[doc = "3/4 full FIFO"]
8207 pub const THREEQUARTERS: Self = Self(0x02);
8208 #[doc = "Full FIFO"]
8209 pub const FULL: Self = Self(0x03);
8210 } 7051 }
8211 #[repr(transparent)] 7052 }
8212 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7053 impl<T: Copy, A: Write> Reg<T, A> {
8213 pub struct Pincos(pub u8); 7054 pub unsafe fn write_value(&self, val: T) {
8214 impl Pincos { 7055 (self.ptr as *mut T).write_volatile(val)
8215 #[doc = "The offset size for the peripheral address calculation is linked to the PSIZE"]
8216 pub const PSIZE: Self = Self(0);
8217 #[doc = "The offset size for the peripheral address calculation is fixed to 4 (32-bit alignment)"]
8218 pub const FIXED4: Self = Self(0x01);
8219 } 7056 }
8220 #[repr(transparent)] 7057 }
8221 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7058 impl<T: Default + Copy, A: Write> Reg<T, A> {
8222 pub struct Ct(pub u8); 7059 pub unsafe fn write<R>(&self, f: impl FnOnce(&mut T) -> R) -> R {
8223 impl Ct { 7060 let mut val = Default::default();
8224 #[doc = "The current target memory is Memory 0"] 7061 let res = f(&mut val);
8225 pub const MEMORY0: Self = Self(0); 7062 self.write_value(val);
8226 #[doc = "The current target memory is Memory 1"] 7063 res
8227 pub const MEMORY1: Self = Self(0x01);
8228 } 7064 }
8229 #[repr(transparent)] 7065 }
8230 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] 7066 impl<T: Copy, A: Read + Write> Reg<T, A> {
8231 pub struct Dbm(pub u8); 7067 pub unsafe fn modify<R>(&self, f: impl FnOnce(&mut T) -> R) -> R {
8232 impl Dbm { 7068 let mut val = self.read();
8233 #[doc = "No buffer switching at the end of transfer"] 7069 let res = f(&mut val);
8234 pub const DISABLED: Self = Self(0); 7070 self.write_value(val);
8235 #[doc = "Memory target switched at the end of the DMA transfer"] 7071 res
8236 pub const ENABLED: Self = Self(0x01);
8237 } 7072 }
8238 } 7073 }
8239} 7074}
8240pub mod syscfg_h7 { 7075pub mod sdmmc_v2 {
8241 use crate::generic::*; 7076 use crate::generic::*;
8242 #[doc = "System configuration controller"] 7077 #[doc = "SDMMC"]
8243 #[derive(Copy, Clone)] 7078 #[derive(Copy, Clone)]
8244 pub struct Syscfg(pub *mut u8); 7079 pub struct Sdmmc(pub *mut u8);
8245 unsafe impl Send for Syscfg {} 7080 unsafe impl Send for Sdmmc {}
8246 unsafe impl Sync for Syscfg {} 7081 unsafe impl Sync for Sdmmc {}
8247 impl Syscfg { 7082 impl Sdmmc {
8248 #[doc = "peripheral mode configuration register"] 7083 #[doc = "SDMMC power control register"]
8249 pub fn pmcr(self) -> Reg<regs::Pmcr, RW> { 7084 pub fn power(self) -> Reg<regs::Power, RW> {
7085 unsafe { Reg::from_ptr(self.0.add(0usize)) }
7086 }
7087 #[doc = "The SDMMC_CLKCR register controls the SDMMC_CK output clock, the SDMMC_RX_CLK receive clock, and the bus width."]
7088 pub fn clkcr(self) -> Reg<regs::Clkcr, RW> {
8250 unsafe { Reg::from_ptr(self.0.add(4usize)) } 7089 unsafe { Reg::from_ptr(self.0.add(4usize)) }
8251 } 7090 }
8252 #[doc = "external interrupt configuration register 1"] 7091 #[doc = "The SDMMC_ARGR register contains a 32-bit command argument, which is sent to a card as part of a command message."]
8253 pub fn exticr(self, n: usize) -> Reg<regs::Exticr, RW> { 7092 pub fn argr(self) -> Reg<regs::Argr, RW> {
8254 assert!(n < 4usize); 7093 unsafe { Reg::from_ptr(self.0.add(8usize)) }
8255 unsafe { Reg::from_ptr(self.0.add(8usize + n * 4usize)) }
8256 } 7094 }
8257 #[doc = "compensation cell control/status register"] 7095 #[doc = "The SDMMC_CMDR register contains the command index and command type bits. The command index is sent to a card as part of a command message. The command type bits control the command path state machine (CPSM)."]
8258 pub fn cccsr(self) -> Reg<regs::Cccsr, RW> { 7096 pub fn cmdr(self) -> Reg<regs::Cmdr, RW> {
8259 unsafe { Reg::from_ptr(self.0.add(32usize)) } 7097 unsafe { Reg::from_ptr(self.0.add(12usize)) }
8260 } 7098 }
8261 #[doc = "SYSCFG compensation cell value register"] 7099 #[doc = "SDMMC command response register"]
8262 pub fn ccvr(self) -> Reg<regs::Ccvr, R> { 7100 pub fn respcmdr(self) -> Reg<regs::Respcmdr, R> {
7101 unsafe { Reg::from_ptr(self.0.add(16usize)) }
7102 }
7103 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."]
7104 pub fn respr(self, n: usize) -> Reg<regs::Resp1r, R> {
7105 assert!(n < 4usize);
7106 unsafe { Reg::from_ptr(self.0.add(20usize + n * 4usize)) }
7107 }
7108 #[doc = "The SDMMC_DTIMER register contains the data timeout period, in card bus clock periods. A counter loads the value from the SDMMC_DTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_R or Busy state. If the timer reaches 0 while the DPSM is in either of these states, the timeout status flag is set."]
7109 pub fn dtimer(self) -> Reg<regs::Dtimer, RW> {
8263 unsafe { Reg::from_ptr(self.0.add(36usize)) } 7110 unsafe { Reg::from_ptr(self.0.add(36usize)) }
8264 } 7111 }
8265 #[doc = "SYSCFG compensation cell code register"] 7112 #[doc = "The SDMMC_DLENR register contains the number of data bytes to be transferred. The value is loaded into the data counter when data transfer starts."]
8266 pub fn cccr(self) -> Reg<regs::Cccr, RW> { 7113 pub fn dlenr(self) -> Reg<regs::Dlenr, RW> {
8267 unsafe { Reg::from_ptr(self.0.add(40usize)) } 7114 unsafe { Reg::from_ptr(self.0.add(40usize)) }
8268 } 7115 }
8269 #[doc = "SYSCFG power control register"] 7116 #[doc = "The SDMMC_DCTRL register control the data path state machine (DPSM)."]
8270 pub fn pwrcr(self) -> Reg<regs::Pwrcr, RW> { 7117 pub fn dctrl(self) -> Reg<regs::Dctrl, RW> {
8271 unsafe { Reg::from_ptr(self.0.add(44usize)) } 7118 unsafe { Reg::from_ptr(self.0.add(44usize)) }
8272 } 7119 }
8273 #[doc = "SYSCFG package register"] 7120 #[doc = "The SDMMC_DCNTR register loads the value from the data length register (see SDMMC_DLENR) when the DPSM moves from the Idle state to the Wait_R or Wait_S state. As data is transferred, the counter decrements the value until it reaches 0. The DPSM then moves to the Idle state and when there has been no error, the data status end flag (DATAEND) is set."]
8274 pub fn pkgr(self) -> Reg<regs::Pkgr, R> { 7121 pub fn dcntr(self) -> Reg<regs::Dcntr, R> {
8275 unsafe { Reg::from_ptr(self.0.add(292usize)) } 7122 unsafe { Reg::from_ptr(self.0.add(48usize)) }
8276 }
8277 #[doc = "SYSCFG user register 0"]
8278 pub fn ur0(self) -> Reg<regs::Ur0, R> {
8279 unsafe { Reg::from_ptr(self.0.add(768usize)) }
8280 }
8281 #[doc = "SYSCFG user register 2"]
8282 pub fn ur2(self) -> Reg<regs::Ur2, RW> {
8283 unsafe { Reg::from_ptr(self.0.add(776usize)) }
8284 }
8285 #[doc = "SYSCFG user register 3"]
8286 pub fn ur3(self) -> Reg<regs::Ur3, RW> {
8287 unsafe { Reg::from_ptr(self.0.add(780usize)) }
8288 }
8289 #[doc = "SYSCFG user register 4"]
8290 pub fn ur4(self) -> Reg<regs::Ur4, R> {
8291 unsafe { Reg::from_ptr(self.0.add(784usize)) }
8292 }
8293 #[doc = "SYSCFG user register 5"]
8294 pub fn ur5(self) -> Reg<regs::Ur5, R> {
8295 unsafe { Reg::from_ptr(self.0.add(788usize)) }
8296 }
8297 #[doc = "SYSCFG user register 6"]
8298 pub fn ur6(self) -> Reg<regs::Ur6, R> {
8299 unsafe { Reg::from_ptr(self.0.add(792usize)) }
8300 } 7123 }
8301 #[doc = "SYSCFG user register 7"] 7124 #[doc = "The SDMMC_STAR register is a read-only register. It contains two types of flag:Static flags (bits [29,21,11:0]): these bits remain asserted until they are cleared by writing to the SDMMC interrupt Clear register (see SDMMC_ICR)Dynamic flags (bits [20:12]): these bits change state depending on the state of the underlying logic (for example, FIFO full and empty flags are asserted and de-asserted as data while written to the FIFO)"]
8302 pub fn ur7(self) -> Reg<regs::Ur7, R> { 7125 pub fn star(self) -> Reg<regs::Star, R> {
8303 unsafe { Reg::from_ptr(self.0.add(796usize)) } 7126 unsafe { Reg::from_ptr(self.0.add(52usize)) }
8304 } 7127 }
8305 #[doc = "SYSCFG user register 8"] 7128 #[doc = "The SDMMC_ICR register is a write-only register. Writing a bit with 1 clears the corresponding bit in the SDMMC_STAR status register."]
8306 pub fn ur8(self) -> Reg<regs::Ur8, R> { 7129 pub fn icr(self) -> Reg<regs::Icr, RW> {
8307 unsafe { Reg::from_ptr(self.0.add(800usize)) } 7130 unsafe { Reg::from_ptr(self.0.add(56usize)) }
8308 } 7131 }
8309 #[doc = "SYSCFG user register 9"] 7132 #[doc = "The interrupt mask register determines which status flags generate an interrupt request by setting the corresponding bit to 1."]
8310 pub fn ur9(self) -> Reg<regs::Ur9, R> { 7133 pub fn maskr(self) -> Reg<regs::Maskr, RW> {
8311 unsafe { Reg::from_ptr(self.0.add(804usize)) } 7134 unsafe { Reg::from_ptr(self.0.add(60usize)) }
8312 } 7135 }
8313 #[doc = "SYSCFG user register 10"] 7136 #[doc = "The SDMMC_ACKTIMER register contains the acknowledgment timeout period, in SDMMC_CK bus clock periods. A counter loads the value from the SDMMC_ACKTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_Ack state. If the timer reaches 0 while the DPSM is in this states, the acknowledgment timeout status flag is set."]
8314 pub fn ur10(self) -> Reg<regs::Ur10, R> { 7137 pub fn acktimer(self) -> Reg<regs::Acktimer, RW> {
8315 unsafe { Reg::from_ptr(self.0.add(808usize)) } 7138 unsafe { Reg::from_ptr(self.0.add(64usize)) }
8316 } 7139 }
8317 #[doc = "SYSCFG user register 11"] 7140 #[doc = "The receive and transmit FIFOs can be read or written as 32-bit wide registers. The FIFOs contain 32 entries on 32 sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO."]
8318 pub fn ur11(self) -> Reg<regs::Ur11, R> { 7141 pub fn idmactrlr(self) -> Reg<regs::Idmactrlr, RW> {
8319 unsafe { Reg::from_ptr(self.0.add(812usize)) } 7142 unsafe { Reg::from_ptr(self.0.add(80usize)) }
8320 } 7143 }
8321 #[doc = "SYSCFG user register 12"] 7144 #[doc = "The SDMMC_IDMABSIZER register contains the buffers size when in double buffer configuration."]
8322 pub fn ur12(self) -> Reg<regs::Ur12, R> { 7145 pub fn idmabsizer(self) -> Reg<regs::Idmabsizer, RW> {
8323 unsafe { Reg::from_ptr(self.0.add(816usize)) } 7146 unsafe { Reg::from_ptr(self.0.add(84usize)) }
8324 } 7147 }
8325 #[doc = "SYSCFG user register 13"] 7148 #[doc = "The SDMMC_IDMABASE0R register contains the memory buffer base address in single buffer configuration and the buffer 0 base address in double buffer configuration."]
8326 pub fn ur13(self) -> Reg<regs::Ur13, R> { 7149 pub fn idmabase0r(self) -> Reg<regs::Idmabase0r, RW> {
8327 unsafe { Reg::from_ptr(self.0.add(820usize)) } 7150 unsafe { Reg::from_ptr(self.0.add(88usize)) }
8328 } 7151 }
8329 #[doc = "SYSCFG user register 14"] 7152 #[doc = "The SDMMC_IDMABASE1R register contains the double buffer configuration second buffer memory base address."]
8330 pub fn ur14(self) -> Reg<regs::Ur14, RW> { 7153 pub fn idmabase1r(self) -> Reg<regs::Idmabase1r, RW> {
8331 unsafe { Reg::from_ptr(self.0.add(824usize)) } 7154 unsafe { Reg::from_ptr(self.0.add(92usize)) }
8332 } 7155 }
8333 #[doc = "SYSCFG user register 15"] 7156 #[doc = "The receive and transmit FIFOs can be only read or written as word (32-bit) wide registers. The FIFOs contain 16 entries on sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO.When accessing SDMMC_FIFOR with half word or byte access an AHB bus fault is generated."]
8334 pub fn ur15(self) -> Reg<regs::Ur15, R> { 7157 pub fn fifor(self) -> Reg<regs::Fifor, RW> {
8335 unsafe { Reg::from_ptr(self.0.add(828usize)) } 7158 unsafe { Reg::from_ptr(self.0.add(128usize)) }
8336 } 7159 }
8337 #[doc = "SYSCFG user register 16"] 7160 #[doc = "SDMMC IP version register"]
8338 pub fn ur16(self) -> Reg<regs::Ur16, R> { 7161 pub fn ver(self) -> Reg<regs::Ver, R> {
8339 unsafe { Reg::from_ptr(self.0.add(832usize)) } 7162 unsafe { Reg::from_ptr(self.0.add(1012usize)) }
8340 } 7163 }
8341 #[doc = "SYSCFG user register 17"] 7164 #[doc = "SDMMC IP identification register"]
8342 pub fn ur17(self) -> Reg<regs::Ur17, R> { 7165 pub fn id(self) -> Reg<regs::Id, R> {
8343 unsafe { Reg::from_ptr(self.0.add(836usize)) } 7166 unsafe { Reg::from_ptr(self.0.add(1016usize)) }
8344 } 7167 }
8345 } 7168 }
8346 pub mod regs { 7169 pub mod regs {
8347 use crate::generic::*; 7170 use crate::generic::*;
8348 #[doc = "SYSCFG user register 16"] 7171 #[doc = "The SDMMC_DTIMER register contains the data timeout period, in card bus clock periods. A counter loads the value from the SDMMC_DTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_R or Busy state. If the timer reaches 0 while the DPSM is in either of these states, the timeout status flag is set."]
8349 #[repr(transparent)] 7172 #[repr(transparent)]
8350 #[derive(Copy, Clone, Eq, PartialEq)] 7173 #[derive(Copy, Clone, Eq, PartialEq)]
8351 pub struct Ur16(pub u32); 7174 pub struct Dtimer(pub u32);
8352 impl Ur16 { 7175 impl Dtimer {
8353 #[doc = "Freeze independent watchdog in Stop mode"] 7176 #[doc = "Data and R1b busy timeout period This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). Data and R1b busy timeout period expressed in card bus clock periods."]
8354 pub const fn fziwdgstp(&self) -> bool { 7177 pub const fn datatime(&self) -> u32 {
8355 let val = (self.0 >> 0usize) & 0x01; 7178 let val = (self.0 >> 0usize) & 0xffff_ffff;
7179 val as u32
7180 }
7181 #[doc = "Data and R1b busy timeout period This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). Data and R1b busy timeout period expressed in card bus clock periods."]
7182 pub fn set_datatime(&mut self, val: u32) {
7183 self.0 =
7184 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
7185 }
7186 }
7187 impl Default for Dtimer {
7188 fn default() -> Dtimer {
7189 Dtimer(0)
7190 }
7191 }
7192 #[doc = "The SDMMC_CLKCR register controls the SDMMC_CK output clock, the SDMMC_RX_CLK receive clock, and the bus width."]
7193 #[repr(transparent)]
7194 #[derive(Copy, Clone, Eq, PartialEq)]
7195 pub struct Clkcr(pub u32);
7196 impl Clkcr {
7197 #[doc = "Clock divide factor This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). This field defines the divide factor between the input clock (SDMMCCLK) and the output clock (SDMMC_CK): SDMMC_CK frequency = SDMMCCLK / [2 * CLKDIV]. 0xx: etc.. xxx: etc.."]
7198 pub const fn clkdiv(&self) -> u16 {
7199 let val = (self.0 >> 0usize) & 0x03ff;
7200 val as u16
7201 }
7202 #[doc = "Clock divide factor This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). This field defines the divide factor between the input clock (SDMMCCLK) and the output clock (SDMMC_CK): SDMMC_CK frequency = SDMMCCLK / [2 * CLKDIV]. 0xx: etc.. xxx: etc.."]
7203 pub fn set_clkdiv(&mut self, val: u16) {
7204 self.0 = (self.0 & !(0x03ff << 0usize)) | (((val as u32) & 0x03ff) << 0usize);
7205 }
7206 #[doc = "Power saving configuration bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) For power saving, the SDMMC_CK clock output can be disabled when the bus is idle by setting PWRSAV:"]
7207 pub const fn pwrsav(&self) -> bool {
7208 let val = (self.0 >> 12usize) & 0x01;
8356 val != 0 7209 val != 0
8357 } 7210 }
8358 #[doc = "Freeze independent watchdog in Stop mode"] 7211 #[doc = "Power saving configuration bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) For power saving, the SDMMC_CK clock output can be disabled when the bus is idle by setting PWRSAV:"]
8359 pub fn set_fziwdgstp(&mut self, val: bool) { 7212 pub fn set_pwrsav(&mut self, val: bool) {
8360 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 7213 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize);
8361 } 7214 }
8362 #[doc = "Private key programmed"] 7215 #[doc = "Wide bus mode enable bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"]
8363 pub const fn pkp(&self) -> bool { 7216 pub const fn widbus(&self) -> u8 {
7217 let val = (self.0 >> 14usize) & 0x03;
7218 val as u8
7219 }
7220 #[doc = "Wide bus mode enable bit This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"]
7221 pub fn set_widbus(&mut self, val: u8) {
7222 self.0 = (self.0 & !(0x03 << 14usize)) | (((val as u32) & 0x03) << 14usize);
7223 }
7224 #[doc = "SDMMC_CK dephasing selection bit for data and Command. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). When clock division = 1 (CLKDIV = 0), this bit has no effect. Data and Command change on SDMMC_CK falling edge. When clock division &gt;1 (CLKDIV &gt; 0) &amp; DDR = 0: - SDMMC_CK edge occurs on SDMMCCLK rising edge. When clock division >1 (CLKDIV > 0) & DDR = 1: - Data changed on the SDMMCCLK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge. - Data changed on the SDMMC_CK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge."]
7225 pub const fn negedge(&self) -> bool {
8364 let val = (self.0 >> 16usize) & 0x01; 7226 let val = (self.0 >> 16usize) & 0x01;
8365 val != 0 7227 val != 0
8366 } 7228 }
8367 #[doc = "Private key programmed"] 7229 #[doc = "SDMMC_CK dephasing selection bit for data and Command. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0). When clock division = 1 (CLKDIV = 0), this bit has no effect. Data and Command change on SDMMC_CK falling edge. When clock division &gt;1 (CLKDIV &gt; 0) &amp; DDR = 0: - SDMMC_CK edge occurs on SDMMCCLK rising edge. When clock division >1 (CLKDIV > 0) & DDR = 1: - Data changed on the SDMMCCLK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge. - Data changed on the SDMMC_CK falling edge succeeding a SDMMC_CK edge. - SDMMC_CK edge occurs on SDMMCCLK rising edge."]
8368 pub fn set_pkp(&mut self, val: bool) { 7230 pub fn set_negedge(&mut self, val: bool) {
8369 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 7231 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
8370 } 7232 }
7233 #[doc = "Hardware flow control enable This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) When Hardware flow control is enabled, the meaning of the TXFIFOE and RXFIFOF flags change, please see SDMMC status register definition in Section56.8.11."]
7234 pub const fn hwfc_en(&self) -> bool {
7235 let val = (self.0 >> 17usize) & 0x01;
7236 val != 0
7237 }
7238 #[doc = "Hardware flow control enable This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) When Hardware flow control is enabled, the meaning of the TXFIFOE and RXFIFOF flags change, please see SDMMC status register definition in Section56.8.11."]
7239 pub fn set_hwfc_en(&mut self, val: bool) {
7240 self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize);
7241 }
7242 #[doc = "Data rate signaling selection This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) DDR rate shall only be selected with 4-bit or 8-bit wide bus mode. (WIDBUS &gt; 00). DDR = 1 has no effect when WIDBUS = 00 (1-bit wide bus). DDR rate shall only be selected with clock division &gt;1. (CLKDIV &gt; 0)"]
7243 pub const fn ddr(&self) -> bool {
7244 let val = (self.0 >> 18usize) & 0x01;
7245 val != 0
7246 }
7247 #[doc = "Data rate signaling selection This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0) DDR rate shall only be selected with 4-bit or 8-bit wide bus mode. (WIDBUS &gt; 00). DDR = 1 has no effect when WIDBUS = 00 (1-bit wide bus). DDR rate shall only be selected with clock division &gt;1. (CLKDIV &gt; 0)"]
7248 pub fn set_ddr(&mut self, val: bool) {
7249 self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize);
7250 }
7251 #[doc = "Bus speed mode selection between DS, HS, SDR12, SDR25 and SDR50, DDR50, SDR104. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"]
7252 pub const fn busspeed(&self) -> bool {
7253 let val = (self.0 >> 19usize) & 0x01;
7254 val != 0
7255 }
7256 #[doc = "Bus speed mode selection between DS, HS, SDR12, SDR25 and SDR50, DDR50, SDR104. This bit can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"]
7257 pub fn set_busspeed(&mut self, val: bool) {
7258 self.0 = (self.0 & !(0x01 << 19usize)) | (((val as u32) & 0x01) << 19usize);
7259 }
7260 #[doc = "Receive clock selection. These bits can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"]
7261 pub const fn selclkrx(&self) -> u8 {
7262 let val = (self.0 >> 20usize) & 0x03;
7263 val as u8
7264 }
7265 #[doc = "Receive clock selection. These bits can only be written when the CPSM and DPSM are not active (CPSMACT = 0 and DPSMACT = 0)"]
7266 pub fn set_selclkrx(&mut self, val: u8) {
7267 self.0 = (self.0 & !(0x03 << 20usize)) | (((val as u32) & 0x03) << 20usize);
7268 }
8371 } 7269 }
8372 impl Default for Ur16 { 7270 impl Default for Clkcr {
8373 fn default() -> Ur16 { 7271 fn default() -> Clkcr {
8374 Ur16(0) 7272 Clkcr(0)
8375 } 7273 }
8376 } 7274 }
8377 #[doc = "SYSCFG user register 0"] 7275 #[doc = "SDMMC power control register"]
8378 #[repr(transparent)] 7276 #[repr(transparent)]
8379 #[derive(Copy, Clone, Eq, PartialEq)] 7277 #[derive(Copy, Clone, Eq, PartialEq)]
8380 pub struct Ur0(pub u32); 7278 pub struct Power(pub u32);
8381 impl Ur0 { 7279 impl Power {
8382 #[doc = "Bank Swap"] 7280 #[doc = "SDMMC state control bits. These bits can only be written when the SDMMC is not in the power-on state (PWRCTRL?11). These bits are used to define the functional state of the SDMMC signals: Any further write will be ignored, PWRCTRL value will keep 11."]
8383 pub const fn bks(&self) -> bool { 7281 pub const fn pwrctrl(&self) -> u8 {
8384 let val = (self.0 >> 0usize) & 0x01; 7282 let val = (self.0 >> 0usize) & 0x03;
7283 val as u8
7284 }
7285 #[doc = "SDMMC state control bits. These bits can only be written when the SDMMC is not in the power-on state (PWRCTRL?11). These bits are used to define the functional state of the SDMMC signals: Any further write will be ignored, PWRCTRL value will keep 11."]
7286 pub fn set_pwrctrl(&mut self, val: u8) {
7287 self.0 = (self.0 & !(0x03 << 0usize)) | (((val as u32) & 0x03) << 0usize);
7288 }
7289 #[doc = "Voltage switch sequence start. This bit is used to start the timing critical section of the voltage switch sequence:"]
7290 pub const fn vswitch(&self) -> bool {
7291 let val = (self.0 >> 2usize) & 0x01;
8385 val != 0 7292 val != 0
8386 } 7293 }
8387 #[doc = "Bank Swap"] 7294 #[doc = "Voltage switch sequence start. This bit is used to start the timing critical section of the voltage switch sequence:"]
8388 pub fn set_bks(&mut self, val: bool) { 7295 pub fn set_vswitch(&mut self, val: bool) {
8389 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 7296 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
8390 } 7297 }
8391 #[doc = "Readout protection"] 7298 #[doc = "Voltage switch procedure enable. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). This bit is used to stop the SDMMC_CK after the voltage switch command response:"]
8392 pub const fn rdp(&self) -> u8 { 7299 pub const fn vswitchen(&self) -> bool {
8393 let val = (self.0 >> 16usize) & 0xff; 7300 let val = (self.0 >> 3usize) & 0x01;
8394 val as u8 7301 val != 0
8395 } 7302 }
8396 #[doc = "Readout protection"] 7303 #[doc = "Voltage switch procedure enable. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). This bit is used to stop the SDMMC_CK after the voltage switch command response:"]
8397 pub fn set_rdp(&mut self, val: u8) { 7304 pub fn set_vswitchen(&mut self, val: bool) {
8398 self.0 = (self.0 & !(0xff << 16usize)) | (((val as u32) & 0xff) << 16usize); 7305 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
7306 }
7307 #[doc = "Data and command direction signals polarity selection. This bit can only be written when the SDMMC is in the power-off state (PWRCTRL = 00)."]
7308 pub const fn dirpol(&self) -> bool {
7309 let val = (self.0 >> 4usize) & 0x01;
7310 val != 0
7311 }
7312 #[doc = "Data and command direction signals polarity selection. This bit can only be written when the SDMMC is in the power-off state (PWRCTRL = 00)."]
7313 pub fn set_dirpol(&mut self, val: bool) {
7314 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
8399 } 7315 }
8400 } 7316 }
8401 impl Default for Ur0 { 7317 impl Default for Power {
8402 fn default() -> Ur0 { 7318 fn default() -> Power {
8403 Ur0(0) 7319 Power(0)
8404 } 7320 }
8405 } 7321 }
8406 #[doc = "SYSCFG compensation cell value register"] 7322 #[doc = "The SDMMC_DCNTR register loads the value from the data length register (see SDMMC_DLENR) when the DPSM moves from the Idle state to the Wait_R or Wait_S state. As data is transferred, the counter decrements the value until it reaches 0. The DPSM then moves to the Idle state and when there has been no error, the data status end flag (DATAEND) is set."]
8407 #[repr(transparent)] 7323 #[repr(transparent)]
8408 #[derive(Copy, Clone, Eq, PartialEq)] 7324 #[derive(Copy, Clone, Eq, PartialEq)]
8409 pub struct Ccvr(pub u32); 7325 pub struct Dcntr(pub u32);
8410 impl Ccvr { 7326 impl Dcntr {
8411 #[doc = "NMOS compensation value"] 7327 #[doc = "Data count value When read, the number of remaining data bytes to be transferred is returned. Write has no effect."]
8412 pub const fn ncv(&self) -> u8 { 7328 pub const fn datacount(&self) -> u32 {
7329 let val = (self.0 >> 0usize) & 0x01ff_ffff;
7330 val as u32
7331 }
7332 #[doc = "Data count value When read, the number of remaining data bytes to be transferred is returned. Write has no effect."]
7333 pub fn set_datacount(&mut self, val: u32) {
7334 self.0 =
7335 (self.0 & !(0x01ff_ffff << 0usize)) | (((val as u32) & 0x01ff_ffff) << 0usize);
7336 }
7337 }
7338 impl Default for Dcntr {
7339 fn default() -> Dcntr {
7340 Dcntr(0)
7341 }
7342 }
7343 #[doc = "SDMMC IP identification register"]
7344 #[repr(transparent)]
7345 #[derive(Copy, Clone, Eq, PartialEq)]
7346 pub struct Id(pub u32);
7347 impl Id {
7348 #[doc = "SDMMC IP identification."]
7349 pub const fn ip_id(&self) -> u32 {
7350 let val = (self.0 >> 0usize) & 0xffff_ffff;
7351 val as u32
7352 }
7353 #[doc = "SDMMC IP identification."]
7354 pub fn set_ip_id(&mut self, val: u32) {
7355 self.0 =
7356 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
7357 }
7358 }
7359 impl Default for Id {
7360 fn default() -> Id {
7361 Id(0)
7362 }
7363 }
7364 #[doc = "The SDMMC_IDMABASE1R register contains the double buffer configuration second buffer memory base address."]
7365 #[repr(transparent)]
7366 #[derive(Copy, Clone, Eq, PartialEq)]
7367 pub struct Idmabase1r(pub u32);
7368 impl Idmabase1r {
7369 #[doc = "Buffer 1 memory base address, shall be word aligned (bit [1:0]
7370are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 1 is inactive (IDMABACT = 0)."]
7371 pub const fn idmabase1(&self) -> u32 {
7372 let val = (self.0 >> 0usize) & 0xffff_ffff;
7373 val as u32
7374 }
7375 #[doc = "Buffer 1 memory base address, shall be word aligned (bit [1:0]
7376are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 1 is inactive (IDMABACT = 0)."]
7377 pub fn set_idmabase1(&mut self, val: u32) {
7378 self.0 =
7379 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
7380 }
7381 }
7382 impl Default for Idmabase1r {
7383 fn default() -> Idmabase1r {
7384 Idmabase1r(0)
7385 }
7386 }
7387 #[doc = "SDMMC IP version register"]
7388 #[repr(transparent)]
7389 #[derive(Copy, Clone, Eq, PartialEq)]
7390 pub struct Ver(pub u32);
7391 impl Ver {
7392 #[doc = "IP minor revision number."]
7393 pub const fn minrev(&self) -> u8 {
8413 let val = (self.0 >> 0usize) & 0x0f; 7394 let val = (self.0 >> 0usize) & 0x0f;
8414 val as u8 7395 val as u8
8415 } 7396 }
8416 #[doc = "NMOS compensation value"] 7397 #[doc = "IP minor revision number."]
8417 pub fn set_ncv(&mut self, val: u8) { 7398 pub fn set_minrev(&mut self, val: u8) {
8418 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); 7399 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize);
8419 } 7400 }
8420 #[doc = "PMOS compensation value"] 7401 #[doc = "IP major revision number."]
8421 pub const fn pcv(&self) -> u8 { 7402 pub const fn majrev(&self) -> u8 {
8422 let val = (self.0 >> 4usize) & 0x0f; 7403 let val = (self.0 >> 4usize) & 0x0f;
8423 val as u8 7404 val as u8
8424 } 7405 }
8425 #[doc = "PMOS compensation value"] 7406 #[doc = "IP major revision number."]
8426 pub fn set_pcv(&mut self, val: u8) { 7407 pub fn set_majrev(&mut self, val: u8) {
8427 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize); 7408 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize);
8428 } 7409 }
8429 } 7410 }
8430 impl Default for Ccvr { 7411 impl Default for Ver {
8431 fn default() -> Ccvr { 7412 fn default() -> Ver {
8432 Ccvr(0) 7413 Ver(0)
8433 } 7414 }
8434 } 7415 }
8435 #[doc = "SYSCFG user register 7"] 7416 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."]
8436 #[repr(transparent)] 7417 #[repr(transparent)]
8437 #[derive(Copy, Clone, Eq, PartialEq)] 7418 #[derive(Copy, Clone, Eq, PartialEq)]
8438 pub struct Ur7(pub u32); 7419 pub struct Resp1r(pub u32);
8439 impl Ur7 { 7420 impl Resp1r {
8440 #[doc = "Secured area start address for bank 1"] 7421 #[doc = "see Table 432"]
8441 pub const fn sa_beg_1(&self) -> u16 { 7422 pub const fn cardstatus1(&self) -> u32 {
8442 let val = (self.0 >> 0usize) & 0x0fff; 7423 let val = (self.0 >> 0usize) & 0xffff_ffff;
8443 val as u16 7424 val as u32
8444 }
8445 #[doc = "Secured area start address for bank 1"]
8446 pub fn set_sa_beg_1(&mut self, val: u16) {
8447 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize);
8448 }
8449 #[doc = "Secured area end address for bank 1"]
8450 pub const fn sa_end_1(&self) -> u16 {
8451 let val = (self.0 >> 16usize) & 0x0fff;
8452 val as u16
8453 } 7425 }
8454 #[doc = "Secured area end address for bank 1"] 7426 #[doc = "see Table 432"]
8455 pub fn set_sa_end_1(&mut self, val: u16) { 7427 pub fn set_cardstatus1(&mut self, val: u32) {
8456 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize); 7428 self.0 =
7429 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
8457 } 7430 }
8458 } 7431 }
8459 impl Default for Ur7 { 7432 impl Default for Resp1r {
8460 fn default() -> Ur7 { 7433 fn default() -> Resp1r {
8461 Ur7(0) 7434 Resp1r(0)
8462 } 7435 }
8463 } 7436 }
8464 #[doc = "SYSCFG user register 13"] 7437 #[doc = "The interrupt mask register determines which status flags generate an interrupt request by setting the corresponding bit to 1."]
8465 #[repr(transparent)] 7438 #[repr(transparent)]
8466 #[derive(Copy, Clone, Eq, PartialEq)] 7439 #[derive(Copy, Clone, Eq, PartialEq)]
8467 pub struct Ur13(pub u32); 7440 pub struct Maskr(pub u32);
8468 impl Ur13 { 7441 impl Maskr {
8469 #[doc = "Secured DTCM RAM Size"] 7442 #[doc = "Command CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by command CRC failure."]
8470 pub const fn sdrs(&self) -> u8 { 7443 pub const fn ccrcfailie(&self) -> bool {
8471 let val = (self.0 >> 0usize) & 0x03; 7444 let val = (self.0 >> 0usize) & 0x01;
8472 val as u8 7445 val != 0
8473 } 7446 }
8474 #[doc = "Secured DTCM RAM Size"] 7447 #[doc = "Command CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by command CRC failure."]
8475 pub fn set_sdrs(&mut self, val: u8) { 7448 pub fn set_ccrcfailie(&mut self, val: bool) {
8476 self.0 = (self.0 & !(0x03 << 0usize)) | (((val as u32) & 0x03) << 0usize); 7449 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
8477 } 7450 }
8478 #[doc = "D1 Standby reset"] 7451 #[doc = "Data CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by data CRC failure."]
8479 pub const fn d1sbrst(&self) -> bool { 7452 pub const fn dcrcfailie(&self) -> bool {
8480 let val = (self.0 >> 16usize) & 0x01; 7453 let val = (self.0 >> 1usize) & 0x01;
8481 val != 0 7454 val != 0
8482 } 7455 }
8483 #[doc = "D1 Standby reset"] 7456 #[doc = "Data CRC fail interrupt enable Set and cleared by software to enable/disable interrupt caused by data CRC failure."]
8484 pub fn set_d1sbrst(&mut self, val: bool) { 7457 pub fn set_dcrcfailie(&mut self, val: bool) {
8485 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 7458 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
7459 }
7460 #[doc = "Command timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by command timeout."]
7461 pub const fn ctimeoutie(&self) -> bool {
7462 let val = (self.0 >> 2usize) & 0x01;
7463 val != 0
7464 }
7465 #[doc = "Command timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by command timeout."]
7466 pub fn set_ctimeoutie(&mut self, val: bool) {
7467 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
7468 }
7469 #[doc = "Data timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by data timeout."]
7470 pub const fn dtimeoutie(&self) -> bool {
7471 let val = (self.0 >> 3usize) & 0x01;
7472 val != 0
7473 }
7474 #[doc = "Data timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by data timeout."]
7475 pub fn set_dtimeoutie(&mut self, val: bool) {
7476 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
7477 }
7478 #[doc = "Tx FIFO underrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO underrun error."]
7479 pub const fn txunderrie(&self) -> bool {
7480 let val = (self.0 >> 4usize) & 0x01;
7481 val != 0
7482 }
7483 #[doc = "Tx FIFO underrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO underrun error."]
7484 pub fn set_txunderrie(&mut self, val: bool) {
7485 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
7486 }
7487 #[doc = "Rx FIFO overrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO overrun error."]
7488 pub const fn rxoverrie(&self) -> bool {
7489 let val = (self.0 >> 5usize) & 0x01;
7490 val != 0
7491 }
7492 #[doc = "Rx FIFO overrun error interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO overrun error."]
7493 pub fn set_rxoverrie(&mut self, val: bool) {
7494 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
7495 }
7496 #[doc = "Command response received interrupt enable Set and cleared by software to enable/disable interrupt caused by receiving command response."]
7497 pub const fn cmdrendie(&self) -> bool {
7498 let val = (self.0 >> 6usize) & 0x01;
7499 val != 0
7500 }
7501 #[doc = "Command response received interrupt enable Set and cleared by software to enable/disable interrupt caused by receiving command response."]
7502 pub fn set_cmdrendie(&mut self, val: bool) {
7503 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
7504 }
7505 #[doc = "Command sent interrupt enable Set and cleared by software to enable/disable interrupt caused by sending command."]
7506 pub const fn cmdsentie(&self) -> bool {
7507 let val = (self.0 >> 7usize) & 0x01;
7508 val != 0
7509 }
7510 #[doc = "Command sent interrupt enable Set and cleared by software to enable/disable interrupt caused by sending command."]
7511 pub fn set_cmdsentie(&mut self, val: bool) {
7512 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
7513 }
7514 #[doc = "Data end interrupt enable Set and cleared by software to enable/disable interrupt caused by data end."]
7515 pub const fn dataendie(&self) -> bool {
7516 let val = (self.0 >> 8usize) & 0x01;
7517 val != 0
7518 }
7519 #[doc = "Data end interrupt enable Set and cleared by software to enable/disable interrupt caused by data end."]
7520 pub fn set_dataendie(&mut self, val: bool) {
7521 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
7522 }
7523 #[doc = "Data hold interrupt enable Set and cleared by software to enable/disable the interrupt generated when sending new data is hold in the DPSM Wait_S state."]
7524 pub const fn dholdie(&self) -> bool {
7525 let val = (self.0 >> 9usize) & 0x01;
7526 val != 0
7527 }
7528 #[doc = "Data hold interrupt enable Set and cleared by software to enable/disable the interrupt generated when sending new data is hold in the DPSM Wait_S state."]
7529 pub fn set_dholdie(&mut self, val: bool) {
7530 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
7531 }
7532 #[doc = "Data block end interrupt enable Set and cleared by software to enable/disable interrupt caused by data block end."]
7533 pub const fn dbckendie(&self) -> bool {
7534 let val = (self.0 >> 10usize) & 0x01;
7535 val != 0
7536 }
7537 #[doc = "Data block end interrupt enable Set and cleared by software to enable/disable interrupt caused by data block end."]
7538 pub fn set_dbckendie(&mut self, val: bool) {
7539 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize);
7540 }
7541 #[doc = "Data transfer aborted interrupt enable Set and cleared by software to enable/disable interrupt caused by a data transfer being aborted."]
7542 pub const fn dabortie(&self) -> bool {
7543 let val = (self.0 >> 11usize) & 0x01;
7544 val != 0
7545 }
7546 #[doc = "Data transfer aborted interrupt enable Set and cleared by software to enable/disable interrupt caused by a data transfer being aborted."]
7547 pub fn set_dabortie(&mut self, val: bool) {
7548 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize);
7549 }
7550 #[doc = "Tx FIFO half empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO half empty."]
7551 pub const fn txfifoheie(&self) -> bool {
7552 let val = (self.0 >> 14usize) & 0x01;
7553 val != 0
7554 }
7555 #[doc = "Tx FIFO half empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO half empty."]
7556 pub fn set_txfifoheie(&mut self, val: bool) {
7557 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
7558 }
7559 #[doc = "Rx FIFO half full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO half full."]
7560 pub const fn rxfifohfie(&self) -> bool {
7561 let val = (self.0 >> 15usize) & 0x01;
7562 val != 0
7563 }
7564 #[doc = "Rx FIFO half full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO half full."]
7565 pub fn set_rxfifohfie(&mut self, val: bool) {
7566 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize);
7567 }
7568 #[doc = "Rx FIFO full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO full."]
7569 pub const fn rxfifofie(&self) -> bool {
7570 let val = (self.0 >> 17usize) & 0x01;
7571 val != 0
7572 }
7573 #[doc = "Rx FIFO full interrupt enable Set and cleared by software to enable/disable interrupt caused by Rx FIFO full."]
7574 pub fn set_rxfifofie(&mut self, val: bool) {
7575 self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize);
7576 }
7577 #[doc = "Tx FIFO empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO empty."]
7578 pub const fn txfifoeie(&self) -> bool {
7579 let val = (self.0 >> 18usize) & 0x01;
7580 val != 0
7581 }
7582 #[doc = "Tx FIFO empty interrupt enable Set and cleared by software to enable/disable interrupt caused by Tx FIFO empty."]
7583 pub fn set_txfifoeie(&mut self, val: bool) {
7584 self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize);
7585 }
7586 #[doc = "BUSYD0END interrupt enable Set and cleared by software to enable/disable the interrupt generated when SDMMC_D0 signal changes from busy to NOT busy following a CMD response."]
7587 pub const fn busyd0endie(&self) -> bool {
7588 let val = (self.0 >> 21usize) & 0x01;
7589 val != 0
7590 }
7591 #[doc = "BUSYD0END interrupt enable Set and cleared by software to enable/disable the interrupt generated when SDMMC_D0 signal changes from busy to NOT busy following a CMD response."]
7592 pub fn set_busyd0endie(&mut self, val: bool) {
7593 self.0 = (self.0 & !(0x01 << 21usize)) | (((val as u32) & 0x01) << 21usize);
7594 }
7595 #[doc = "SDIO mode interrupt received interrupt enable Set and cleared by software to enable/disable the interrupt generated when receiving the SDIO mode interrupt."]
7596 pub const fn sdioitie(&self) -> bool {
7597 let val = (self.0 >> 22usize) & 0x01;
7598 val != 0
7599 }
7600 #[doc = "SDIO mode interrupt received interrupt enable Set and cleared by software to enable/disable the interrupt generated when receiving the SDIO mode interrupt."]
7601 pub fn set_sdioitie(&mut self, val: bool) {
7602 self.0 = (self.0 & !(0x01 << 22usize)) | (((val as u32) & 0x01) << 22usize);
7603 }
7604 #[doc = "Acknowledgment Fail interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment Fail."]
7605 pub const fn ackfailie(&self) -> bool {
7606 let val = (self.0 >> 23usize) & 0x01;
7607 val != 0
7608 }
7609 #[doc = "Acknowledgment Fail interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment Fail."]
7610 pub fn set_ackfailie(&mut self, val: bool) {
7611 self.0 = (self.0 & !(0x01 << 23usize)) | (((val as u32) & 0x01) << 23usize);
7612 }
7613 #[doc = "Acknowledgment timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment timeout."]
7614 pub const fn acktimeoutie(&self) -> bool {
7615 let val = (self.0 >> 24usize) & 0x01;
7616 val != 0
7617 }
7618 #[doc = "Acknowledgment timeout interrupt enable Set and cleared by software to enable/disable interrupt caused by acknowledgment timeout."]
7619 pub fn set_acktimeoutie(&mut self, val: bool) {
7620 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize);
7621 }
7622 #[doc = "Voltage switch critical timing section completion interrupt enable Set and cleared by software to enable/disable the interrupt generated when voltage switch critical timing section completion."]
7623 pub const fn vswendie(&self) -> bool {
7624 let val = (self.0 >> 25usize) & 0x01;
7625 val != 0
7626 }
7627 #[doc = "Voltage switch critical timing section completion interrupt enable Set and cleared by software to enable/disable the interrupt generated when voltage switch critical timing section completion."]
7628 pub fn set_vswendie(&mut self, val: bool) {
7629 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize);
7630 }
7631 #[doc = "Voltage Switch clock stopped interrupt enable Set and cleared by software to enable/disable interrupt caused by Voltage Switch clock stopped."]
7632 pub const fn ckstopie(&self) -> bool {
7633 let val = (self.0 >> 26usize) & 0x01;
7634 val != 0
7635 }
7636 #[doc = "Voltage Switch clock stopped interrupt enable Set and cleared by software to enable/disable interrupt caused by Voltage Switch clock stopped."]
7637 pub fn set_ckstopie(&mut self, val: bool) {
7638 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize);
7639 }
7640 #[doc = "IDMA buffer transfer complete interrupt enable Set and cleared by software to enable/disable the interrupt generated when the IDMA has transferred all data belonging to a memory buffer."]
7641 pub const fn idmabtcie(&self) -> bool {
7642 let val = (self.0 >> 28usize) & 0x01;
7643 val != 0
7644 }
7645 #[doc = "IDMA buffer transfer complete interrupt enable Set and cleared by software to enable/disable the interrupt generated when the IDMA has transferred all data belonging to a memory buffer."]
7646 pub fn set_idmabtcie(&mut self, val: bool) {
7647 self.0 = (self.0 & !(0x01 << 28usize)) | (((val as u32) & 0x01) << 28usize);
8486 } 7648 }
8487 } 7649 }
8488 impl Default for Ur13 { 7650 impl Default for Maskr {
8489 fn default() -> Ur13 { 7651 fn default() -> Maskr {
8490 Ur13(0) 7652 Maskr(0)
8491 } 7653 }
8492 } 7654 }
8493 #[doc = "SYSCFG user register 4"] 7655 #[doc = "The SDMMC_ARGR register contains a 32-bit command argument, which is sent to a card as part of a command message."]
8494 #[repr(transparent)] 7656 #[repr(transparent)]
8495 #[derive(Copy, Clone, Eq, PartialEq)] 7657 #[derive(Copy, Clone, Eq, PartialEq)]
8496 pub struct Ur4(pub u32); 7658 pub struct Argr(pub u32);
8497 impl Ur4 { 7659 impl Argr {
8498 #[doc = "Mass Erase Protected Area Disabled for bank 1"] 7660 #[doc = "Command argument. These bits can only be written by firmware when CPSM is disabled (CPSMEN = 0). Command argument sent to a card as part of a command message. If a command contains an argument, it must be loaded into this register before writing a command to the command register."]
8499 pub const fn mepad_1(&self) -> bool { 7661 pub const fn cmdarg(&self) -> u32 {
8500 let val = (self.0 >> 16usize) & 0x01; 7662 let val = (self.0 >> 0usize) & 0xffff_ffff;
8501 val != 0 7663 val as u32
8502 } 7664 }
8503 #[doc = "Mass Erase Protected Area Disabled for bank 1"] 7665 #[doc = "Command argument. These bits can only be written by firmware when CPSM is disabled (CPSMEN = 0). Command argument sent to a card as part of a command message. If a command contains an argument, it must be loaded into this register before writing a command to the command register."]
8504 pub fn set_mepad_1(&mut self, val: bool) { 7666 pub fn set_cmdarg(&mut self, val: u32) {
8505 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 7667 self.0 =
7668 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
8506 } 7669 }
8507 } 7670 }
8508 impl Default for Ur4 { 7671 impl Default for Argr {
8509 fn default() -> Ur4 { 7672 fn default() -> Argr {
8510 Ur4(0) 7673 Argr(0)
8511 } 7674 }
8512 } 7675 }
8513 #[doc = "SYSCFG user register 10"] 7676 #[doc = "The SDMMC_DLENR register contains the number of data bytes to be transferred. The value is loaded into the data counter when data transfer starts."]
8514 #[repr(transparent)] 7677 #[repr(transparent)]
8515 #[derive(Copy, Clone, Eq, PartialEq)] 7678 #[derive(Copy, Clone, Eq, PartialEq)]
8516 pub struct Ur10(pub u32); 7679 pub struct Dlenr(pub u32);
8517 impl Ur10 { 7680 impl Dlenr {
8518 #[doc = "Protected area end address for bank 2"] 7681 #[doc = "Data length value This register can only be written by firmware when DPSM is inactive (DPSMACT = 0). Number of data bytes to be transferred. When DDR = 1 DATALENGTH is truncated to a multiple of 2. (The last odd byte is not transfered) When DATALENGTH = 0 no data will be transfered, when requested by a CPSMEN and CMDTRANS = 1 also no command will be transfered. DTEN and CPSMEN are cleared to 0."]
8519 pub const fn pa_end_2(&self) -> u16 { 7682 pub const fn datalength(&self) -> u32 {
8520 let val = (self.0 >> 0usize) & 0x0fff; 7683 let val = (self.0 >> 0usize) & 0x01ff_ffff;
8521 val as u16 7684 val as u32
8522 }
8523 #[doc = "Protected area end address for bank 2"]
8524 pub fn set_pa_end_2(&mut self, val: u16) {
8525 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize);
8526 }
8527 #[doc = "Secured area start address for bank 2"]
8528 pub const fn sa_beg_2(&self) -> u16 {
8529 let val = (self.0 >> 16usize) & 0x0fff;
8530 val as u16
8531 } 7685 }
8532 #[doc = "Secured area start address for bank 2"] 7686 #[doc = "Data length value This register can only be written by firmware when DPSM is inactive (DPSMACT = 0). Number of data bytes to be transferred. When DDR = 1 DATALENGTH is truncated to a multiple of 2. (The last odd byte is not transfered) When DATALENGTH = 0 no data will be transfered, when requested by a CPSMEN and CMDTRANS = 1 also no command will be transfered. DTEN and CPSMEN are cleared to 0."]
8533 pub fn set_sa_beg_2(&mut self, val: u16) { 7687 pub fn set_datalength(&mut self, val: u32) {
8534 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize); 7688 self.0 =
7689 (self.0 & !(0x01ff_ffff << 0usize)) | (((val as u32) & 0x01ff_ffff) << 0usize);
8535 } 7690 }
8536 } 7691 }
8537 impl Default for Ur10 { 7692 impl Default for Dlenr {
8538 fn default() -> Ur10 { 7693 fn default() -> Dlenr {
8539 Ur10(0) 7694 Dlenr(0)
8540 } 7695 }
8541 } 7696 }
8542 #[doc = "SYSCFG user register 9"] 7697 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."]
8543 #[repr(transparent)] 7698 #[repr(transparent)]
8544 #[derive(Copy, Clone, Eq, PartialEq)] 7699 #[derive(Copy, Clone, Eq, PartialEq)]
8545 pub struct Ur9(pub u32); 7700 pub struct Resp2r(pub u32);
8546 impl Ur9 { 7701 impl Resp2r {
8547 #[doc = "Write protection for flash bank 2"] 7702 #[doc = "see Table404."]
8548 pub const fn wrpn_2(&self) -> u8 { 7703 pub const fn cardstatus2(&self) -> u32 {
8549 let val = (self.0 >> 0usize) & 0xff; 7704 let val = (self.0 >> 0usize) & 0xffff_ffff;
8550 val as u8 7705 val as u32
8551 }
8552 #[doc = "Write protection for flash bank 2"]
8553 pub fn set_wrpn_2(&mut self, val: u8) {
8554 self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize);
8555 }
8556 #[doc = "Protected area start address for bank 2"]
8557 pub const fn pa_beg_2(&self) -> u16 {
8558 let val = (self.0 >> 16usize) & 0x0fff;
8559 val as u16
8560 } 7706 }
8561 #[doc = "Protected area start address for bank 2"] 7707 #[doc = "see Table404."]
8562 pub fn set_pa_beg_2(&mut self, val: u16) { 7708 pub fn set_cardstatus2(&mut self, val: u32) {
8563 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize); 7709 self.0 =
7710 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
8564 } 7711 }
8565 } 7712 }
8566 impl Default for Ur9 { 7713 impl Default for Resp2r {
8567 fn default() -> Ur9 { 7714 fn default() -> Resp2r {
8568 Ur9(0) 7715 Resp2r(0)
8569 } 7716 }
8570 } 7717 }
8571 #[doc = "SYSCFG user register 12"] 7718 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."]
8572 #[repr(transparent)] 7719 #[repr(transparent)]
8573 #[derive(Copy, Clone, Eq, PartialEq)] 7720 #[derive(Copy, Clone, Eq, PartialEq)]
8574 pub struct Ur12(pub u32); 7721 pub struct Resp3r(pub u32);
8575 impl Ur12 { 7722 impl Resp3r {
8576 #[doc = "Secure mode"] 7723 #[doc = "see Table404."]
8577 pub const fn secure(&self) -> bool { 7724 pub const fn cardstatus3(&self) -> u32 {
8578 let val = (self.0 >> 16usize) & 0x01; 7725 let val = (self.0 >> 0usize) & 0xffff_ffff;
8579 val != 0 7726 val as u32
8580 } 7727 }
8581 #[doc = "Secure mode"] 7728 #[doc = "see Table404."]
8582 pub fn set_secure(&mut self, val: bool) { 7729 pub fn set_cardstatus3(&mut self, val: u32) {
8583 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 7730 self.0 =
7731 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
8584 } 7732 }
8585 } 7733 }
8586 impl Default for Ur12 { 7734 impl Default for Resp3r {
8587 fn default() -> Ur12 { 7735 fn default() -> Resp3r {
8588 Ur12(0) 7736 Resp3r(0)
8589 } 7737 }
8590 } 7738 }
8591 #[doc = "peripheral mode configuration register"] 7739 #[doc = "The SDMMC_ICR register is a write-only register. Writing a bit with 1 clears the corresponding bit in the SDMMC_STAR status register."]
8592 #[repr(transparent)] 7740 #[repr(transparent)]
8593 #[derive(Copy, Clone, Eq, PartialEq)] 7741 #[derive(Copy, Clone, Eq, PartialEq)]
8594 pub struct Pmcr(pub u32); 7742 pub struct Icr(pub u32);
8595 impl Pmcr { 7743 impl Icr {
8596 #[doc = "I2C1 Fm+"] 7744 #[doc = "CCRCFAIL flag clear bit Set by software to clear the CCRCFAIL flag."]
8597 pub const fn i2c1fmp(&self) -> bool { 7745 pub const fn ccrcfailc(&self) -> bool {
8598 let val = (self.0 >> 0usize) & 0x01; 7746 let val = (self.0 >> 0usize) & 0x01;
8599 val != 0 7747 val != 0
8600 } 7748 }
8601 #[doc = "I2C1 Fm+"] 7749 #[doc = "CCRCFAIL flag clear bit Set by software to clear the CCRCFAIL flag."]
8602 pub fn set_i2c1fmp(&mut self, val: bool) { 7750 pub fn set_ccrcfailc(&mut self, val: bool) {
8603 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 7751 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
8604 } 7752 }
8605 #[doc = "I2C2 Fm+"] 7753 #[doc = "DCRCFAIL flag clear bit Set by software to clear the DCRCFAIL flag."]
8606 pub const fn i2c2fmp(&self) -> bool { 7754 pub const fn dcrcfailc(&self) -> bool {
8607 let val = (self.0 >> 1usize) & 0x01; 7755 let val = (self.0 >> 1usize) & 0x01;
8608 val != 0 7756 val != 0
8609 } 7757 }
8610 #[doc = "I2C2 Fm+"] 7758 #[doc = "DCRCFAIL flag clear bit Set by software to clear the DCRCFAIL flag."]
8611 pub fn set_i2c2fmp(&mut self, val: bool) { 7759 pub fn set_dcrcfailc(&mut self, val: bool) {
8612 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 7760 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
8613 } 7761 }
8614 #[doc = "I2C3 Fm+"] 7762 #[doc = "CTIMEOUT flag clear bit Set by software to clear the CTIMEOUT flag."]
8615 pub const fn i2c3fmp(&self) -> bool { 7763 pub const fn ctimeoutc(&self) -> bool {
8616 let val = (self.0 >> 2usize) & 0x01; 7764 let val = (self.0 >> 2usize) & 0x01;
8617 val != 0 7765 val != 0
8618 } 7766 }
8619 #[doc = "I2C3 Fm+"] 7767 #[doc = "CTIMEOUT flag clear bit Set by software to clear the CTIMEOUT flag."]
8620 pub fn set_i2c3fmp(&mut self, val: bool) { 7768 pub fn set_ctimeoutc(&mut self, val: bool) {
8621 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); 7769 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
8622 } 7770 }
8623 #[doc = "I2C4 Fm+"] 7771 #[doc = "DTIMEOUT flag clear bit Set by software to clear the DTIMEOUT flag."]
8624 pub const fn i2c4fmp(&self) -> bool { 7772 pub const fn dtimeoutc(&self) -> bool {
8625 let val = (self.0 >> 3usize) & 0x01; 7773 let val = (self.0 >> 3usize) & 0x01;
8626 val != 0 7774 val != 0
8627 } 7775 }
8628 #[doc = "I2C4 Fm+"] 7776 #[doc = "DTIMEOUT flag clear bit Set by software to clear the DTIMEOUT flag."]
8629 pub fn set_i2c4fmp(&mut self, val: bool) { 7777 pub fn set_dtimeoutc(&mut self, val: bool) {
8630 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); 7778 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
8631 } 7779 }
8632 #[doc = "PB(6) Fm+"] 7780 #[doc = "TXUNDERR flag clear bit Set by software to clear TXUNDERR flag."]
8633 pub const fn pb6fmp(&self) -> bool { 7781 pub const fn txunderrc(&self) -> bool {
8634 let val = (self.0 >> 4usize) & 0x01; 7782 let val = (self.0 >> 4usize) & 0x01;
8635 val != 0 7783 val != 0
8636 } 7784 }
8637 #[doc = "PB(6) Fm+"] 7785 #[doc = "TXUNDERR flag clear bit Set by software to clear TXUNDERR flag."]
8638 pub fn set_pb6fmp(&mut self, val: bool) { 7786 pub fn set_txunderrc(&mut self, val: bool) {
8639 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); 7787 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
8640 } 7788 }
8641 #[doc = "PB(7) Fast Mode Plus"] 7789 #[doc = "RXOVERR flag clear bit Set by software to clear the RXOVERR flag."]
8642 pub const fn pb7fmp(&self) -> bool { 7790 pub const fn rxoverrc(&self) -> bool {
8643 let val = (self.0 >> 5usize) & 0x01; 7791 let val = (self.0 >> 5usize) & 0x01;
8644 val != 0 7792 val != 0
8645 } 7793 }
8646 #[doc = "PB(7) Fast Mode Plus"] 7794 #[doc = "RXOVERR flag clear bit Set by software to clear the RXOVERR flag."]
8647 pub fn set_pb7fmp(&mut self, val: bool) { 7795 pub fn set_rxoverrc(&mut self, val: bool) {
8648 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); 7796 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
8649 } 7797 }
8650 #[doc = "PB(8) Fast Mode Plus"] 7798 #[doc = "CMDREND flag clear bit Set by software to clear the CMDREND flag."]
8651 pub const fn pb8fmp(&self) -> bool { 7799 pub const fn cmdrendc(&self) -> bool {
8652 let val = (self.0 >> 6usize) & 0x01; 7800 let val = (self.0 >> 6usize) & 0x01;
8653 val != 0 7801 val != 0
8654 } 7802 }
8655 #[doc = "PB(8) Fast Mode Plus"] 7803 #[doc = "CMDREND flag clear bit Set by software to clear the CMDREND flag."]
8656 pub fn set_pb8fmp(&mut self, val: bool) { 7804 pub fn set_cmdrendc(&mut self, val: bool) {
8657 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); 7805 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
8658 } 7806 }
8659 #[doc = "PB(9) Fm+"] 7807 #[doc = "CMDSENT flag clear bit Set by software to clear the CMDSENT flag."]
8660 pub const fn pb9fmp(&self) -> bool { 7808 pub const fn cmdsentc(&self) -> bool {
8661 let val = (self.0 >> 7usize) & 0x01; 7809 let val = (self.0 >> 7usize) & 0x01;
8662 val != 0 7810 val != 0
8663 } 7811 }
8664 #[doc = "PB(9) Fm+"] 7812 #[doc = "CMDSENT flag clear bit Set by software to clear the CMDSENT flag."]
8665 pub fn set_pb9fmp(&mut self, val: bool) { 7813 pub fn set_cmdsentc(&mut self, val: bool) {
8666 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); 7814 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
8667 } 7815 }
8668 #[doc = "Booster Enable"] 7816 #[doc = "DATAEND flag clear bit Set by software to clear the DATAEND flag."]
8669 pub const fn booste(&self) -> bool { 7817 pub const fn dataendc(&self) -> bool {
8670 let val = (self.0 >> 8usize) & 0x01; 7818 let val = (self.0 >> 8usize) & 0x01;
8671 val != 0 7819 val != 0
8672 } 7820 }
8673 #[doc = "Booster Enable"] 7821 #[doc = "DATAEND flag clear bit Set by software to clear the DATAEND flag."]
8674 pub fn set_booste(&mut self, val: bool) { 7822 pub fn set_dataendc(&mut self, val: bool) {
8675 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 7823 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
8676 } 7824 }
8677 #[doc = "Analog switch supply voltage selection"] 7825 #[doc = "DHOLD flag clear bit Set by software to clear the DHOLD flag."]
8678 pub const fn boostvddsel(&self) -> bool { 7826 pub const fn dholdc(&self) -> bool {
8679 let val = (self.0 >> 9usize) & 0x01; 7827 let val = (self.0 >> 9usize) & 0x01;
8680 val != 0 7828 val != 0
8681 } 7829 }
8682 #[doc = "Analog switch supply voltage selection"] 7830 #[doc = "DHOLD flag clear bit Set by software to clear the DHOLD flag."]
8683 pub fn set_boostvddsel(&mut self, val: bool) { 7831 pub fn set_dholdc(&mut self, val: bool) {
8684 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); 7832 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
8685 } 7833 }
8686 #[doc = "Ethernet PHY Interface Selection"] 7834 #[doc = "DBCKEND flag clear bit Set by software to clear the DBCKEND flag."]
8687 pub const fn epis(&self) -> u8 { 7835 pub const fn dbckendc(&self) -> bool {
8688 let val = (self.0 >> 21usize) & 0x07; 7836 let val = (self.0 >> 10usize) & 0x01;
8689 val as u8 7837 val != 0
8690 } 7838 }
8691 #[doc = "Ethernet PHY Interface Selection"] 7839 #[doc = "DBCKEND flag clear bit Set by software to clear the DBCKEND flag."]
8692 pub fn set_epis(&mut self, val: u8) { 7840 pub fn set_dbckendc(&mut self, val: bool) {
8693 self.0 = (self.0 & !(0x07 << 21usize)) | (((val as u32) & 0x07) << 21usize); 7841 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize);
8694 } 7842 }
8695 #[doc = "PA0 Switch Open"] 7843 #[doc = "DABORT flag clear bit Set by software to clear the DABORT flag."]
8696 pub const fn pa0so(&self) -> bool { 7844 pub const fn dabortc(&self) -> bool {
7845 let val = (self.0 >> 11usize) & 0x01;
7846 val != 0
7847 }
7848 #[doc = "DABORT flag clear bit Set by software to clear the DABORT flag."]
7849 pub fn set_dabortc(&mut self, val: bool) {
7850 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize);
7851 }
7852 #[doc = "BUSYD0END flag clear bit Set by software to clear the BUSYD0END flag."]
7853 pub const fn busyd0endc(&self) -> bool {
7854 let val = (self.0 >> 21usize) & 0x01;
7855 val != 0
7856 }
7857 #[doc = "BUSYD0END flag clear bit Set by software to clear the BUSYD0END flag."]
7858 pub fn set_busyd0endc(&mut self, val: bool) {
7859 self.0 = (self.0 & !(0x01 << 21usize)) | (((val as u32) & 0x01) << 21usize);
7860 }
7861 #[doc = "SDIOIT flag clear bit Set by software to clear the SDIOIT flag."]
7862 pub const fn sdioitc(&self) -> bool {
7863 let val = (self.0 >> 22usize) & 0x01;
7864 val != 0
7865 }
7866 #[doc = "SDIOIT flag clear bit Set by software to clear the SDIOIT flag."]
7867 pub fn set_sdioitc(&mut self, val: bool) {
7868 self.0 = (self.0 & !(0x01 << 22usize)) | (((val as u32) & 0x01) << 22usize);
7869 }
7870 #[doc = "ACKFAIL flag clear bit Set by software to clear the ACKFAIL flag."]
7871 pub const fn ackfailc(&self) -> bool {
7872 let val = (self.0 >> 23usize) & 0x01;
7873 val != 0
7874 }
7875 #[doc = "ACKFAIL flag clear bit Set by software to clear the ACKFAIL flag."]
7876 pub fn set_ackfailc(&mut self, val: bool) {
7877 self.0 = (self.0 & !(0x01 << 23usize)) | (((val as u32) & 0x01) << 23usize);
7878 }
7879 #[doc = "ACKTIMEOUT flag clear bit Set by software to clear the ACKTIMEOUT flag."]
7880 pub const fn acktimeoutc(&self) -> bool {
8697 let val = (self.0 >> 24usize) & 0x01; 7881 let val = (self.0 >> 24usize) & 0x01;
8698 val != 0 7882 val != 0
8699 } 7883 }
8700 #[doc = "PA0 Switch Open"] 7884 #[doc = "ACKTIMEOUT flag clear bit Set by software to clear the ACKTIMEOUT flag."]
8701 pub fn set_pa0so(&mut self, val: bool) { 7885 pub fn set_acktimeoutc(&mut self, val: bool) {
8702 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize); 7886 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize);
8703 } 7887 }
8704 #[doc = "PA1 Switch Open"] 7888 #[doc = "VSWEND flag clear bit Set by software to clear the VSWEND flag."]
8705 pub const fn pa1so(&self) -> bool { 7889 pub const fn vswendc(&self) -> bool {
8706 let val = (self.0 >> 25usize) & 0x01; 7890 let val = (self.0 >> 25usize) & 0x01;
8707 val != 0 7891 val != 0
8708 } 7892 }
8709 #[doc = "PA1 Switch Open"] 7893 #[doc = "VSWEND flag clear bit Set by software to clear the VSWEND flag."]
8710 pub fn set_pa1so(&mut self, val: bool) { 7894 pub fn set_vswendc(&mut self, val: bool) {
8711 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize); 7895 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize);
8712 } 7896 }
8713 #[doc = "PC2 Switch Open"] 7897 #[doc = "CKSTOP flag clear bit Set by software to clear the CKSTOP flag."]
8714 pub const fn pc2so(&self) -> bool { 7898 pub const fn ckstopc(&self) -> bool {
8715 let val = (self.0 >> 26usize) & 0x01; 7899 let val = (self.0 >> 26usize) & 0x01;
8716 val != 0 7900 val != 0
8717 } 7901 }
8718 #[doc = "PC2 Switch Open"] 7902 #[doc = "CKSTOP flag clear bit Set by software to clear the CKSTOP flag."]
8719 pub fn set_pc2so(&mut self, val: bool) { 7903 pub fn set_ckstopc(&mut self, val: bool) {
8720 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize); 7904 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize);
8721 } 7905 }
8722 #[doc = "PC3 Switch Open"] 7906 #[doc = "IDMA transfer error clear bit Set by software to clear the IDMATE flag."]
8723 pub const fn pc3so(&self) -> bool { 7907 pub const fn idmatec(&self) -> bool {
8724 let val = (self.0 >> 27usize) & 0x01; 7908 let val = (self.0 >> 27usize) & 0x01;
8725 val != 0 7909 val != 0
8726 } 7910 }
8727 #[doc = "PC3 Switch Open"] 7911 #[doc = "IDMA transfer error clear bit Set by software to clear the IDMATE flag."]
8728 pub fn set_pc3so(&mut self, val: bool) { 7912 pub fn set_idmatec(&mut self, val: bool) {
8729 self.0 = (self.0 & !(0x01 << 27usize)) | (((val as u32) & 0x01) << 27usize); 7913 self.0 = (self.0 & !(0x01 << 27usize)) | (((val as u32) & 0x01) << 27usize);
8730 } 7914 }
7915 #[doc = "IDMA buffer transfer complete clear bit Set by software to clear the IDMABTC flag."]
7916 pub const fn idmabtcc(&self) -> bool {
7917 let val = (self.0 >> 28usize) & 0x01;
7918 val != 0
7919 }
7920 #[doc = "IDMA buffer transfer complete clear bit Set by software to clear the IDMABTC flag."]
7921 pub fn set_idmabtcc(&mut self, val: bool) {
7922 self.0 = (self.0 & !(0x01 << 28usize)) | (((val as u32) & 0x01) << 28usize);
7923 }
8731 } 7924 }
8732 impl Default for Pmcr { 7925 impl Default for Icr {
8733 fn default() -> Pmcr { 7926 fn default() -> Icr {
8734 Pmcr(0) 7927 Icr(0)
8735 } 7928 }
8736 } 7929 }
8737 #[doc = "SYSCFG user register 6"] 7930 #[doc = "The SDMMC_RESP1/2/3/4R registers contain the status of a card, which is part of the received response."]
8738 #[repr(transparent)] 7931 #[repr(transparent)]
8739 #[derive(Copy, Clone, Eq, PartialEq)] 7932 #[derive(Copy, Clone, Eq, PartialEq)]
8740 pub struct Ur6(pub u32); 7933 pub struct Resp4r(pub u32);
8741 impl Ur6 { 7934 impl Resp4r {
8742 #[doc = "Protected area start address for bank 1"] 7935 #[doc = "see Table404."]
8743 pub const fn pa_beg_1(&self) -> u16 { 7936 pub const fn cardstatus4(&self) -> u32 {
8744 let val = (self.0 >> 0usize) & 0x0fff; 7937 let val = (self.0 >> 0usize) & 0xffff_ffff;
8745 val as u16 7938 val as u32
8746 } 7939 }
8747 #[doc = "Protected area start address for bank 1"] 7940 #[doc = "see Table404."]
8748 pub fn set_pa_beg_1(&mut self, val: u16) { 7941 pub fn set_cardstatus4(&mut self, val: u32) {
8749 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize); 7942 self.0 =
7943 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
8750 } 7944 }
8751 #[doc = "Protected area end address for bank 1"] 7945 }
8752 pub const fn pa_end_1(&self) -> u16 { 7946 impl Default for Resp4r {
8753 let val = (self.0 >> 16usize) & 0x0fff; 7947 fn default() -> Resp4r {
8754 val as u16 7948 Resp4r(0)
8755 } 7949 }
8756 #[doc = "Protected area end address for bank 1"] 7950 }
8757 pub fn set_pa_end_1(&mut self, val: u16) { 7951 #[doc = "The SDMMC_IDMABSIZER register contains the buffers size when in double buffer configuration."]
8758 self.0 = (self.0 & !(0x0fff << 16usize)) | (((val as u32) & 0x0fff) << 16usize); 7952 #[repr(transparent)]
7953 #[derive(Copy, Clone, Eq, PartialEq)]
7954 pub struct Idmabsizer(pub u32);
7955 impl Idmabsizer {
7956 #[doc = "Number of transfers per buffer. This 8-bit value shall be multiplied by 8 to get the size of the buffer in 32-bit words and by 32 to get the size of the buffer in bytes. Example: IDMABNDT = 0x01: buffer size = 8 words = 32 bytes. These bits can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
7957 pub const fn idmabndt(&self) -> u8 {
7958 let val = (self.0 >> 5usize) & 0xff;
7959 val as u8
7960 }
7961 #[doc = "Number of transfers per buffer. This 8-bit value shall be multiplied by 8 to get the size of the buffer in 32-bit words and by 32 to get the size of the buffer in bytes. Example: IDMABNDT = 0x01: buffer size = 8 words = 32 bytes. These bits can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
7962 pub fn set_idmabndt(&mut self, val: u8) {
7963 self.0 = (self.0 & !(0xff << 5usize)) | (((val as u32) & 0xff) << 5usize);
8759 } 7964 }
8760 } 7965 }
8761 impl Default for Ur6 { 7966 impl Default for Idmabsizer {
8762 fn default() -> Ur6 { 7967 fn default() -> Idmabsizer {
8763 Ur6(0) 7968 Idmabsizer(0)
8764 } 7969 }
8765 } 7970 }
8766 #[doc = "compensation cell control/status register"] 7971 #[doc = "The SDMMC_ACKTIMER register contains the acknowledgment timeout period, in SDMMC_CK bus clock periods. A counter loads the value from the SDMMC_ACKTIMER register, and starts decrementing when the data path state machine (DPSM) enters the Wait_Ack state. If the timer reaches 0 while the DPSM is in this states, the acknowledgment timeout status flag is set."]
8767 #[repr(transparent)] 7972 #[repr(transparent)]
8768 #[derive(Copy, Clone, Eq, PartialEq)] 7973 #[derive(Copy, Clone, Eq, PartialEq)]
8769 pub struct Cccsr(pub u32); 7974 pub struct Acktimer(pub u32);
8770 impl Cccsr { 7975 impl Acktimer {
8771 #[doc = "enable"] 7976 #[doc = "Boot acknowledgment timeout period This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). Boot acknowledgment timeout period expressed in card bus clock periods."]
8772 pub const fn en(&self) -> bool { 7977 pub const fn acktime(&self) -> u32 {
7978 let val = (self.0 >> 0usize) & 0x01ff_ffff;
7979 val as u32
7980 }
7981 #[doc = "Boot acknowledgment timeout period This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). Boot acknowledgment timeout period expressed in card bus clock periods."]
7982 pub fn set_acktime(&mut self, val: u32) {
7983 self.0 =
7984 (self.0 & !(0x01ff_ffff << 0usize)) | (((val as u32) & 0x01ff_ffff) << 0usize);
7985 }
7986 }
7987 impl Default for Acktimer {
7988 fn default() -> Acktimer {
7989 Acktimer(0)
7990 }
7991 }
7992 #[doc = "The receive and transmit FIFOs can be read or written as 32-bit wide registers. The FIFOs contain 32 entries on 32 sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO."]
7993 #[repr(transparent)]
7994 #[derive(Copy, Clone, Eq, PartialEq)]
7995 pub struct Idmactrlr(pub u32);
7996 impl Idmactrlr {
7997 #[doc = "IDMA enable This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
7998 pub const fn idmaen(&self) -> bool {
8773 let val = (self.0 >> 0usize) & 0x01; 7999 let val = (self.0 >> 0usize) & 0x01;
8774 val != 0 8000 val != 0
8775 } 8001 }
8776 #[doc = "enable"] 8002 #[doc = "IDMA enable This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8777 pub fn set_en(&mut self, val: bool) { 8003 pub fn set_idmaen(&mut self, val: bool) {
8778 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 8004 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
8779 } 8005 }
8780 #[doc = "Code selection"] 8006 #[doc = "Buffer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8781 pub const fn cs(&self) -> bool { 8007 pub const fn idmabmode(&self) -> bool {
8782 let val = (self.0 >> 1usize) & 0x01; 8008 let val = (self.0 >> 1usize) & 0x01;
8783 val != 0 8009 val != 0
8784 } 8010 }
8785 #[doc = "Code selection"] 8011 #[doc = "Buffer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8786 pub fn set_cs(&mut self, val: bool) { 8012 pub fn set_idmabmode(&mut self, val: bool) {
8787 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); 8013 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
8788 } 8014 }
8789 #[doc = "Compensation cell ready flag"] 8015 #[doc = "Double buffer mode active buffer indication This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). When IDMA is enabled this bit is toggled by hardware."]
8790 pub const fn ready(&self) -> bool { 8016 pub const fn idmabact(&self) -> bool {
8017 let val = (self.0 >> 2usize) & 0x01;
8018 val != 0
8019 }
8020 #[doc = "Double buffer mode active buffer indication This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). When IDMA is enabled this bit is toggled by hardware."]
8021 pub fn set_idmabact(&mut self, val: bool) {
8022 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
8023 }
8024 }
8025 impl Default for Idmactrlr {
8026 fn default() -> Idmactrlr {
8027 Idmactrlr(0)
8028 }
8029 }
8030 #[doc = "The SDMMC_DCTRL register control the data path state machine (DPSM)."]
8031 #[repr(transparent)]
8032 #[derive(Copy, Clone, Eq, PartialEq)]
8033 pub struct Dctrl(pub u32);
8034 impl Dctrl {
8035 #[doc = "Data transfer enable bit This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). This bit is cleared by Hardware when data transfer completes. This bit shall only be used to transfer data when no associated data transfer command is used, i.e. shall not be used with SD or eMMC cards."]
8036 pub const fn dten(&self) -> bool {
8037 let val = (self.0 >> 0usize) & 0x01;
8038 val != 0
8039 }
8040 #[doc = "Data transfer enable bit This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). This bit is cleared by Hardware when data transfer completes. This bit shall only be used to transfer data when no associated data transfer command is used, i.e. shall not be used with SD or eMMC cards."]
8041 pub fn set_dten(&mut self, val: bool) {
8042 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
8043 }
8044 #[doc = "Data transfer direction selection This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8045 pub const fn dtdir(&self) -> bool {
8046 let val = (self.0 >> 1usize) & 0x01;
8047 val != 0
8048 }
8049 #[doc = "Data transfer direction selection This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8050 pub fn set_dtdir(&mut self, val: bool) {
8051 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
8052 }
8053 #[doc = "Data transfer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8054 pub const fn dtmode(&self) -> u8 {
8055 let val = (self.0 >> 2usize) & 0x03;
8056 val as u8
8057 }
8058 #[doc = "Data transfer mode selection. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8059 pub fn set_dtmode(&mut self, val: u8) {
8060 self.0 = (self.0 & !(0x03 << 2usize)) | (((val as u32) & 0x03) << 2usize);
8061 }
8062 #[doc = "Data block size This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). Define the data block length when the block data transfer mode is selected: When DATALENGTH is not a multiple of DBLOCKSIZE, the transfered data is truncated at a multiple of DBLOCKSIZE. (Any remain data will not be transfered.) When DDR = 1, DBLOCKSIZE = 0000 shall not be used. (No data will be transfered)"]
8063 pub const fn dblocksize(&self) -> u8 {
8064 let val = (self.0 >> 4usize) & 0x0f;
8065 val as u8
8066 }
8067 #[doc = "Data block size This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). Define the data block length when the block data transfer mode is selected: When DATALENGTH is not a multiple of DBLOCKSIZE, the transfered data is truncated at a multiple of DBLOCKSIZE. (Any remain data will not be transfered.) When DDR = 1, DBLOCKSIZE = 0000 shall not be used. (No data will be transfered)"]
8068 pub fn set_dblocksize(&mut self, val: u8) {
8069 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize);
8070 }
8071 #[doc = "Read wait start. If this bit is set, read wait operation starts."]
8072 pub const fn rwstart(&self) -> bool {
8791 let val = (self.0 >> 8usize) & 0x01; 8073 let val = (self.0 >> 8usize) & 0x01;
8792 val != 0 8074 val != 0
8793 } 8075 }
8794 #[doc = "Compensation cell ready flag"] 8076 #[doc = "Read wait start. If this bit is set, read wait operation starts."]
8795 pub fn set_ready(&mut self, val: bool) { 8077 pub fn set_rwstart(&mut self, val: bool) {
8796 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); 8078 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
8797 } 8079 }
8798 #[doc = "High-speed at low-voltage"] 8080 #[doc = "Read wait stop This bit is written by firmware and auto cleared by hardware when the DPSM moves from the READ_WAIT state to the WAIT_R or IDLE state."]
8799 pub const fn hslv(&self) -> bool { 8081 pub const fn rwstop(&self) -> bool {
8800 let val = (self.0 >> 16usize) & 0x01; 8082 let val = (self.0 >> 9usize) & 0x01;
8801 val != 0 8083 val != 0
8802 } 8084 }
8803 #[doc = "High-speed at low-voltage"] 8085 #[doc = "Read wait stop This bit is written by firmware and auto cleared by hardware when the DPSM moves from the READ_WAIT state to the WAIT_R or IDLE state."]
8804 pub fn set_hslv(&mut self, val: bool) { 8086 pub fn set_rwstop(&mut self, val: bool) {
8805 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 8087 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
8088 }
8089 #[doc = "Read wait mode. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8090 pub const fn rwmod(&self) -> bool {
8091 let val = (self.0 >> 10usize) & 0x01;
8092 val != 0
8093 }
8094 #[doc = "Read wait mode. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8095 pub fn set_rwmod(&mut self, val: bool) {
8096 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize);
8097 }
8098 #[doc = "SD I/O interrupt enable functions This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). If this bit is set, the DPSM enables the SD I/O card specific interrupt operation."]
8099 pub const fn sdioen(&self) -> bool {
8100 let val = (self.0 >> 11usize) & 0x01;
8101 val != 0
8102 }
8103 #[doc = "SD I/O interrupt enable functions This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0). If this bit is set, the DPSM enables the SD I/O card specific interrupt operation."]
8104 pub fn set_sdioen(&mut self, val: bool) {
8105 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize);
8106 }
8107 #[doc = "Enable the reception of the boot acknowledgment. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8108 pub const fn bootacken(&self) -> bool {
8109 let val = (self.0 >> 12usize) & 0x01;
8110 val != 0
8111 }
8112 #[doc = "Enable the reception of the boot acknowledgment. This bit can only be written by firmware when DPSM is inactive (DPSMACT = 0)."]
8113 pub fn set_bootacken(&mut self, val: bool) {
8114 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize);
8115 }
8116 #[doc = "FIFO reset, will flush any remaining data. This bit can only be written by firmware when IDMAEN= 0 and DPSM is active (DPSMACT = 1). This bit will only take effect when a transfer error or transfer hold occurs."]
8117 pub const fn fiforst(&self) -> bool {
8118 let val = (self.0 >> 13usize) & 0x01;
8119 val != 0
8120 }
8121 #[doc = "FIFO reset, will flush any remaining data. This bit can only be written by firmware when IDMAEN= 0 and DPSM is active (DPSMACT = 1). This bit will only take effect when a transfer error or transfer hold occurs."]
8122 pub fn set_fiforst(&mut self, val: bool) {
8123 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
8806 } 8124 }
8807 } 8125 }
8808 impl Default for Cccsr { 8126 impl Default for Dctrl {
8809 fn default() -> Cccsr { 8127 fn default() -> Dctrl {
8810 Cccsr(0) 8128 Dctrl(0)
8811 } 8129 }
8812 } 8130 }
8813 #[doc = "SYSCFG user register 5"] 8131 #[doc = "The SDMMC_CMDR register contains the command index and command type bits. The command index is sent to a card as part of a command message. The command type bits control the command path state machine (CPSM)."]
8814 #[repr(transparent)] 8132 #[repr(transparent)]
8815 #[derive(Copy, Clone, Eq, PartialEq)] 8133 #[derive(Copy, Clone, Eq, PartialEq)]
8816 pub struct Ur5(pub u32); 8134 pub struct Cmdr(pub u32);
8817 impl Ur5 { 8135 impl Cmdr {
8818 #[doc = "Mass erase secured area disabled for bank 1"] 8136 #[doc = "Command index. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). The command index is sent to the card as part of a command message."]
8819 pub const fn mesad_1(&self) -> bool { 8137 pub const fn cmdindex(&self) -> u8 {
8820 let val = (self.0 >> 0usize) & 0x01; 8138 let val = (self.0 >> 0usize) & 0x3f;
8139 val as u8
8140 }
8141 #[doc = "Command index. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). The command index is sent to the card as part of a command message."]
8142 pub fn set_cmdindex(&mut self, val: u8) {
8143 self.0 = (self.0 & !(0x3f << 0usize)) | (((val as u32) & 0x3f) << 0usize);
8144 }
8145 #[doc = "The CPSM treats the command as a data transfer command, stops the interrupt period, and signals DataEnable to the DPSM This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues an end of interrupt period and issues DataEnable signal to the DPSM when the command is sent."]
8146 pub const fn cmdtrans(&self) -> bool {
8147 let val = (self.0 >> 6usize) & 0x01;
8821 val != 0 8148 val != 0
8822 } 8149 }
8823 #[doc = "Mass erase secured area disabled for bank 1"] 8150 #[doc = "The CPSM treats the command as a data transfer command, stops the interrupt period, and signals DataEnable to the DPSM This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues an end of interrupt period and issues DataEnable signal to the DPSM when the command is sent."]
8824 pub fn set_mesad_1(&mut self, val: bool) { 8151 pub fn set_cmdtrans(&mut self, val: bool) {
8825 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 8152 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
8826 } 8153 }
8827 #[doc = "Write protection for flash bank 1"] 8154 #[doc = "The CPSM treats the command as a Stop Transmission command and signals Abort to the DPSM. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues the Abort signal to the DPSM when the command is sent."]
8828 pub const fn wrpn_1(&self) -> u8 { 8155 pub const fn cmdstop(&self) -> bool {
8829 let val = (self.0 >> 16usize) & 0xff; 8156 let val = (self.0 >> 7usize) & 0x01;
8157 val != 0
8158 }
8159 #[doc = "The CPSM treats the command as a Stop Transmission command and signals Abort to the DPSM. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). If this bit is set, the CPSM issues the Abort signal to the DPSM when the command is sent."]
8160 pub fn set_cmdstop(&mut self, val: bool) {
8161 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
8162 }
8163 #[doc = "Wait for response bits. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). They are used to configure whether the CPSM is to wait for a response, and if yes, which kind of response."]
8164 pub const fn waitresp(&self) -> u8 {
8165 let val = (self.0 >> 8usize) & 0x03;
8830 val as u8 8166 val as u8
8831 } 8167 }
8832 #[doc = "Write protection for flash bank 1"] 8168 #[doc = "Wait for response bits. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). They are used to configure whether the CPSM is to wait for a response, and if yes, which kind of response."]
8833 pub fn set_wrpn_1(&mut self, val: u8) { 8169 pub fn set_waitresp(&mut self, val: u8) {
8834 self.0 = (self.0 & !(0xff << 16usize)) | (((val as u32) & 0xff) << 16usize); 8170 self.0 = (self.0 & !(0x03 << 8usize)) | (((val as u32) & 0x03) << 8usize);
8171 }
8172 #[doc = "CPSM waits for interrupt request. If this bit is set, the CPSM disables command timeout and waits for an card interrupt request (Response). If this bit is cleared in the CPSM Wait state, will cause the abort of the interrupt mode."]
8173 pub const fn waitint(&self) -> bool {
8174 let val = (self.0 >> 10usize) & 0x01;
8175 val != 0
8176 }
8177 #[doc = "CPSM waits for interrupt request. If this bit is set, the CPSM disables command timeout and waits for an card interrupt request (Response). If this bit is cleared in the CPSM Wait state, will cause the abort of the interrupt mode."]
8178 pub fn set_waitint(&mut self, val: bool) {
8179 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize);
8180 }
8181 #[doc = "CPSM Waits for end of data transfer (CmdPend internal signal) from DPSM. This bit when set, the CPSM waits for the end of data transfer trigger before it starts sending a command. WAITPEND is only taken into account when DTMODE = MMC stream data transfer, WIDBUS = 1-bit wide bus mode, DPSMACT = 1 and DTDIR = from host to card."]
8182 pub const fn waitpend(&self) -> bool {
8183 let val = (self.0 >> 11usize) & 0x01;
8184 val != 0
8185 }
8186 #[doc = "CPSM Waits for end of data transfer (CmdPend internal signal) from DPSM. This bit when set, the CPSM waits for the end of data transfer trigger before it starts sending a command. WAITPEND is only taken into account when DTMODE = MMC stream data transfer, WIDBUS = 1-bit wide bus mode, DPSMACT = 1 and DTDIR = from host to card."]
8187 pub fn set_waitpend(&mut self, val: bool) {
8188 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize);
8189 }
8190 #[doc = "Command path state machine (CPSM) Enable bit This bit is written 1 by firmware, and cleared by hardware when the CPSM enters the Idle state. If this bit is set, the CPSM is enabled. When DTEN = 1, no command will be transfered nor boot procedure will be started. CPSMEN is cleared to 0."]
8191 pub const fn cpsmen(&self) -> bool {
8192 let val = (self.0 >> 12usize) & 0x01;
8193 val != 0
8194 }
8195 #[doc = "Command path state machine (CPSM) Enable bit This bit is written 1 by firmware, and cleared by hardware when the CPSM enters the Idle state. If this bit is set, the CPSM is enabled. When DTEN = 1, no command will be transfered nor boot procedure will be started. CPSMEN is cleared to 0."]
8196 pub fn set_cpsmen(&mut self, val: bool) {
8197 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize);
8198 }
8199 #[doc = "Hold new data block transmission and reception in the DPSM. If this bit is set, the DPSM will not move from the Wait_S state to the Send state or from the Wait_R state to the Receive state."]
8200 pub const fn dthold(&self) -> bool {
8201 let val = (self.0 >> 13usize) & 0x01;
8202 val != 0
8203 }
8204 #[doc = "Hold new data block transmission and reception in the DPSM. If this bit is set, the DPSM will not move from the Wait_S state to the Send state or from the Wait_R state to the Receive state."]
8205 pub fn set_dthold(&mut self, val: bool) {
8206 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
8207 }
8208 #[doc = "Select the boot mode procedure to be used. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0)"]
8209 pub const fn bootmode(&self) -> bool {
8210 let val = (self.0 >> 14usize) & 0x01;
8211 val != 0
8212 }
8213 #[doc = "Select the boot mode procedure to be used. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0)"]
8214 pub fn set_bootmode(&mut self, val: bool) {
8215 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
8216 }
8217 #[doc = "Enable boot mode procedure."]
8218 pub const fn booten(&self) -> bool {
8219 let val = (self.0 >> 15usize) & 0x01;
8220 val != 0
8221 }
8222 #[doc = "Enable boot mode procedure."]
8223 pub fn set_booten(&mut self, val: bool) {
8224 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize);
8225 }
8226 #[doc = "The CPSM treats the command as a Suspend or Resume command and signals interrupt period start/end. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). CMDSUSPEND = 1 and CMDTRANS = 0 Suspend command, start interrupt period when response bit BS=0. CMDSUSPEND = 1 and CMDTRANS = 1 Resume command with data, end interrupt period when response bit DF=1."]
8227 pub const fn cmdsuspend(&self) -> bool {
8228 let val = (self.0 >> 16usize) & 0x01;
8229 val != 0
8230 }
8231 #[doc = "The CPSM treats the command as a Suspend or Resume command and signals interrupt period start/end. This bit can only be written by firmware when CPSM is disabled (CPSMEN = 0). CMDSUSPEND = 1 and CMDTRANS = 0 Suspend command, start interrupt period when response bit BS=0. CMDSUSPEND = 1 and CMDTRANS = 1 Resume command with data, end interrupt period when response bit DF=1."]
8232 pub fn set_cmdsuspend(&mut self, val: bool) {
8233 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
8835 } 8234 }
8836 } 8235 }
8837 impl Default for Ur5 { 8236 impl Default for Cmdr {
8838 fn default() -> Ur5 { 8237 fn default() -> Cmdr {
8839 Ur5(0) 8238 Cmdr(0)
8840 } 8239 }
8841 } 8240 }
8842 #[doc = "SYSCFG user register 14"] 8241 #[doc = "The SDMMC_STAR register is a read-only register. It contains two types of flag:Static flags (bits [29,21,11:0]): these bits remain asserted until they are cleared by writing to the SDMMC interrupt Clear register (see SDMMC_ICR)Dynamic flags (bits [20:12]): these bits change state depending on the state of the underlying logic (for example, FIFO full and empty flags are asserted and de-asserted as data while written to the FIFO)"]
8843 #[repr(transparent)] 8242 #[repr(transparent)]
8844 #[derive(Copy, Clone, Eq, PartialEq)] 8243 #[derive(Copy, Clone, Eq, PartialEq)]
8845 pub struct Ur14(pub u32); 8244 pub struct Star(pub u32);
8846 impl Ur14 { 8245 impl Star {
8847 #[doc = "D1 Stop Reset"] 8246 #[doc = "Command response received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8848 pub const fn d1stprst(&self) -> bool { 8247 pub const fn ccrcfail(&self) -> bool {
8849 let val = (self.0 >> 0usize) & 0x01; 8248 let val = (self.0 >> 0usize) & 0x01;
8850 val != 0 8249 val != 0
8851 } 8250 }
8852 #[doc = "D1 Stop Reset"] 8251 #[doc = "Command response received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8853 pub fn set_d1stprst(&mut self, val: bool) { 8252 pub fn set_ccrcfail(&mut self, val: bool) {
8854 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 8253 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
8855 } 8254 }
8255 #[doc = "Data block sent/received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8256 pub const fn dcrcfail(&self) -> bool {
8257 let val = (self.0 >> 1usize) & 0x01;
8258 val != 0
8259 }
8260 #[doc = "Data block sent/received (CRC check failed). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8261 pub fn set_dcrcfail(&mut self, val: bool) {
8262 self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize);
8263 }
8264 #[doc = "Command response timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR. The Command Timeout period has a fixed value of 64 SDMMC_CK clock periods."]
8265 pub const fn ctimeout(&self) -> bool {
8266 let val = (self.0 >> 2usize) & 0x01;
8267 val != 0
8268 }
8269 #[doc = "Command response timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR. The Command Timeout period has a fixed value of 64 SDMMC_CK clock periods."]
8270 pub fn set_ctimeout(&mut self, val: bool) {
8271 self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize);
8272 }
8273 #[doc = "Data timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8274 pub const fn dtimeout(&self) -> bool {
8275 let val = (self.0 >> 3usize) & 0x01;
8276 val != 0
8277 }
8278 #[doc = "Data timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8279 pub fn set_dtimeout(&mut self, val: bool) {
8280 self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize);
8281 }
8282 #[doc = "Transmit FIFO underrun error or IDMA read transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8283 pub const fn txunderr(&self) -> bool {
8284 let val = (self.0 >> 4usize) & 0x01;
8285 val != 0
8286 }
8287 #[doc = "Transmit FIFO underrun error or IDMA read transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8288 pub fn set_txunderr(&mut self, val: bool) {
8289 self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize);
8290 }
8291 #[doc = "Received FIFO overrun error or IDMA write transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8292 pub const fn rxoverr(&self) -> bool {
8293 let val = (self.0 >> 5usize) & 0x01;
8294 val != 0
8295 }
8296 #[doc = "Received FIFO overrun error or IDMA write transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8297 pub fn set_rxoverr(&mut self, val: bool) {
8298 self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize);
8299 }
8300 #[doc = "Command response received (CRC check passed, or no CRC). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8301 pub const fn cmdrend(&self) -> bool {
8302 let val = (self.0 >> 6usize) & 0x01;
8303 val != 0
8304 }
8305 #[doc = "Command response received (CRC check passed, or no CRC). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8306 pub fn set_cmdrend(&mut self, val: bool) {
8307 self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize);
8308 }
8309 #[doc = "Command sent (no response required). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8310 pub const fn cmdsent(&self) -> bool {
8311 let val = (self.0 >> 7usize) & 0x01;
8312 val != 0
8313 }
8314 #[doc = "Command sent (no response required). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8315 pub fn set_cmdsent(&mut self, val: bool) {
8316 self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize);
8317 }
8318 #[doc = "Data transfer ended correctly. (data counter, DATACOUNT is zero and no errors occur). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8319 pub const fn dataend(&self) -> bool {
8320 let val = (self.0 >> 8usize) & 0x01;
8321 val != 0
8322 }
8323 #[doc = "Data transfer ended correctly. (data counter, DATACOUNT is zero and no errors occur). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8324 pub fn set_dataend(&mut self, val: bool) {
8325 self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize);
8326 }
8327 #[doc = "Data transfer Hold. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8328 pub const fn dhold(&self) -> bool {
8329 let val = (self.0 >> 9usize) & 0x01;
8330 val != 0
8331 }
8332 #[doc = "Data transfer Hold. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8333 pub fn set_dhold(&mut self, val: bool) {
8334 self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize);
8335 }
8336 #[doc = "Data block sent/received. (CRC check passed) and DPSM moves to the READWAIT state. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8337 pub const fn dbckend(&self) -> bool {
8338 let val = (self.0 >> 10usize) & 0x01;
8339 val != 0
8340 }
8341 #[doc = "Data block sent/received. (CRC check passed) and DPSM moves to the READWAIT state. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8342 pub fn set_dbckend(&mut self, val: bool) {
8343 self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize);
8344 }
8345 #[doc = "Data transfer aborted by CMD12. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8346 pub const fn dabort(&self) -> bool {
8347 let val = (self.0 >> 11usize) & 0x01;
8348 val != 0
8349 }
8350 #[doc = "Data transfer aborted by CMD12. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8351 pub fn set_dabort(&mut self, val: bool) {
8352 self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize);
8353 }
8354 #[doc = "Data path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."]
8355 pub const fn dpsmact(&self) -> bool {
8356 let val = (self.0 >> 12usize) & 0x01;
8357 val != 0
8358 }
8359 #[doc = "Data path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."]
8360 pub fn set_dpsmact(&mut self, val: bool) {
8361 self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize);
8362 }
8363 #[doc = "Command path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."]
8364 pub const fn cpsmact(&self) -> bool {
8365 let val = (self.0 >> 13usize) & 0x01;
8366 val != 0
8367 }
8368 #[doc = "Command path state machine active, i.e. not in Idle state. This is a hardware status flag only, does not generate an interrupt."]
8369 pub fn set_cpsmact(&mut self, val: bool) {
8370 self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize);
8371 }
8372 #[doc = "Transmit FIFO half empty At least half the number of words can be written into the FIFO. This bit is cleared when the FIFO becomes half+1 full."]
8373 pub const fn txfifohe(&self) -> bool {
8374 let val = (self.0 >> 14usize) & 0x01;
8375 val != 0
8376 }
8377 #[doc = "Transmit FIFO half empty At least half the number of words can be written into the FIFO. This bit is cleared when the FIFO becomes half+1 full."]
8378 pub fn set_txfifohe(&mut self, val: bool) {
8379 self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize);
8380 }
8381 #[doc = "Receive FIFO half full There are at least half the number of words in the FIFO. This bit is cleared when the FIFO becomes half+1 empty."]
8382 pub const fn rxfifohf(&self) -> bool {
8383 let val = (self.0 >> 15usize) & 0x01;
8384 val != 0
8385 }
8386 #[doc = "Receive FIFO half full There are at least half the number of words in the FIFO. This bit is cleared when the FIFO becomes half+1 empty."]
8387 pub fn set_rxfifohf(&mut self, val: bool) {
8388 self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize);
8389 }
8390 #[doc = "Transmit FIFO full This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes empty."]
8391 pub const fn txfifof(&self) -> bool {
8392 let val = (self.0 >> 16usize) & 0x01;
8393 val != 0
8394 }
8395 #[doc = "Transmit FIFO full This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes empty."]
8396 pub fn set_txfifof(&mut self, val: bool) {
8397 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize);
8398 }
8399 #[doc = "Receive FIFO full This bit is cleared when one FIFO location becomes empty."]
8400 pub const fn rxfifof(&self) -> bool {
8401 let val = (self.0 >> 17usize) & 0x01;
8402 val != 0
8403 }
8404 #[doc = "Receive FIFO full This bit is cleared when one FIFO location becomes empty."]
8405 pub fn set_rxfifof(&mut self, val: bool) {
8406 self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize);
8407 }
8408 #[doc = "Transmit FIFO empty This bit is cleared when one FIFO location becomes full."]
8409 pub const fn txfifoe(&self) -> bool {
8410 let val = (self.0 >> 18usize) & 0x01;
8411 val != 0
8412 }
8413 #[doc = "Transmit FIFO empty This bit is cleared when one FIFO location becomes full."]
8414 pub fn set_txfifoe(&mut self, val: bool) {
8415 self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize);
8416 }
8417 #[doc = "Receive FIFO empty This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes full."]
8418 pub const fn rxfifoe(&self) -> bool {
8419 let val = (self.0 >> 19usize) & 0x01;
8420 val != 0
8421 }
8422 #[doc = "Receive FIFO empty This is a hardware status flag only, does not generate an interrupt. This bit is cleared when one FIFO location becomes full."]
8423 pub fn set_rxfifoe(&mut self, val: bool) {
8424 self.0 = (self.0 & !(0x01 << 19usize)) | (((val as u32) & 0x01) << 19usize);
8425 }
8426 #[doc = "Inverted value of SDMMC_D0 line (Busy), sampled at the end of a CMD response and a second time 2 SDMMC_CK cycles after the CMD response. This bit is reset to not busy when the SDMMCD0 line changes from busy to not busy. This bit does not signal busy due to data transfer. This is a hardware status flag only, it does not generate an interrupt."]
8427 pub const fn busyd0(&self) -> bool {
8428 let val = (self.0 >> 20usize) & 0x01;
8429 val != 0
8430 }
8431 #[doc = "Inverted value of SDMMC_D0 line (Busy), sampled at the end of a CMD response and a second time 2 SDMMC_CK cycles after the CMD response. This bit is reset to not busy when the SDMMCD0 line changes from busy to not busy. This bit does not signal busy due to data transfer. This is a hardware status flag only, it does not generate an interrupt."]
8432 pub fn set_busyd0(&mut self, val: bool) {
8433 self.0 = (self.0 & !(0x01 << 20usize)) | (((val as u32) & 0x01) << 20usize);
8434 }
8435 #[doc = "end of SDMMC_D0 Busy following a CMD response detected. This indicates only end of busy following a CMD response. This bit does not signal busy due to data transfer. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8436 pub const fn busyd0end(&self) -> bool {
8437 let val = (self.0 >> 21usize) & 0x01;
8438 val != 0
8439 }
8440 #[doc = "end of SDMMC_D0 Busy following a CMD response detected. This indicates only end of busy following a CMD response. This bit does not signal busy due to data transfer. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8441 pub fn set_busyd0end(&mut self, val: bool) {
8442 self.0 = (self.0 & !(0x01 << 21usize)) | (((val as u32) & 0x01) << 21usize);
8443 }
8444 #[doc = "SDIO interrupt received. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8445 pub const fn sdioit(&self) -> bool {
8446 let val = (self.0 >> 22usize) & 0x01;
8447 val != 0
8448 }
8449 #[doc = "SDIO interrupt received. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8450 pub fn set_sdioit(&mut self, val: bool) {
8451 self.0 = (self.0 & !(0x01 << 22usize)) | (((val as u32) & 0x01) << 22usize);
8452 }
8453 #[doc = "Boot acknowledgment received (boot acknowledgment check fail). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8454 pub const fn ackfail(&self) -> bool {
8455 let val = (self.0 >> 23usize) & 0x01;
8456 val != 0
8457 }
8458 #[doc = "Boot acknowledgment received (boot acknowledgment check fail). Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8459 pub fn set_ackfail(&mut self, val: bool) {
8460 self.0 = (self.0 & !(0x01 << 23usize)) | (((val as u32) & 0x01) << 23usize);
8461 }
8462 #[doc = "Boot acknowledgment timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8463 pub const fn acktimeout(&self) -> bool {
8464 let val = (self.0 >> 24usize) & 0x01;
8465 val != 0
8466 }
8467 #[doc = "Boot acknowledgment timeout. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8468 pub fn set_acktimeout(&mut self, val: bool) {
8469 self.0 = (self.0 & !(0x01 << 24usize)) | (((val as u32) & 0x01) << 24usize);
8470 }
8471 #[doc = "Voltage switch critical timing section completion. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8472 pub const fn vswend(&self) -> bool {
8473 let val = (self.0 >> 25usize) & 0x01;
8474 val != 0
8475 }
8476 #[doc = "Voltage switch critical timing section completion. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8477 pub fn set_vswend(&mut self, val: bool) {
8478 self.0 = (self.0 & !(0x01 << 25usize)) | (((val as u32) & 0x01) << 25usize);
8479 }
8480 #[doc = "SDMMC_CK stopped in Voltage switch procedure. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8481 pub const fn ckstop(&self) -> bool {
8482 let val = (self.0 >> 26usize) & 0x01;
8483 val != 0
8484 }
8485 #[doc = "SDMMC_CK stopped in Voltage switch procedure. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8486 pub fn set_ckstop(&mut self, val: bool) {
8487 self.0 = (self.0 & !(0x01 << 26usize)) | (((val as u32) & 0x01) << 26usize);
8488 }
8489 #[doc = "IDMA transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8490 pub const fn idmate(&self) -> bool {
8491 let val = (self.0 >> 27usize) & 0x01;
8492 val != 0
8493 }
8494 #[doc = "IDMA transfer error. Interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8495 pub fn set_idmate(&mut self, val: bool) {
8496 self.0 = (self.0 & !(0x01 << 27usize)) | (((val as u32) & 0x01) << 27usize);
8497 }
8498 #[doc = "IDMA buffer transfer complete. interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8499 pub const fn idmabtc(&self) -> bool {
8500 let val = (self.0 >> 28usize) & 0x01;
8501 val != 0
8502 }
8503 #[doc = "IDMA buffer transfer complete. interrupt flag is cleared by writing corresponding interrupt clear bit in SDMMC_ICR."]
8504 pub fn set_idmabtc(&mut self, val: bool) {
8505 self.0 = (self.0 & !(0x01 << 28usize)) | (((val as u32) & 0x01) << 28usize);
8506 }
8856 } 8507 }
8857 impl Default for Ur14 { 8508 impl Default for Star {
8858 fn default() -> Ur14 { 8509 fn default() -> Star {
8859 Ur14(0) 8510 Star(0)
8860 } 8511 }
8861 } 8512 }
8862 #[doc = "SYSCFG power control register"] 8513 #[doc = "The receive and transmit FIFOs can be only read or written as word (32-bit) wide registers. The FIFOs contain 16 entries on sequential addresses. This allows the CPU to use its load and store multiple operands to read from/write to the FIFO.When accessing SDMMC_FIFOR with half word or byte access an AHB bus fault is generated."]
8863 #[repr(transparent)] 8514 #[repr(transparent)]
8864 #[derive(Copy, Clone, Eq, PartialEq)] 8515 #[derive(Copy, Clone, Eq, PartialEq)]
8865 pub struct Pwrcr(pub u32); 8516 pub struct Fifor(pub u32);
8866 impl Pwrcr { 8517 impl Fifor {
8867 #[doc = "Overdrive enable"] 8518 #[doc = "Receive and transmit FIFO data This register can only be read or written by firmware when the DPSM is active (DPSMACT=1). The FIFO data occupies 16 entries of 32-bit words."]
8868 pub const fn oden(&self) -> u8 { 8519 pub const fn fifodata(&self) -> u32 {
8869 let val = (self.0 >> 0usize) & 0x0f; 8520 let val = (self.0 >> 0usize) & 0xffff_ffff;
8870 val as u8 8521 val as u32
8871 } 8522 }
8872 #[doc = "Overdrive enable"] 8523 #[doc = "Receive and transmit FIFO data This register can only be read or written by firmware when the DPSM is active (DPSMACT=1). The FIFO data occupies 16 entries of 32-bit words."]
8873 pub fn set_oden(&mut self, val: u8) { 8524 pub fn set_fifodata(&mut self, val: u32) {
8874 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); 8525 self.0 =
8526 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
8875 } 8527 }
8876 } 8528 }
8877 impl Default for Pwrcr { 8529 impl Default for Fifor {
8878 fn default() -> Pwrcr { 8530 fn default() -> Fifor {
8879 Pwrcr(0) 8531 Fifor(0)
8880 } 8532 }
8881 } 8533 }
8882 #[doc = "SYSCFG package register"] 8534 #[doc = "SDMMC command response register"]
8883 #[repr(transparent)] 8535 #[repr(transparent)]
8884 #[derive(Copy, Clone, Eq, PartialEq)] 8536 #[derive(Copy, Clone, Eq, PartialEq)]
8885 pub struct Pkgr(pub u32); 8537 pub struct Respcmdr(pub u32);
8886 impl Pkgr { 8538 impl Respcmdr {
8887 #[doc = "Package"] 8539 #[doc = "Response command index"]
8888 pub const fn pkg(&self) -> u8 { 8540 pub const fn respcmd(&self) -> u8 {
8889 let val = (self.0 >> 0usize) & 0x0f; 8541 let val = (self.0 >> 0usize) & 0x3f;
8890 val as u8 8542 val as u8
8891 } 8543 }
8892 #[doc = "Package"] 8544 #[doc = "Response command index"]
8893 pub fn set_pkg(&mut self, val: u8) { 8545 pub fn set_respcmd(&mut self, val: u8) {
8894 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); 8546 self.0 = (self.0 & !(0x3f << 0usize)) | (((val as u32) & 0x3f) << 0usize);
8895 } 8547 }
8896 } 8548 }
8897 impl Default for Pkgr { 8549 impl Default for Respcmdr {
8898 fn default() -> Pkgr { 8550 fn default() -> Respcmdr {
8899 Pkgr(0) 8551 Respcmdr(0)
8900 } 8552 }
8901 } 8553 }
8902 #[doc = "SYSCFG user register 3"] 8554 #[doc = "The SDMMC_IDMABASE0R register contains the memory buffer base address in single buffer configuration and the buffer 0 base address in double buffer configuration."]
8903 #[repr(transparent)] 8555 #[repr(transparent)]
8904 #[derive(Copy, Clone, Eq, PartialEq)] 8556 #[derive(Copy, Clone, Eq, PartialEq)]
8905 pub struct Ur3(pub u32); 8557 pub struct Idmabase0r(pub u32);
8906 impl Ur3 { 8558 impl Idmabase0r {
8907 #[doc = "Boot Address 1"] 8559 #[doc = "Buffer 0 memory base address bits [31:2], shall be word aligned (bit [1:0]
8908 pub const fn boot_add1(&self) -> u16 { 8560are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 0 is inactive (IDMABACT = 1)."]
8909 let val = (self.0 >> 16usize) & 0xffff; 8561 pub const fn idmabase0(&self) -> u32 {
8910 val as u16 8562 let val = (self.0 >> 0usize) & 0xffff_ffff;
8563 val as u32
8911 } 8564 }
8912 #[doc = "Boot Address 1"] 8565 #[doc = "Buffer 0 memory base address bits [31:2], shall be word aligned (bit [1:0]
8913 pub fn set_boot_add1(&mut self, val: u16) { 8566are always 0 and read only). This register can be written by firmware when DPSM is inactive (DPSMACT = 0), and can dynamically be written by firmware when DPSM active (DPSMACT = 1) and memory buffer 0 is inactive (IDMABACT = 1)."]
8914 self.0 = (self.0 & !(0xffff << 16usize)) | (((val as u32) & 0xffff) << 16usize); 8567 pub fn set_idmabase0(&mut self, val: u32) {
8568 self.0 =
8569 (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
8915 } 8570 }
8916 } 8571 }
8917 impl Default for Ur3 { 8572 impl Default for Idmabase0r {
8918 fn default() -> Ur3 { 8573 fn default() -> Idmabase0r {
8919 Ur3(0) 8574 Idmabase0r(0)
8920 } 8575 }
8921 } 8576 }
8922 #[doc = "SYSCFG user register 11"] 8577 }
8578}
8579pub mod gpio_v1 {
8580 use crate::generic::*;
8581 #[doc = "General purpose I/O"]
8582 #[derive(Copy, Clone)]
8583 pub struct Gpio(pub *mut u8);
8584 unsafe impl Send for Gpio {}
8585 unsafe impl Sync for Gpio {}
8586 impl Gpio {
8587 #[doc = "Port configuration register low (GPIOn_CRL)"]
8588 pub fn cr(self, n: usize) -> Reg<regs::Cr, RW> {
8589 assert!(n < 2usize);
8590 unsafe { Reg::from_ptr(self.0.add(0usize + n * 4usize)) }
8591 }
8592 #[doc = "Port input data register (GPIOn_IDR)"]
8593 pub fn idr(self) -> Reg<regs::Idr, R> {
8594 unsafe { Reg::from_ptr(self.0.add(8usize)) }
8595 }
8596 #[doc = "Port output data register (GPIOn_ODR)"]
8597 pub fn odr(self) -> Reg<regs::Odr, RW> {
8598 unsafe { Reg::from_ptr(self.0.add(12usize)) }
8599 }
8600 #[doc = "Port bit set/reset register (GPIOn_BSRR)"]
8601 pub fn bsrr(self) -> Reg<regs::Bsrr, W> {
8602 unsafe { Reg::from_ptr(self.0.add(16usize)) }
8603 }
8604 #[doc = "Port bit reset register (GPIOn_BRR)"]
8605 pub fn brr(self) -> Reg<regs::Brr, W> {
8606 unsafe { Reg::from_ptr(self.0.add(20usize)) }
8607 }
8608 #[doc = "Port configuration lock register"]
8609 pub fn lckr(self) -> Reg<regs::Lckr, RW> {
8610 unsafe { Reg::from_ptr(self.0.add(24usize)) }
8611 }
8612 }
8613 pub mod vals {
8614 use crate::generic::*;
8615 #[repr(transparent)]
8616 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8617 pub struct Cnf(pub u8);
8618 impl Cnf {
8619 #[doc = "Analog mode / Push-Pull mode"]
8620 pub const PUSHPULL: Self = Self(0);
8621 #[doc = "Floating input (reset state) / Open Drain-Mode"]
8622 pub const OPENDRAIN: Self = Self(0x01);
8623 #[doc = "Input with pull-up/pull-down / Alternate Function Push-Pull Mode"]
8624 pub const ALTPUSHPULL: Self = Self(0x02);
8625 #[doc = "Alternate Function Open-Drain Mode"]
8626 pub const ALTOPENDRAIN: Self = Self(0x03);
8627 }
8628 #[repr(transparent)]
8629 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8630 pub struct Mode(pub u8);
8631 impl Mode {
8632 #[doc = "Input mode (reset state)"]
8633 pub const INPUT: Self = Self(0);
8634 #[doc = "Output mode 10 MHz"]
8635 pub const OUTPUT: Self = Self(0x01);
8636 #[doc = "Output mode 2 MHz"]
8637 pub const OUTPUT2: Self = Self(0x02);
8638 #[doc = "Output mode 50 MHz"]
8639 pub const OUTPUT50: Self = Self(0x03);
8640 }
8641 #[repr(transparent)]
8642 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8643 pub struct Lckk(pub u8);
8644 impl Lckk {
8645 #[doc = "Port configuration lock key not active"]
8646 pub const NOTACTIVE: Self = Self(0);
8647 #[doc = "Port configuration lock key active"]
8648 pub const ACTIVE: Self = Self(0x01);
8649 }
8650 #[repr(transparent)]
8651 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8652 pub struct Lck(pub u8);
8653 impl Lck {
8654 #[doc = "Port configuration not locked"]
8655 pub const UNLOCKED: Self = Self(0);
8656 #[doc = "Port configuration locked"]
8657 pub const LOCKED: Self = Self(0x01);
8658 }
8659 #[repr(transparent)]
8660 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8661 pub struct Idr(pub u8);
8662 impl Idr {
8663 #[doc = "Input is logic low"]
8664 pub const LOW: Self = Self(0);
8665 #[doc = "Input is logic high"]
8666 pub const HIGH: Self = Self(0x01);
8667 }
8668 #[repr(transparent)]
8669 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8670 pub struct Bsw(pub u8);
8671 impl Bsw {
8672 #[doc = "No action on the corresponding ODx bit"]
8673 pub const NOACTION: Self = Self(0);
8674 #[doc = "Sets the corresponding ODRx bit"]
8675 pub const SET: Self = Self(0x01);
8676 }
8677 #[repr(transparent)]
8678 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8679 pub struct Brw(pub u8);
8680 impl Brw {
8681 #[doc = "No action on the corresponding ODx bit"]
8682 pub const NOACTION: Self = Self(0);
8683 #[doc = "Reset the ODx bit"]
8684 pub const RESET: Self = Self(0x01);
8685 }
8686 #[repr(transparent)]
8687 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
8688 pub struct Odr(pub u8);
8689 impl Odr {
8690 #[doc = "Set output to logic low"]
8691 pub const LOW: Self = Self(0);
8692 #[doc = "Set output to logic high"]
8693 pub const HIGH: Self = Self(0x01);
8694 }
8695 }
8696 pub mod regs {
8697 use crate::generic::*;
8698 #[doc = "Port bit set/reset register (GPIOn_BSRR)"]
8923 #[repr(transparent)] 8699 #[repr(transparent)]
8924 #[derive(Copy, Clone, Eq, PartialEq)] 8700 #[derive(Copy, Clone, Eq, PartialEq)]
8925 pub struct Ur11(pub u32); 8701 pub struct Bsrr(pub u32);
8926 impl Ur11 { 8702 impl Bsrr {
8927 #[doc = "Secured area end address for bank 2"] 8703 #[doc = "Set bit"]
8928 pub const fn sa_end_2(&self) -> u16 { 8704 pub fn bs(&self, n: usize) -> bool {
8929 let val = (self.0 >> 0usize) & 0x0fff; 8705 assert!(n < 16usize);
8930 val as u16 8706 let offs = 0usize + n * 1usize;
8707 let val = (self.0 >> offs) & 0x01;
8708 val != 0
8931 } 8709 }
8932 #[doc = "Secured area end address for bank 2"] 8710 #[doc = "Set bit"]
8933 pub fn set_sa_end_2(&mut self, val: u16) { 8711 pub fn set_bs(&mut self, n: usize, val: bool) {
8934 self.0 = (self.0 & !(0x0fff << 0usize)) | (((val as u32) & 0x0fff) << 0usize); 8712 assert!(n < 16usize);
8713 let offs = 0usize + n * 1usize;
8714 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
8935 } 8715 }
8936 #[doc = "Independent Watchdog 1 mode"] 8716 #[doc = "Reset bit"]
8937 pub const fn iwdg1m(&self) -> bool { 8717 pub fn br(&self, n: usize) -> bool {
8938 let val = (self.0 >> 16usize) & 0x01; 8718 assert!(n < 16usize);
8719 let offs = 16usize + n * 1usize;
8720 let val = (self.0 >> offs) & 0x01;
8939 val != 0 8721 val != 0
8940 } 8722 }
8941 #[doc = "Independent Watchdog 1 mode"] 8723 #[doc = "Reset bit"]
8942 pub fn set_iwdg1m(&mut self, val: bool) { 8724 pub fn set_br(&mut self, n: usize, val: bool) {
8943 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 8725 assert!(n < 16usize);
8726 let offs = 16usize + n * 1usize;
8727 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
8944 } 8728 }
8945 } 8729 }
8946 impl Default for Ur11 { 8730 impl Default for Bsrr {
8947 fn default() -> Ur11 { 8731 fn default() -> Bsrr {
8948 Ur11(0) 8732 Bsrr(0)
8949 } 8733 }
8950 } 8734 }
8951 #[doc = "SYSCFG compensation cell code register"] 8735 #[doc = "Port configuration register (GPIOn_CRx)"]
8952 #[repr(transparent)] 8736 #[repr(transparent)]
8953 #[derive(Copy, Clone, Eq, PartialEq)] 8737 #[derive(Copy, Clone, Eq, PartialEq)]
8954 pub struct Cccr(pub u32); 8738 pub struct Cr(pub u32);
8955 impl Cccr { 8739 impl Cr {
8956 #[doc = "NMOS compensation code"] 8740 #[doc = "Port n mode bits"]
8957 pub const fn ncc(&self) -> u8 { 8741 pub fn mode(&self, n: usize) -> super::vals::Mode {
8958 let val = (self.0 >> 0usize) & 0x0f; 8742 assert!(n < 8usize);
8959 val as u8 8743 let offs = 0usize + n * 4usize;
8744 let val = (self.0 >> offs) & 0x03;
8745 super::vals::Mode(val as u8)
8960 } 8746 }
8961 #[doc = "NMOS compensation code"] 8747 #[doc = "Port n mode bits"]
8962 pub fn set_ncc(&mut self, val: u8) { 8748 pub fn set_mode(&mut self, n: usize, val: super::vals::Mode) {
8963 self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); 8749 assert!(n < 8usize);
8750 let offs = 0usize + n * 4usize;
8751 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
8964 } 8752 }
8965 #[doc = "PMOS compensation code"] 8753 #[doc = "Port n configuration bits"]
8966 pub const fn pcc(&self) -> u8 { 8754 pub fn cnf(&self, n: usize) -> super::vals::Cnf {
8967 let val = (self.0 >> 4usize) & 0x0f; 8755 assert!(n < 8usize);
8968 val as u8 8756 let offs = 2usize + n * 4usize;
8757 let val = (self.0 >> offs) & 0x03;
8758 super::vals::Cnf(val as u8)
8969 } 8759 }
8970 #[doc = "PMOS compensation code"] 8760 #[doc = "Port n configuration bits"]
8971 pub fn set_pcc(&mut self, val: u8) { 8761 pub fn set_cnf(&mut self, n: usize, val: super::vals::Cnf) {
8972 self.0 = (self.0 & !(0x0f << 4usize)) | (((val as u32) & 0x0f) << 4usize); 8762 assert!(n < 8usize);
8763 let offs = 2usize + n * 4usize;
8764 self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs);
8973 } 8765 }
8974 } 8766 }
8975 impl Default for Cccr { 8767 impl Default for Cr {
8976 fn default() -> Cccr { 8768 fn default() -> Cr {
8977 Cccr(0) 8769 Cr(0)
8978 } 8770 }
8979 } 8771 }
8980 #[doc = "SYSCFG user register 15"] 8772 #[doc = "Port input data register (GPIOn_IDR)"]
8981 #[repr(transparent)] 8773 #[repr(transparent)]
8982 #[derive(Copy, Clone, Eq, PartialEq)] 8774 #[derive(Copy, Clone, Eq, PartialEq)]
8983 pub struct Ur15(pub u32); 8775 pub struct Idr(pub u32);
8984 impl Ur15 { 8776 impl Idr {
8985 #[doc = "Freeze independent watchdog in Standby mode"] 8777 #[doc = "Port input data"]
8986 pub const fn fziwdgstb(&self) -> bool { 8778 pub fn idr(&self, n: usize) -> super::vals::Idr {
8987 let val = (self.0 >> 16usize) & 0x01; 8779 assert!(n < 16usize);
8988 val != 0 8780 let offs = 0usize + n * 1usize;
8781 let val = (self.0 >> offs) & 0x01;
8782 super::vals::Idr(val as u8)
8989 } 8783 }
8990 #[doc = "Freeze independent watchdog in Standby mode"] 8784 #[doc = "Port input data"]
8991 pub fn set_fziwdgstb(&mut self, val: bool) { 8785 pub fn set_idr(&mut self, n: usize, val: super::vals::Idr) {
8992 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 8786 assert!(n < 16usize);
8787 let offs = 0usize + n * 1usize;
8788 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
8993 } 8789 }
8994 } 8790 }
8995 impl Default for Ur15 { 8791 impl Default for Idr {
8996 fn default() -> Ur15 { 8792 fn default() -> Idr {
8997 Ur15(0) 8793 Idr(0)
8998 } 8794 }
8999 } 8795 }
9000 #[doc = "SYSCFG user register 8"] 8796 #[doc = "Port output data register (GPIOn_ODR)"]
9001 #[repr(transparent)] 8797 #[repr(transparent)]
9002 #[derive(Copy, Clone, Eq, PartialEq)] 8798 #[derive(Copy, Clone, Eq, PartialEq)]
9003 pub struct Ur8(pub u32); 8799 pub struct Odr(pub u32);
9004 impl Ur8 { 8800 impl Odr {
9005 #[doc = "Mass erase protected area disabled for bank 2"] 8801 #[doc = "Port output data"]
9006 pub const fn mepad_2(&self) -> bool { 8802 pub fn odr(&self, n: usize) -> super::vals::Odr {
9007 let val = (self.0 >> 0usize) & 0x01; 8803 assert!(n < 16usize);
9008 val != 0 8804 let offs = 0usize + n * 1usize;
8805 let val = (self.0 >> offs) & 0x01;
8806 super::vals::Odr(val as u8)
9009 } 8807 }
9010 #[doc = "Mass erase protected area disabled for bank 2"] 8808 #[doc = "Port output data"]
9011 pub fn set_mepad_2(&mut self, val: bool) { 8809 pub fn set_odr(&mut self, n: usize, val: super::vals::Odr) {
9012 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 8810 assert!(n < 16usize);
8811 let offs = 0usize + n * 1usize;
8812 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
9013 } 8813 }
9014 #[doc = "Mass erase secured area disabled for bank 2"] 8814 }
9015 pub const fn mesad_2(&self) -> bool { 8815 impl Default for Odr {
8816 fn default() -> Odr {
8817 Odr(0)
8818 }
8819 }
8820 #[doc = "Port configuration lock register"]
8821 #[repr(transparent)]
8822 #[derive(Copy, Clone, Eq, PartialEq)]
8823 pub struct Lckr(pub u32);
8824 impl Lckr {
8825 #[doc = "Port A Lock bit"]
8826 pub fn lck(&self, n: usize) -> super::vals::Lck {
8827 assert!(n < 16usize);
8828 let offs = 0usize + n * 1usize;
8829 let val = (self.0 >> offs) & 0x01;
8830 super::vals::Lck(val as u8)
8831 }
8832 #[doc = "Port A Lock bit"]
8833 pub fn set_lck(&mut self, n: usize, val: super::vals::Lck) {
8834 assert!(n < 16usize);
8835 let offs = 0usize + n * 1usize;
8836 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
8837 }
8838 #[doc = "Lock key"]
8839 pub const fn lckk(&self) -> super::vals::Lckk {
9016 let val = (self.0 >> 16usize) & 0x01; 8840 let val = (self.0 >> 16usize) & 0x01;
8841 super::vals::Lckk(val as u8)
8842 }
8843 #[doc = "Lock key"]
8844 pub fn set_lckk(&mut self, val: super::vals::Lckk) {
8845 self.0 = (self.0 & !(0x01 << 16usize)) | (((val.0 as u32) & 0x01) << 16usize);
8846 }
8847 }
8848 impl Default for Lckr {
8849 fn default() -> Lckr {
8850 Lckr(0)
8851 }
8852 }
8853 #[doc = "Port bit reset register (GPIOn_BRR)"]
8854 #[repr(transparent)]
8855 #[derive(Copy, Clone, Eq, PartialEq)]
8856 pub struct Brr(pub u32);
8857 impl Brr {
8858 #[doc = "Reset bit"]
8859 pub fn br(&self, n: usize) -> bool {
8860 assert!(n < 16usize);
8861 let offs = 0usize + n * 1usize;
8862 let val = (self.0 >> offs) & 0x01;
9017 val != 0 8863 val != 0
9018 } 8864 }
9019 #[doc = "Mass erase secured area disabled for bank 2"] 8865 #[doc = "Reset bit"]
9020 pub fn set_mesad_2(&mut self, val: bool) { 8866 pub fn set_br(&mut self, n: usize, val: bool) {
9021 self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); 8867 assert!(n < 16usize);
8868 let offs = 0usize + n * 1usize;
8869 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
9022 } 8870 }
9023 } 8871 }
9024 impl Default for Ur8 { 8872 impl Default for Brr {
9025 fn default() -> Ur8 { 8873 fn default() -> Brr {
9026 Ur8(0) 8874 Brr(0)
9027 } 8875 }
9028 } 8876 }
9029 #[doc = "external interrupt configuration register 2"] 8877 }
8878}
8879pub mod exti_v1 {
8880 use crate::generic::*;
8881 #[doc = "External interrupt/event controller"]
8882 #[derive(Copy, Clone)]
8883 pub struct Exti(pub *mut u8);
8884 unsafe impl Send for Exti {}
8885 unsafe impl Sync for Exti {}
8886 impl Exti {
8887 #[doc = "Interrupt mask register (EXTI_IMR)"]
8888 pub fn imr(self) -> Reg<regs::Imr, RW> {
8889 unsafe { Reg::from_ptr(self.0.add(0usize)) }
8890 }
8891 #[doc = "Event mask register (EXTI_EMR)"]
8892 pub fn emr(self) -> Reg<regs::Emr, RW> {
8893 unsafe { Reg::from_ptr(self.0.add(4usize)) }
8894 }
8895 #[doc = "Rising Trigger selection register (EXTI_RTSR)"]
8896 pub fn rtsr(self) -> Reg<regs::Rtsr, RW> {
8897 unsafe { Reg::from_ptr(self.0.add(8usize)) }
8898 }
8899 #[doc = "Falling Trigger selection register (EXTI_FTSR)"]
8900 pub fn ftsr(self) -> Reg<regs::Ftsr, RW> {
8901 unsafe { Reg::from_ptr(self.0.add(12usize)) }
8902 }
8903 #[doc = "Software interrupt event register (EXTI_SWIER)"]
8904 pub fn swier(self) -> Reg<regs::Swier, RW> {
8905 unsafe { Reg::from_ptr(self.0.add(16usize)) }
8906 }
8907 #[doc = "Pending register (EXTI_PR)"]
8908 pub fn pr(self) -> Reg<regs::Pr, RW> {
8909 unsafe { Reg::from_ptr(self.0.add(20usize)) }
8910 }
8911 }
8912 pub mod regs {
8913 use crate::generic::*;
8914 #[doc = "Interrupt mask register (EXTI_IMR)"]
9030 #[repr(transparent)] 8915 #[repr(transparent)]
9031 #[derive(Copy, Clone, Eq, PartialEq)] 8916 #[derive(Copy, Clone, Eq, PartialEq)]
9032 pub struct Exticr(pub u32); 8917 pub struct Imr(pub u32);
9033 impl Exticr { 8918 impl Imr {
9034 #[doc = "EXTI x configuration (x = 4 to 7)"] 8919 #[doc = "Interrupt Mask on line 0"]
9035 pub fn exti(&self, n: usize) -> u8 { 8920 pub fn mr(&self, n: usize) -> super::vals::Mr {
9036 assert!(n < 4usize); 8921 assert!(n < 23usize);
9037 let offs = 0usize + n * 4usize; 8922 let offs = 0usize + n * 1usize;
9038 let val = (self.0 >> offs) & 0x0f; 8923 let val = (self.0 >> offs) & 0x01;
9039 val as u8 8924 super::vals::Mr(val as u8)
9040 } 8925 }
9041 #[doc = "EXTI x configuration (x = 4 to 7)"] 8926 #[doc = "Interrupt Mask on line 0"]
9042 pub fn set_exti(&mut self, n: usize, val: u8) { 8927 pub fn set_mr(&mut self, n: usize, val: super::vals::Mr) {
9043 assert!(n < 4usize); 8928 assert!(n < 23usize);
9044 let offs = 0usize + n * 4usize; 8929 let offs = 0usize + n * 1usize;
9045 self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs); 8930 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
9046 } 8931 }
9047 } 8932 }
9048 impl Default for Exticr { 8933 impl Default for Imr {
9049 fn default() -> Exticr { 8934 fn default() -> Imr {
9050 Exticr(0) 8935 Imr(0)
9051 } 8936 }
9052 } 8937 }
9053 #[doc = "SYSCFG user register 2"] 8938 #[doc = "Software interrupt event register (EXTI_SWIER)"]
9054 #[repr(transparent)] 8939 #[repr(transparent)]
9055 #[derive(Copy, Clone, Eq, PartialEq)] 8940 #[derive(Copy, Clone, Eq, PartialEq)]
9056 pub struct Ur2(pub u32); 8941 pub struct Swier(pub u32);
9057 impl Ur2 { 8942 impl Swier {
9058 #[doc = "BOR_LVL Brownout Reset Threshold Level"] 8943 #[doc = "Software Interrupt on line 0"]
9059 pub const fn borh(&self) -> u8 { 8944 pub fn swier(&self, n: usize) -> bool {
9060 let val = (self.0 >> 0usize) & 0x03; 8945 assert!(n < 23usize);
9061 val as u8 8946 let offs = 0usize + n * 1usize;
8947 let val = (self.0 >> offs) & 0x01;
8948 val != 0
9062 } 8949 }
9063 #[doc = "BOR_LVL Brownout Reset Threshold Level"] 8950 #[doc = "Software Interrupt on line 0"]
9064 pub fn set_borh(&mut self, val: u8) { 8951 pub fn set_swier(&mut self, n: usize, val: bool) {
9065 self.0 = (self.0 & !(0x03 << 0usize)) | (((val as u32) & 0x03) << 0usize); 8952 assert!(n < 23usize);
8953 let offs = 0usize + n * 1usize;
8954 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
9066 } 8955 }
9067 #[doc = "Boot Address 0"] 8956 }
9068 pub const fn boot_add0(&self) -> u16 { 8957 impl Default for Swier {
9069 let val = (self.0 >> 16usize) & 0xffff; 8958 fn default() -> Swier {
9070 val as u16 8959 Swier(0)
9071 } 8960 }
9072 #[doc = "Boot Address 0"] 8961 }
9073 pub fn set_boot_add0(&mut self, val: u16) { 8962 #[doc = "Falling Trigger selection register (EXTI_FTSR)"]
9074 self.0 = (self.0 & !(0xffff << 16usize)) | (((val as u32) & 0xffff) << 16usize); 8963 #[repr(transparent)]
8964 #[derive(Copy, Clone, Eq, PartialEq)]
8965 pub struct Ftsr(pub u32);
8966 impl Ftsr {
8967 #[doc = "Falling trigger event configuration of line 0"]
8968 pub fn tr(&self, n: usize) -> super::vals::Tr {
8969 assert!(n < 23usize);
8970 let offs = 0usize + n * 1usize;
8971 let val = (self.0 >> offs) & 0x01;
8972 super::vals::Tr(val as u8)
8973 }
8974 #[doc = "Falling trigger event configuration of line 0"]
8975 pub fn set_tr(&mut self, n: usize, val: super::vals::Tr) {
8976 assert!(n < 23usize);
8977 let offs = 0usize + n * 1usize;
8978 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
9075 } 8979 }
9076 } 8980 }
9077 impl Default for Ur2 { 8981 impl Default for Ftsr {
9078 fn default() -> Ur2 { 8982 fn default() -> Ftsr {
9079 Ur2(0) 8983 Ftsr(0)
9080 } 8984 }
9081 } 8985 }
9082 #[doc = "SYSCFG user register 17"] 8986 #[doc = "Rising Trigger selection register (EXTI_RTSR)"]
9083 #[repr(transparent)] 8987 #[repr(transparent)]
9084 #[derive(Copy, Clone, Eq, PartialEq)] 8988 #[derive(Copy, Clone, Eq, PartialEq)]
9085 pub struct Ur17(pub u32); 8989 pub struct Rtsr(pub u32);
9086 impl Ur17 { 8990 impl Rtsr {
9087 #[doc = "I/O high speed / low voltage"] 8991 #[doc = "Rising trigger event configuration of line 0"]
9088 pub const fn io_hslv(&self) -> bool { 8992 pub fn tr(&self, n: usize) -> super::vals::Tr {
9089 let val = (self.0 >> 0usize) & 0x01; 8993 assert!(n < 23usize);
8994 let offs = 0usize + n * 1usize;
8995 let val = (self.0 >> offs) & 0x01;
8996 super::vals::Tr(val as u8)
8997 }
8998 #[doc = "Rising trigger event configuration of line 0"]
8999 pub fn set_tr(&mut self, n: usize, val: super::vals::Tr) {
9000 assert!(n < 23usize);
9001 let offs = 0usize + n * 1usize;
9002 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
9003 }
9004 }
9005 impl Default for Rtsr {
9006 fn default() -> Rtsr {
9007 Rtsr(0)
9008 }
9009 }
9010 #[doc = "Pending register (EXTI_PR)"]
9011 #[repr(transparent)]
9012 #[derive(Copy, Clone, Eq, PartialEq)]
9013 pub struct Pr(pub u32);
9014 impl Pr {
9015 #[doc = "Pending bit 0"]
9016 pub fn pr(&self, n: usize) -> bool {
9017 assert!(n < 23usize);
9018 let offs = 0usize + n * 1usize;
9019 let val = (self.0 >> offs) & 0x01;
9090 val != 0 9020 val != 0
9091 } 9021 }
9092 #[doc = "I/O high speed / low voltage"] 9022 #[doc = "Pending bit 0"]
9093 pub fn set_io_hslv(&mut self, val: bool) { 9023 pub fn set_pr(&mut self, n: usize, val: bool) {
9094 self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); 9024 assert!(n < 23usize);
9025 let offs = 0usize + n * 1usize;
9026 self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs);
9095 } 9027 }
9096 } 9028 }
9097 impl Default for Ur17 { 9029 impl Default for Pr {
9098 fn default() -> Ur17 { 9030 fn default() -> Pr {
9099 Ur17(0) 9031 Pr(0)
9100 } 9032 }
9101 } 9033 }
9034 #[doc = "Event mask register (EXTI_EMR)"]
9035 #[repr(transparent)]
9036 #[derive(Copy, Clone, Eq, PartialEq)]
9037 pub struct Emr(pub u32);
9038 impl Emr {
9039 #[doc = "Event Mask on line 0"]
9040 pub fn mr(&self, n: usize) -> super::vals::Mr {
9041 assert!(n < 23usize);
9042 let offs = 0usize + n * 1usize;
9043 let val = (self.0 >> offs) & 0x01;
9044 super::vals::Mr(val as u8)
9045 }
9046 #[doc = "Event Mask on line 0"]
9047 pub fn set_mr(&mut self, n: usize, val: super::vals::Mr) {
9048 assert!(n < 23usize);
9049 let offs = 0usize + n * 1usize;
9050 self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs);
9051 }
9052 }
9053 impl Default for Emr {
9054 fn default() -> Emr {
9055 Emr(0)
9056 }
9057 }
9058 }
9059 pub mod vals {
9060 use crate::generic::*;
9061 #[repr(transparent)]
9062 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
9063 pub struct Prw(pub u8);
9064 impl Prw {
9065 #[doc = "Clears pending bit"]
9066 pub const CLEAR: Self = Self(0x01);
9067 }
9068 #[repr(transparent)]
9069 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
9070 pub struct Swierw(pub u8);
9071 impl Swierw {
9072 #[doc = "Generates an interrupt request"]
9073 pub const PEND: Self = Self(0x01);
9074 }
9075 #[repr(transparent)]
9076 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
9077 pub struct Tr(pub u8);
9078 impl Tr {
9079 #[doc = "Falling edge trigger is disabled"]
9080 pub const DISABLED: Self = Self(0);
9081 #[doc = "Falling edge trigger is enabled"]
9082 pub const ENABLED: Self = Self(0x01);
9083 }
9084 #[repr(transparent)]
9085 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
9086 pub struct Prr(pub u8);
9087 impl Prr {
9088 #[doc = "No trigger request occurred"]
9089 pub const NOTPENDING: Self = Self(0);
9090 #[doc = "Selected trigger request occurred"]
9091 pub const PENDING: Self = Self(0x01);
9092 }
9093 #[repr(transparent)]
9094 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
9095 pub struct Mr(pub u8);
9096 impl Mr {
9097 #[doc = "Interrupt request line is masked"]
9098 pub const MASKED: Self = Self(0);
9099 #[doc = "Interrupt request line is unmasked"]
9100 pub const UNMASKED: Self = Self(0x01);
9101 }
9102 } 9102 }
9103} 9103}
diff --git a/embassy-stm32/src/pac/stm32f401cb.rs b/embassy-stm32/src/pac/stm32f401cb.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401cb.rs
+++ b/embassy-stm32/src/pac/stm32f401cb.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401cc.rs b/embassy-stm32/src/pac/stm32f401cc.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401cc.rs
+++ b/embassy-stm32/src/pac/stm32f401cc.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401cd.rs b/embassy-stm32/src/pac/stm32f401cd.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401cd.rs
+++ b/embassy-stm32/src/pac/stm32f401cd.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401ce.rs b/embassy-stm32/src/pac/stm32f401ce.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401ce.rs
+++ b/embassy-stm32/src/pac/stm32f401ce.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401rb.rs b/embassy-stm32/src/pac/stm32f401rb.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401rb.rs
+++ b/embassy-stm32/src/pac/stm32f401rb.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401rc.rs b/embassy-stm32/src/pac/stm32f401rc.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401rc.rs
+++ b/embassy-stm32/src/pac/stm32f401rc.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401rd.rs b/embassy-stm32/src/pac/stm32f401rd.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401rd.rs
+++ b/embassy-stm32/src/pac/stm32f401rd.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401re.rs b/embassy-stm32/src/pac/stm32f401re.rs
index 13e60e2e3..34fa05d86 100644
--- a/embassy-stm32/src/pac/stm32f401re.rs
+++ b/embassy-stm32/src/pac/stm32f401re.rs
@@ -128,30 +128,30 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 155pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 156pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
157impl_usart!(USART1); 157impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401vb.rs b/embassy-stm32/src/pac/stm32f401vb.rs
index 91263ba49..cc0e9bd85 100644
--- a/embassy-stm32/src/pac/stm32f401vb.rs
+++ b/embassy-stm32/src/pac/stm32f401vb.rs
@@ -128,38 +128,38 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
156impl_spi!(SPI4, APB2); 156impl_spi!(SPI4, APB2);
157impl_spi_pin!(SPI4, Sck, PE12, 5); 157impl_spi_pin!(SPI4, SckPin, PE12, 5);
158impl_spi_pin!(SPI4, Miso, PE13, 5); 158impl_spi_pin!(SPI4, MisoPin, PE13, 5);
159impl_spi_pin!(SPI4, Mosi, PE14, 5); 159impl_spi_pin!(SPI4, MosiPin, PE14, 5);
160impl_spi_pin!(SPI4, Sck, PE2, 5); 160impl_spi_pin!(SPI4, SckPin, PE2, 5);
161impl_spi_pin!(SPI4, Miso, PE5, 5); 161impl_spi_pin!(SPI4, MisoPin, PE5, 5);
162impl_spi_pin!(SPI4, Mosi, PE6, 5); 162impl_spi_pin!(SPI4, MosiPin, PE6, 5);
163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
165impl_usart!(USART1); 165impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401vc.rs b/embassy-stm32/src/pac/stm32f401vc.rs
index 91263ba49..cc0e9bd85 100644
--- a/embassy-stm32/src/pac/stm32f401vc.rs
+++ b/embassy-stm32/src/pac/stm32f401vc.rs
@@ -128,38 +128,38 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
156impl_spi!(SPI4, APB2); 156impl_spi!(SPI4, APB2);
157impl_spi_pin!(SPI4, Sck, PE12, 5); 157impl_spi_pin!(SPI4, SckPin, PE12, 5);
158impl_spi_pin!(SPI4, Miso, PE13, 5); 158impl_spi_pin!(SPI4, MisoPin, PE13, 5);
159impl_spi_pin!(SPI4, Mosi, PE14, 5); 159impl_spi_pin!(SPI4, MosiPin, PE14, 5);
160impl_spi_pin!(SPI4, Sck, PE2, 5); 160impl_spi_pin!(SPI4, SckPin, PE2, 5);
161impl_spi_pin!(SPI4, Miso, PE5, 5); 161impl_spi_pin!(SPI4, MisoPin, PE5, 5);
162impl_spi_pin!(SPI4, Mosi, PE6, 5); 162impl_spi_pin!(SPI4, MosiPin, PE6, 5);
163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
165impl_usart!(USART1); 165impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401vd.rs b/embassy-stm32/src/pac/stm32f401vd.rs
index 91263ba49..cc0e9bd85 100644
--- a/embassy-stm32/src/pac/stm32f401vd.rs
+++ b/embassy-stm32/src/pac/stm32f401vd.rs
@@ -128,38 +128,38 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
156impl_spi!(SPI4, APB2); 156impl_spi!(SPI4, APB2);
157impl_spi_pin!(SPI4, Sck, PE12, 5); 157impl_spi_pin!(SPI4, SckPin, PE12, 5);
158impl_spi_pin!(SPI4, Miso, PE13, 5); 158impl_spi_pin!(SPI4, MisoPin, PE13, 5);
159impl_spi_pin!(SPI4, Mosi, PE14, 5); 159impl_spi_pin!(SPI4, MosiPin, PE14, 5);
160impl_spi_pin!(SPI4, Sck, PE2, 5); 160impl_spi_pin!(SPI4, SckPin, PE2, 5);
161impl_spi_pin!(SPI4, Miso, PE5, 5); 161impl_spi_pin!(SPI4, MisoPin, PE5, 5);
162impl_spi_pin!(SPI4, Mosi, PE6, 5); 162impl_spi_pin!(SPI4, MosiPin, PE6, 5);
163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
165impl_usart!(USART1); 165impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f401ve.rs b/embassy-stm32/src/pac/stm32f401ve.rs
index 91263ba49..cc0e9bd85 100644
--- a/embassy-stm32/src/pac/stm32f401ve.rs
+++ b/embassy-stm32/src/pac/stm32f401ve.rs
@@ -128,38 +128,38 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PD3, 5); 145impl_spi_pin!(SPI2, SckPin, PD3, 5);
146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 146pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
147impl_spi!(SPI3, APB1); 147impl_spi!(SPI3, APB1);
148impl_spi_pin!(SPI3, Sck, PB3, 6); 148impl_spi_pin!(SPI3, SckPin, PB3, 6);
149impl_spi_pin!(SPI3, Miso, PB4, 6); 149impl_spi_pin!(SPI3, MisoPin, PB4, 6);
150impl_spi_pin!(SPI3, Mosi, PB5, 6); 150impl_spi_pin!(SPI3, MosiPin, PB5, 6);
151impl_spi_pin!(SPI3, Sck, PC10, 6); 151impl_spi_pin!(SPI3, SckPin, PC10, 6);
152impl_spi_pin!(SPI3, Miso, PC11, 6); 152impl_spi_pin!(SPI3, MisoPin, PC11, 6);
153impl_spi_pin!(SPI3, Mosi, PC12, 6); 153impl_spi_pin!(SPI3, MosiPin, PC12, 6);
154impl_spi_pin!(SPI3, Mosi, PD6, 5); 154impl_spi_pin!(SPI3, MosiPin, PD6, 5);
155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 155pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
156impl_spi!(SPI4, APB2); 156impl_spi!(SPI4, APB2);
157impl_spi_pin!(SPI4, Sck, PE12, 5); 157impl_spi_pin!(SPI4, SckPin, PE12, 5);
158impl_spi_pin!(SPI4, Miso, PE13, 5); 158impl_spi_pin!(SPI4, MisoPin, PE13, 5);
159impl_spi_pin!(SPI4, Mosi, PE14, 5); 159impl_spi_pin!(SPI4, MosiPin, PE14, 5);
160impl_spi_pin!(SPI4, Sck, PE2, 5); 160impl_spi_pin!(SPI4, SckPin, PE2, 5);
161impl_spi_pin!(SPI4, Miso, PE5, 5); 161impl_spi_pin!(SPI4, MisoPin, PE5, 5);
162impl_spi_pin!(SPI4, Mosi, PE6, 5); 162impl_spi_pin!(SPI4, MosiPin, PE6, 5);
163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 163pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 164pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
165impl_usart!(USART1); 165impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f405oe.rs b/embassy-stm32/src/pac/stm32f405oe.rs
index f8ee073f3..60eadd64d 100644
--- a/embassy-stm32/src/pac/stm32f405oe.rs
+++ b/embassy-stm32/src/pac/stm32f405oe.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f405og.rs b/embassy-stm32/src/pac/stm32f405og.rs
index f8ee073f3..60eadd64d 100644
--- a/embassy-stm32/src/pac/stm32f405og.rs
+++ b/embassy-stm32/src/pac/stm32f405og.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f405rg.rs b/embassy-stm32/src/pac/stm32f405rg.rs
index f8ee073f3..60eadd64d 100644
--- a/embassy-stm32/src/pac/stm32f405rg.rs
+++ b/embassy-stm32/src/pac/stm32f405rg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f405vg.rs b/embassy-stm32/src/pac/stm32f405vg.rs
index f8ee073f3..60eadd64d 100644
--- a/embassy-stm32/src/pac/stm32f405vg.rs
+++ b/embassy-stm32/src/pac/stm32f405vg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f405zg.rs b/embassy-stm32/src/pac/stm32f405zg.rs
index f8ee073f3..60eadd64d 100644
--- a/embassy-stm32/src/pac/stm32f405zg.rs
+++ b/embassy-stm32/src/pac/stm32f405zg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f407ie.rs b/embassy-stm32/src/pac/stm32f407ie.rs
index 7c839139a..b02ca8d30 100644
--- a/embassy-stm32/src/pac/stm32f407ie.rs
+++ b/embassy-stm32/src/pac/stm32f407ie.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f407ig.rs b/embassy-stm32/src/pac/stm32f407ig.rs
index 7c839139a..b02ca8d30 100644
--- a/embassy-stm32/src/pac/stm32f407ig.rs
+++ b/embassy-stm32/src/pac/stm32f407ig.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f407ve.rs b/embassy-stm32/src/pac/stm32f407ve.rs
index 7c839139a..b02ca8d30 100644
--- a/embassy-stm32/src/pac/stm32f407ve.rs
+++ b/embassy-stm32/src/pac/stm32f407ve.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f407vg.rs b/embassy-stm32/src/pac/stm32f407vg.rs
index 7c839139a..b02ca8d30 100644
--- a/embassy-stm32/src/pac/stm32f407vg.rs
+++ b/embassy-stm32/src/pac/stm32f407vg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f407ze.rs b/embassy-stm32/src/pac/stm32f407ze.rs
index 7c839139a..b02ca8d30 100644
--- a/embassy-stm32/src/pac/stm32f407ze.rs
+++ b/embassy-stm32/src/pac/stm32f407ze.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f407zg.rs b/embassy-stm32/src/pac/stm32f407zg.rs
index 7c839139a..b02ca8d30 100644
--- a/embassy-stm32/src/pac/stm32f407zg.rs
+++ b/embassy-stm32/src/pac/stm32f407zg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f411cc.rs b/embassy-stm32/src/pac/stm32f411cc.rs
index 325aee85a..2f3f0f0bf 100644
--- a/embassy-stm32/src/pac/stm32f411cc.rs
+++ b/embassy-stm32/src/pac/stm32f411cc.rs
@@ -128,55 +128,55 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PC7, 5); 145impl_spi_pin!(SPI2, SckPin, PC7, 5);
146impl_spi_pin!(SPI2, Sck, PD3, 5); 146impl_spi_pin!(SPI2, SckPin, PD3, 5);
147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
148impl_spi!(SPI3, APB1); 148impl_spi!(SPI3, APB1);
149impl_spi_pin!(SPI3, Sck, PB12, 7); 149impl_spi_pin!(SPI3, SckPin, PB12, 7);
150impl_spi_pin!(SPI3, Sck, PB3, 6); 150impl_spi_pin!(SPI3, SckPin, PB3, 6);
151impl_spi_pin!(SPI3, Miso, PB4, 6); 151impl_spi_pin!(SPI3, MisoPin, PB4, 6);
152impl_spi_pin!(SPI3, Mosi, PB5, 6); 152impl_spi_pin!(SPI3, MosiPin, PB5, 6);
153impl_spi_pin!(SPI3, Sck, PC10, 6); 153impl_spi_pin!(SPI3, SckPin, PC10, 6);
154impl_spi_pin!(SPI3, Miso, PC11, 6); 154impl_spi_pin!(SPI3, MisoPin, PC11, 6);
155impl_spi_pin!(SPI3, Mosi, PC12, 6); 155impl_spi_pin!(SPI3, MosiPin, PC12, 6);
156impl_spi_pin!(SPI3, Mosi, PD6, 5); 156impl_spi_pin!(SPI3, MosiPin, PD6, 5);
157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
158impl_spi!(SPI4, APB2); 158impl_spi!(SPI4, APB2);
159impl_spi_pin!(SPI4, Mosi, PA1, 5); 159impl_spi_pin!(SPI4, MosiPin, PA1, 5);
160impl_spi_pin!(SPI4, Miso, PA11, 6); 160impl_spi_pin!(SPI4, MisoPin, PA11, 6);
161impl_spi_pin!(SPI4, Sck, PB13, 6); 161impl_spi_pin!(SPI4, SckPin, PB13, 6);
162impl_spi_pin!(SPI4, Sck, PE12, 5); 162impl_spi_pin!(SPI4, SckPin, PE12, 5);
163impl_spi_pin!(SPI4, Miso, PE13, 5); 163impl_spi_pin!(SPI4, MisoPin, PE13, 5);
164impl_spi_pin!(SPI4, Mosi, PE14, 5); 164impl_spi_pin!(SPI4, MosiPin, PE14, 5);
165impl_spi_pin!(SPI4, Sck, PE2, 5); 165impl_spi_pin!(SPI4, SckPin, PE2, 5);
166impl_spi_pin!(SPI4, Miso, PE5, 5); 166impl_spi_pin!(SPI4, MisoPin, PE5, 5);
167impl_spi_pin!(SPI4, Mosi, PE6, 5); 167impl_spi_pin!(SPI4, MosiPin, PE6, 5);
168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
169impl_spi!(SPI5, APB2); 169impl_spi!(SPI5, APB2);
170impl_spi_pin!(SPI5, Mosi, PA10, 6); 170impl_spi_pin!(SPI5, MosiPin, PA10, 6);
171impl_spi_pin!(SPI5, Miso, PA12, 6); 171impl_spi_pin!(SPI5, MisoPin, PA12, 6);
172impl_spi_pin!(SPI5, Sck, PB0, 6); 172impl_spi_pin!(SPI5, SckPin, PB0, 6);
173impl_spi_pin!(SPI5, Mosi, PB8, 6); 173impl_spi_pin!(SPI5, MosiPin, PB8, 6);
174impl_spi_pin!(SPI5, Sck, PE12, 6); 174impl_spi_pin!(SPI5, SckPin, PE12, 6);
175impl_spi_pin!(SPI5, Miso, PE13, 6); 175impl_spi_pin!(SPI5, MisoPin, PE13, 6);
176impl_spi_pin!(SPI5, Mosi, PE14, 6); 176impl_spi_pin!(SPI5, MosiPin, PE14, 6);
177impl_spi_pin!(SPI5, Sck, PE2, 6); 177impl_spi_pin!(SPI5, SckPin, PE2, 6);
178impl_spi_pin!(SPI5, Miso, PE5, 6); 178impl_spi_pin!(SPI5, MisoPin, PE5, 6);
179impl_spi_pin!(SPI5, Mosi, PE6, 6); 179impl_spi_pin!(SPI5, MosiPin, PE6, 6);
180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
182impl_usart!(USART1); 182impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f411ce.rs b/embassy-stm32/src/pac/stm32f411ce.rs
index 325aee85a..2f3f0f0bf 100644
--- a/embassy-stm32/src/pac/stm32f411ce.rs
+++ b/embassy-stm32/src/pac/stm32f411ce.rs
@@ -128,55 +128,55 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PC7, 5); 145impl_spi_pin!(SPI2, SckPin, PC7, 5);
146impl_spi_pin!(SPI2, Sck, PD3, 5); 146impl_spi_pin!(SPI2, SckPin, PD3, 5);
147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
148impl_spi!(SPI3, APB1); 148impl_spi!(SPI3, APB1);
149impl_spi_pin!(SPI3, Sck, PB12, 7); 149impl_spi_pin!(SPI3, SckPin, PB12, 7);
150impl_spi_pin!(SPI3, Sck, PB3, 6); 150impl_spi_pin!(SPI3, SckPin, PB3, 6);
151impl_spi_pin!(SPI3, Miso, PB4, 6); 151impl_spi_pin!(SPI3, MisoPin, PB4, 6);
152impl_spi_pin!(SPI3, Mosi, PB5, 6); 152impl_spi_pin!(SPI3, MosiPin, PB5, 6);
153impl_spi_pin!(SPI3, Sck, PC10, 6); 153impl_spi_pin!(SPI3, SckPin, PC10, 6);
154impl_spi_pin!(SPI3, Miso, PC11, 6); 154impl_spi_pin!(SPI3, MisoPin, PC11, 6);
155impl_spi_pin!(SPI3, Mosi, PC12, 6); 155impl_spi_pin!(SPI3, MosiPin, PC12, 6);
156impl_spi_pin!(SPI3, Mosi, PD6, 5); 156impl_spi_pin!(SPI3, MosiPin, PD6, 5);
157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
158impl_spi!(SPI4, APB2); 158impl_spi!(SPI4, APB2);
159impl_spi_pin!(SPI4, Mosi, PA1, 5); 159impl_spi_pin!(SPI4, MosiPin, PA1, 5);
160impl_spi_pin!(SPI4, Miso, PA11, 6); 160impl_spi_pin!(SPI4, MisoPin, PA11, 6);
161impl_spi_pin!(SPI4, Sck, PB13, 6); 161impl_spi_pin!(SPI4, SckPin, PB13, 6);
162impl_spi_pin!(SPI4, Sck, PE12, 5); 162impl_spi_pin!(SPI4, SckPin, PE12, 5);
163impl_spi_pin!(SPI4, Miso, PE13, 5); 163impl_spi_pin!(SPI4, MisoPin, PE13, 5);
164impl_spi_pin!(SPI4, Mosi, PE14, 5); 164impl_spi_pin!(SPI4, MosiPin, PE14, 5);
165impl_spi_pin!(SPI4, Sck, PE2, 5); 165impl_spi_pin!(SPI4, SckPin, PE2, 5);
166impl_spi_pin!(SPI4, Miso, PE5, 5); 166impl_spi_pin!(SPI4, MisoPin, PE5, 5);
167impl_spi_pin!(SPI4, Mosi, PE6, 5); 167impl_spi_pin!(SPI4, MosiPin, PE6, 5);
168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
169impl_spi!(SPI5, APB2); 169impl_spi!(SPI5, APB2);
170impl_spi_pin!(SPI5, Mosi, PA10, 6); 170impl_spi_pin!(SPI5, MosiPin, PA10, 6);
171impl_spi_pin!(SPI5, Miso, PA12, 6); 171impl_spi_pin!(SPI5, MisoPin, PA12, 6);
172impl_spi_pin!(SPI5, Sck, PB0, 6); 172impl_spi_pin!(SPI5, SckPin, PB0, 6);
173impl_spi_pin!(SPI5, Mosi, PB8, 6); 173impl_spi_pin!(SPI5, MosiPin, PB8, 6);
174impl_spi_pin!(SPI5, Sck, PE12, 6); 174impl_spi_pin!(SPI5, SckPin, PE12, 6);
175impl_spi_pin!(SPI5, Miso, PE13, 6); 175impl_spi_pin!(SPI5, MisoPin, PE13, 6);
176impl_spi_pin!(SPI5, Mosi, PE14, 6); 176impl_spi_pin!(SPI5, MosiPin, PE14, 6);
177impl_spi_pin!(SPI5, Sck, PE2, 6); 177impl_spi_pin!(SPI5, SckPin, PE2, 6);
178impl_spi_pin!(SPI5, Miso, PE5, 6); 178impl_spi_pin!(SPI5, MisoPin, PE5, 6);
179impl_spi_pin!(SPI5, Mosi, PE6, 6); 179impl_spi_pin!(SPI5, MosiPin, PE6, 6);
180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
182impl_usart!(USART1); 182impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f411rc.rs b/embassy-stm32/src/pac/stm32f411rc.rs
index 325aee85a..2f3f0f0bf 100644
--- a/embassy-stm32/src/pac/stm32f411rc.rs
+++ b/embassy-stm32/src/pac/stm32f411rc.rs
@@ -128,55 +128,55 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PC7, 5); 145impl_spi_pin!(SPI2, SckPin, PC7, 5);
146impl_spi_pin!(SPI2, Sck, PD3, 5); 146impl_spi_pin!(SPI2, SckPin, PD3, 5);
147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
148impl_spi!(SPI3, APB1); 148impl_spi!(SPI3, APB1);
149impl_spi_pin!(SPI3, Sck, PB12, 7); 149impl_spi_pin!(SPI3, SckPin, PB12, 7);
150impl_spi_pin!(SPI3, Sck, PB3, 6); 150impl_spi_pin!(SPI3, SckPin, PB3, 6);
151impl_spi_pin!(SPI3, Miso, PB4, 6); 151impl_spi_pin!(SPI3, MisoPin, PB4, 6);
152impl_spi_pin!(SPI3, Mosi, PB5, 6); 152impl_spi_pin!(SPI3, MosiPin, PB5, 6);
153impl_spi_pin!(SPI3, Sck, PC10, 6); 153impl_spi_pin!(SPI3, SckPin, PC10, 6);
154impl_spi_pin!(SPI3, Miso, PC11, 6); 154impl_spi_pin!(SPI3, MisoPin, PC11, 6);
155impl_spi_pin!(SPI3, Mosi, PC12, 6); 155impl_spi_pin!(SPI3, MosiPin, PC12, 6);
156impl_spi_pin!(SPI3, Mosi, PD6, 5); 156impl_spi_pin!(SPI3, MosiPin, PD6, 5);
157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
158impl_spi!(SPI4, APB2); 158impl_spi!(SPI4, APB2);
159impl_spi_pin!(SPI4, Mosi, PA1, 5); 159impl_spi_pin!(SPI4, MosiPin, PA1, 5);
160impl_spi_pin!(SPI4, Miso, PA11, 6); 160impl_spi_pin!(SPI4, MisoPin, PA11, 6);
161impl_spi_pin!(SPI4, Sck, PB13, 6); 161impl_spi_pin!(SPI4, SckPin, PB13, 6);
162impl_spi_pin!(SPI4, Sck, PE12, 5); 162impl_spi_pin!(SPI4, SckPin, PE12, 5);
163impl_spi_pin!(SPI4, Miso, PE13, 5); 163impl_spi_pin!(SPI4, MisoPin, PE13, 5);
164impl_spi_pin!(SPI4, Mosi, PE14, 5); 164impl_spi_pin!(SPI4, MosiPin, PE14, 5);
165impl_spi_pin!(SPI4, Sck, PE2, 5); 165impl_spi_pin!(SPI4, SckPin, PE2, 5);
166impl_spi_pin!(SPI4, Miso, PE5, 5); 166impl_spi_pin!(SPI4, MisoPin, PE5, 5);
167impl_spi_pin!(SPI4, Mosi, PE6, 5); 167impl_spi_pin!(SPI4, MosiPin, PE6, 5);
168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
169impl_spi!(SPI5, APB2); 169impl_spi!(SPI5, APB2);
170impl_spi_pin!(SPI5, Mosi, PA10, 6); 170impl_spi_pin!(SPI5, MosiPin, PA10, 6);
171impl_spi_pin!(SPI5, Miso, PA12, 6); 171impl_spi_pin!(SPI5, MisoPin, PA12, 6);
172impl_spi_pin!(SPI5, Sck, PB0, 6); 172impl_spi_pin!(SPI5, SckPin, PB0, 6);
173impl_spi_pin!(SPI5, Mosi, PB8, 6); 173impl_spi_pin!(SPI5, MosiPin, PB8, 6);
174impl_spi_pin!(SPI5, Sck, PE12, 6); 174impl_spi_pin!(SPI5, SckPin, PE12, 6);
175impl_spi_pin!(SPI5, Miso, PE13, 6); 175impl_spi_pin!(SPI5, MisoPin, PE13, 6);
176impl_spi_pin!(SPI5, Mosi, PE14, 6); 176impl_spi_pin!(SPI5, MosiPin, PE14, 6);
177impl_spi_pin!(SPI5, Sck, PE2, 6); 177impl_spi_pin!(SPI5, SckPin, PE2, 6);
178impl_spi_pin!(SPI5, Miso, PE5, 6); 178impl_spi_pin!(SPI5, MisoPin, PE5, 6);
179impl_spi_pin!(SPI5, Mosi, PE6, 6); 179impl_spi_pin!(SPI5, MosiPin, PE6, 6);
180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
182impl_usart!(USART1); 182impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f411re.rs b/embassy-stm32/src/pac/stm32f411re.rs
index 325aee85a..2f3f0f0bf 100644
--- a/embassy-stm32/src/pac/stm32f411re.rs
+++ b/embassy-stm32/src/pac/stm32f411re.rs
@@ -128,55 +128,55 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PC7, 5); 145impl_spi_pin!(SPI2, SckPin, PC7, 5);
146impl_spi_pin!(SPI2, Sck, PD3, 5); 146impl_spi_pin!(SPI2, SckPin, PD3, 5);
147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
148impl_spi!(SPI3, APB1); 148impl_spi!(SPI3, APB1);
149impl_spi_pin!(SPI3, Sck, PB12, 7); 149impl_spi_pin!(SPI3, SckPin, PB12, 7);
150impl_spi_pin!(SPI3, Sck, PB3, 6); 150impl_spi_pin!(SPI3, SckPin, PB3, 6);
151impl_spi_pin!(SPI3, Miso, PB4, 6); 151impl_spi_pin!(SPI3, MisoPin, PB4, 6);
152impl_spi_pin!(SPI3, Mosi, PB5, 6); 152impl_spi_pin!(SPI3, MosiPin, PB5, 6);
153impl_spi_pin!(SPI3, Sck, PC10, 6); 153impl_spi_pin!(SPI3, SckPin, PC10, 6);
154impl_spi_pin!(SPI3, Miso, PC11, 6); 154impl_spi_pin!(SPI3, MisoPin, PC11, 6);
155impl_spi_pin!(SPI3, Mosi, PC12, 6); 155impl_spi_pin!(SPI3, MosiPin, PC12, 6);
156impl_spi_pin!(SPI3, Mosi, PD6, 5); 156impl_spi_pin!(SPI3, MosiPin, PD6, 5);
157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
158impl_spi!(SPI4, APB2); 158impl_spi!(SPI4, APB2);
159impl_spi_pin!(SPI4, Mosi, PA1, 5); 159impl_spi_pin!(SPI4, MosiPin, PA1, 5);
160impl_spi_pin!(SPI4, Miso, PA11, 6); 160impl_spi_pin!(SPI4, MisoPin, PA11, 6);
161impl_spi_pin!(SPI4, Sck, PB13, 6); 161impl_spi_pin!(SPI4, SckPin, PB13, 6);
162impl_spi_pin!(SPI4, Sck, PE12, 5); 162impl_spi_pin!(SPI4, SckPin, PE12, 5);
163impl_spi_pin!(SPI4, Miso, PE13, 5); 163impl_spi_pin!(SPI4, MisoPin, PE13, 5);
164impl_spi_pin!(SPI4, Mosi, PE14, 5); 164impl_spi_pin!(SPI4, MosiPin, PE14, 5);
165impl_spi_pin!(SPI4, Sck, PE2, 5); 165impl_spi_pin!(SPI4, SckPin, PE2, 5);
166impl_spi_pin!(SPI4, Miso, PE5, 5); 166impl_spi_pin!(SPI4, MisoPin, PE5, 5);
167impl_spi_pin!(SPI4, Mosi, PE6, 5); 167impl_spi_pin!(SPI4, MosiPin, PE6, 5);
168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
169impl_spi!(SPI5, APB2); 169impl_spi!(SPI5, APB2);
170impl_spi_pin!(SPI5, Mosi, PA10, 6); 170impl_spi_pin!(SPI5, MosiPin, PA10, 6);
171impl_spi_pin!(SPI5, Miso, PA12, 6); 171impl_spi_pin!(SPI5, MisoPin, PA12, 6);
172impl_spi_pin!(SPI5, Sck, PB0, 6); 172impl_spi_pin!(SPI5, SckPin, PB0, 6);
173impl_spi_pin!(SPI5, Mosi, PB8, 6); 173impl_spi_pin!(SPI5, MosiPin, PB8, 6);
174impl_spi_pin!(SPI5, Sck, PE12, 6); 174impl_spi_pin!(SPI5, SckPin, PE12, 6);
175impl_spi_pin!(SPI5, Miso, PE13, 6); 175impl_spi_pin!(SPI5, MisoPin, PE13, 6);
176impl_spi_pin!(SPI5, Mosi, PE14, 6); 176impl_spi_pin!(SPI5, MosiPin, PE14, 6);
177impl_spi_pin!(SPI5, Sck, PE2, 6); 177impl_spi_pin!(SPI5, SckPin, PE2, 6);
178impl_spi_pin!(SPI5, Miso, PE5, 6); 178impl_spi_pin!(SPI5, MisoPin, PE5, 6);
179impl_spi_pin!(SPI5, Mosi, PE6, 6); 179impl_spi_pin!(SPI5, MosiPin, PE6, 6);
180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
182impl_usart!(USART1); 182impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f411vc.rs b/embassy-stm32/src/pac/stm32f411vc.rs
index 325aee85a..2f3f0f0bf 100644
--- a/embassy-stm32/src/pac/stm32f411vc.rs
+++ b/embassy-stm32/src/pac/stm32f411vc.rs
@@ -128,55 +128,55 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PC7, 5); 145impl_spi_pin!(SPI2, SckPin, PC7, 5);
146impl_spi_pin!(SPI2, Sck, PD3, 5); 146impl_spi_pin!(SPI2, SckPin, PD3, 5);
147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
148impl_spi!(SPI3, APB1); 148impl_spi!(SPI3, APB1);
149impl_spi_pin!(SPI3, Sck, PB12, 7); 149impl_spi_pin!(SPI3, SckPin, PB12, 7);
150impl_spi_pin!(SPI3, Sck, PB3, 6); 150impl_spi_pin!(SPI3, SckPin, PB3, 6);
151impl_spi_pin!(SPI3, Miso, PB4, 6); 151impl_spi_pin!(SPI3, MisoPin, PB4, 6);
152impl_spi_pin!(SPI3, Mosi, PB5, 6); 152impl_spi_pin!(SPI3, MosiPin, PB5, 6);
153impl_spi_pin!(SPI3, Sck, PC10, 6); 153impl_spi_pin!(SPI3, SckPin, PC10, 6);
154impl_spi_pin!(SPI3, Miso, PC11, 6); 154impl_spi_pin!(SPI3, MisoPin, PC11, 6);
155impl_spi_pin!(SPI3, Mosi, PC12, 6); 155impl_spi_pin!(SPI3, MosiPin, PC12, 6);
156impl_spi_pin!(SPI3, Mosi, PD6, 5); 156impl_spi_pin!(SPI3, MosiPin, PD6, 5);
157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
158impl_spi!(SPI4, APB2); 158impl_spi!(SPI4, APB2);
159impl_spi_pin!(SPI4, Mosi, PA1, 5); 159impl_spi_pin!(SPI4, MosiPin, PA1, 5);
160impl_spi_pin!(SPI4, Miso, PA11, 6); 160impl_spi_pin!(SPI4, MisoPin, PA11, 6);
161impl_spi_pin!(SPI4, Sck, PB13, 6); 161impl_spi_pin!(SPI4, SckPin, PB13, 6);
162impl_spi_pin!(SPI4, Sck, PE12, 5); 162impl_spi_pin!(SPI4, SckPin, PE12, 5);
163impl_spi_pin!(SPI4, Miso, PE13, 5); 163impl_spi_pin!(SPI4, MisoPin, PE13, 5);
164impl_spi_pin!(SPI4, Mosi, PE14, 5); 164impl_spi_pin!(SPI4, MosiPin, PE14, 5);
165impl_spi_pin!(SPI4, Sck, PE2, 5); 165impl_spi_pin!(SPI4, SckPin, PE2, 5);
166impl_spi_pin!(SPI4, Miso, PE5, 5); 166impl_spi_pin!(SPI4, MisoPin, PE5, 5);
167impl_spi_pin!(SPI4, Mosi, PE6, 5); 167impl_spi_pin!(SPI4, MosiPin, PE6, 5);
168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
169impl_spi!(SPI5, APB2); 169impl_spi!(SPI5, APB2);
170impl_spi_pin!(SPI5, Mosi, PA10, 6); 170impl_spi_pin!(SPI5, MosiPin, PA10, 6);
171impl_spi_pin!(SPI5, Miso, PA12, 6); 171impl_spi_pin!(SPI5, MisoPin, PA12, 6);
172impl_spi_pin!(SPI5, Sck, PB0, 6); 172impl_spi_pin!(SPI5, SckPin, PB0, 6);
173impl_spi_pin!(SPI5, Mosi, PB8, 6); 173impl_spi_pin!(SPI5, MosiPin, PB8, 6);
174impl_spi_pin!(SPI5, Sck, PE12, 6); 174impl_spi_pin!(SPI5, SckPin, PE12, 6);
175impl_spi_pin!(SPI5, Miso, PE13, 6); 175impl_spi_pin!(SPI5, MisoPin, PE13, 6);
176impl_spi_pin!(SPI5, Mosi, PE14, 6); 176impl_spi_pin!(SPI5, MosiPin, PE14, 6);
177impl_spi_pin!(SPI5, Sck, PE2, 6); 177impl_spi_pin!(SPI5, SckPin, PE2, 6);
178impl_spi_pin!(SPI5, Miso, PE5, 6); 178impl_spi_pin!(SPI5, MisoPin, PE5, 6);
179impl_spi_pin!(SPI5, Mosi, PE6, 6); 179impl_spi_pin!(SPI5, MosiPin, PE6, 6);
180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
182impl_usart!(USART1); 182impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f411ve.rs b/embassy-stm32/src/pac/stm32f411ve.rs
index 325aee85a..2f3f0f0bf 100644
--- a/embassy-stm32/src/pac/stm32f411ve.rs
+++ b/embassy-stm32/src/pac/stm32f411ve.rs
@@ -128,55 +128,55 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
128impl_gpio_pin!(PH15, 7, 15, EXTI15); 128impl_gpio_pin!(PH15, 7, 15, EXTI15);
129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 129pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
130impl_spi!(SPI1, APB2); 130impl_spi!(SPI1, APB2);
131impl_spi_pin!(SPI1, Sck, PA5, 5); 131impl_spi_pin!(SPI1, SckPin, PA5, 5);
132impl_spi_pin!(SPI1, Miso, PA6, 5); 132impl_spi_pin!(SPI1, MisoPin, PA6, 5);
133impl_spi_pin!(SPI1, Mosi, PA7, 5); 133impl_spi_pin!(SPI1, MosiPin, PA7, 5);
134impl_spi_pin!(SPI1, Sck, PB3, 5); 134impl_spi_pin!(SPI1, SckPin, PB3, 5);
135impl_spi_pin!(SPI1, Miso, PB4, 5); 135impl_spi_pin!(SPI1, MisoPin, PB4, 5);
136impl_spi_pin!(SPI1, Mosi, PB5, 5); 136impl_spi_pin!(SPI1, MosiPin, PB5, 5);
137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 137pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
138impl_spi!(SPI2, APB1); 138impl_spi!(SPI2, APB1);
139impl_spi_pin!(SPI2, Sck, PB10, 5); 139impl_spi_pin!(SPI2, SckPin, PB10, 5);
140impl_spi_pin!(SPI2, Sck, PB13, 5); 140impl_spi_pin!(SPI2, SckPin, PB13, 5);
141impl_spi_pin!(SPI2, Miso, PB14, 5); 141impl_spi_pin!(SPI2, MisoPin, PB14, 5);
142impl_spi_pin!(SPI2, Mosi, PB15, 5); 142impl_spi_pin!(SPI2, MosiPin, PB15, 5);
143impl_spi_pin!(SPI2, Miso, PC2, 5); 143impl_spi_pin!(SPI2, MisoPin, PC2, 5);
144impl_spi_pin!(SPI2, Mosi, PC3, 5); 144impl_spi_pin!(SPI2, MosiPin, PC3, 5);
145impl_spi_pin!(SPI2, Sck, PC7, 5); 145impl_spi_pin!(SPI2, SckPin, PC7, 5);
146impl_spi_pin!(SPI2, Sck, PD3, 5); 146impl_spi_pin!(SPI2, SckPin, PD3, 5);
147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 147pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
148impl_spi!(SPI3, APB1); 148impl_spi!(SPI3, APB1);
149impl_spi_pin!(SPI3, Sck, PB12, 7); 149impl_spi_pin!(SPI3, SckPin, PB12, 7);
150impl_spi_pin!(SPI3, Sck, PB3, 6); 150impl_spi_pin!(SPI3, SckPin, PB3, 6);
151impl_spi_pin!(SPI3, Miso, PB4, 6); 151impl_spi_pin!(SPI3, MisoPin, PB4, 6);
152impl_spi_pin!(SPI3, Mosi, PB5, 6); 152impl_spi_pin!(SPI3, MosiPin, PB5, 6);
153impl_spi_pin!(SPI3, Sck, PC10, 6); 153impl_spi_pin!(SPI3, SckPin, PC10, 6);
154impl_spi_pin!(SPI3, Miso, PC11, 6); 154impl_spi_pin!(SPI3, MisoPin, PC11, 6);
155impl_spi_pin!(SPI3, Mosi, PC12, 6); 155impl_spi_pin!(SPI3, MosiPin, PC12, 6);
156impl_spi_pin!(SPI3, Mosi, PD6, 5); 156impl_spi_pin!(SPI3, MosiPin, PD6, 5);
157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 157pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
158impl_spi!(SPI4, APB2); 158impl_spi!(SPI4, APB2);
159impl_spi_pin!(SPI4, Mosi, PA1, 5); 159impl_spi_pin!(SPI4, MosiPin, PA1, 5);
160impl_spi_pin!(SPI4, Miso, PA11, 6); 160impl_spi_pin!(SPI4, MisoPin, PA11, 6);
161impl_spi_pin!(SPI4, Sck, PB13, 6); 161impl_spi_pin!(SPI4, SckPin, PB13, 6);
162impl_spi_pin!(SPI4, Sck, PE12, 5); 162impl_spi_pin!(SPI4, SckPin, PE12, 5);
163impl_spi_pin!(SPI4, Miso, PE13, 5); 163impl_spi_pin!(SPI4, MisoPin, PE13, 5);
164impl_spi_pin!(SPI4, Mosi, PE14, 5); 164impl_spi_pin!(SPI4, MosiPin, PE14, 5);
165impl_spi_pin!(SPI4, Sck, PE2, 5); 165impl_spi_pin!(SPI4, SckPin, PE2, 5);
166impl_spi_pin!(SPI4, Miso, PE5, 5); 166impl_spi_pin!(SPI4, MisoPin, PE5, 5);
167impl_spi_pin!(SPI4, Mosi, PE6, 5); 167impl_spi_pin!(SPI4, MosiPin, PE6, 5);
168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 168pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
169impl_spi!(SPI5, APB2); 169impl_spi!(SPI5, APB2);
170impl_spi_pin!(SPI5, Mosi, PA10, 6); 170impl_spi_pin!(SPI5, MosiPin, PA10, 6);
171impl_spi_pin!(SPI5, Miso, PA12, 6); 171impl_spi_pin!(SPI5, MisoPin, PA12, 6);
172impl_spi_pin!(SPI5, Sck, PB0, 6); 172impl_spi_pin!(SPI5, SckPin, PB0, 6);
173impl_spi_pin!(SPI5, Mosi, PB8, 6); 173impl_spi_pin!(SPI5, MosiPin, PB8, 6);
174impl_spi_pin!(SPI5, Sck, PE12, 6); 174impl_spi_pin!(SPI5, SckPin, PE12, 6);
175impl_spi_pin!(SPI5, Miso, PE13, 6); 175impl_spi_pin!(SPI5, MisoPin, PE13, 6);
176impl_spi_pin!(SPI5, Mosi, PE14, 6); 176impl_spi_pin!(SPI5, MosiPin, PE14, 6);
177impl_spi_pin!(SPI5, Sck, PE2, 6); 177impl_spi_pin!(SPI5, SckPin, PE2, 6);
178impl_spi_pin!(SPI5, Miso, PE5, 6); 178impl_spi_pin!(SPI5, MisoPin, PE5, 6);
179impl_spi_pin!(SPI5, Mosi, PE6, 6); 179impl_spi_pin!(SPI5, MosiPin, PE6, 6);
180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 180pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 181pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
182impl_usart!(USART1); 182impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412ce.rs b/embassy-stm32/src/pac/stm32f412ce.rs
index ae976e690..f3e125b70 100644
--- a/embassy-stm32/src/pac/stm32f412ce.rs
+++ b/embassy-stm32/src/pac/stm32f412ce.rs
@@ -96,41 +96,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
96impl_rng!(RNG, RNG); 96impl_rng!(RNG, RNG);
97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
98impl_spi!(SPI1, APB2); 98impl_spi!(SPI1, APB2);
99impl_spi_pin!(SPI1, Sck, PA5, 5); 99impl_spi_pin!(SPI1, SckPin, PA5, 5);
100impl_spi_pin!(SPI1, Miso, PA6, 5); 100impl_spi_pin!(SPI1, MisoPin, PA6, 5);
101impl_spi_pin!(SPI1, Mosi, PA7, 5); 101impl_spi_pin!(SPI1, MosiPin, PA7, 5);
102impl_spi_pin!(SPI1, Sck, PB3, 5); 102impl_spi_pin!(SPI1, SckPin, PB3, 5);
103impl_spi_pin!(SPI1, Miso, PB4, 5); 103impl_spi_pin!(SPI1, MisoPin, PB4, 5);
104impl_spi_pin!(SPI1, Mosi, PB5, 5); 104impl_spi_pin!(SPI1, MosiPin, PB5, 5);
105pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 105pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
106impl_spi!(SPI2, APB1); 106impl_spi!(SPI2, APB1);
107impl_spi_pin!(SPI2, Sck, PB10, 5); 107impl_spi_pin!(SPI2, SckPin, PB10, 5);
108impl_spi_pin!(SPI2, Sck, PB13, 5); 108impl_spi_pin!(SPI2, SckPin, PB13, 5);
109impl_spi_pin!(SPI2, Miso, PB14, 5); 109impl_spi_pin!(SPI2, MisoPin, PB14, 5);
110impl_spi_pin!(SPI2, Mosi, PB15, 5); 110impl_spi_pin!(SPI2, MosiPin, PB15, 5);
111impl_spi_pin!(SPI2, Miso, PC2, 5); 111impl_spi_pin!(SPI2, MisoPin, PC2, 5);
112impl_spi_pin!(SPI2, Mosi, PC3, 5); 112impl_spi_pin!(SPI2, MosiPin, PC3, 5);
113impl_spi_pin!(SPI2, Sck, PC7, 5); 113impl_spi_pin!(SPI2, SckPin, PC7, 5);
114pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 114pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
115impl_spi!(SPI3, APB1); 115impl_spi!(SPI3, APB1);
116impl_spi_pin!(SPI3, Sck, PB12, 7); 116impl_spi_pin!(SPI3, SckPin, PB12, 7);
117impl_spi_pin!(SPI3, Sck, PB3, 6); 117impl_spi_pin!(SPI3, SckPin, PB3, 6);
118impl_spi_pin!(SPI3, Miso, PB4, 6); 118impl_spi_pin!(SPI3, MisoPin, PB4, 6);
119impl_spi_pin!(SPI3, Mosi, PB5, 6); 119impl_spi_pin!(SPI3, MosiPin, PB5, 6);
120impl_spi_pin!(SPI3, Sck, PC10, 6); 120impl_spi_pin!(SPI3, SckPin, PC10, 6);
121impl_spi_pin!(SPI3, Miso, PC11, 6); 121impl_spi_pin!(SPI3, MisoPin, PC11, 6);
122impl_spi_pin!(SPI3, Mosi, PC12, 6); 122impl_spi_pin!(SPI3, MosiPin, PC12, 6);
123pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 123pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
124impl_spi!(SPI4, APB2); 124impl_spi!(SPI4, APB2);
125impl_spi_pin!(SPI4, Mosi, PA1, 5); 125impl_spi_pin!(SPI4, MosiPin, PA1, 5);
126impl_spi_pin!(SPI4, Miso, PA11, 6); 126impl_spi_pin!(SPI4, MisoPin, PA11, 6);
127impl_spi_pin!(SPI4, Sck, PB13, 6); 127impl_spi_pin!(SPI4, SckPin, PB13, 6);
128pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 128pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
129impl_spi!(SPI5, APB2); 129impl_spi!(SPI5, APB2);
130impl_spi_pin!(SPI5, Mosi, PA10, 6); 130impl_spi_pin!(SPI5, MosiPin, PA10, 6);
131impl_spi_pin!(SPI5, Miso, PA12, 6); 131impl_spi_pin!(SPI5, MisoPin, PA12, 6);
132impl_spi_pin!(SPI5, Sck, PB0, 6); 132impl_spi_pin!(SPI5, SckPin, PB0, 6);
133impl_spi_pin!(SPI5, Mosi, PB8, 6); 133impl_spi_pin!(SPI5, MosiPin, PB8, 6);
134pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 134pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
135pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 135pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
136impl_usart!(USART1); 136impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412cg.rs b/embassy-stm32/src/pac/stm32f412cg.rs
index ae976e690..f3e125b70 100644
--- a/embassy-stm32/src/pac/stm32f412cg.rs
+++ b/embassy-stm32/src/pac/stm32f412cg.rs
@@ -96,41 +96,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
96impl_rng!(RNG, RNG); 96impl_rng!(RNG, RNG);
97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
98impl_spi!(SPI1, APB2); 98impl_spi!(SPI1, APB2);
99impl_spi_pin!(SPI1, Sck, PA5, 5); 99impl_spi_pin!(SPI1, SckPin, PA5, 5);
100impl_spi_pin!(SPI1, Miso, PA6, 5); 100impl_spi_pin!(SPI1, MisoPin, PA6, 5);
101impl_spi_pin!(SPI1, Mosi, PA7, 5); 101impl_spi_pin!(SPI1, MosiPin, PA7, 5);
102impl_spi_pin!(SPI1, Sck, PB3, 5); 102impl_spi_pin!(SPI1, SckPin, PB3, 5);
103impl_spi_pin!(SPI1, Miso, PB4, 5); 103impl_spi_pin!(SPI1, MisoPin, PB4, 5);
104impl_spi_pin!(SPI1, Mosi, PB5, 5); 104impl_spi_pin!(SPI1, MosiPin, PB5, 5);
105pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 105pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
106impl_spi!(SPI2, APB1); 106impl_spi!(SPI2, APB1);
107impl_spi_pin!(SPI2, Sck, PB10, 5); 107impl_spi_pin!(SPI2, SckPin, PB10, 5);
108impl_spi_pin!(SPI2, Sck, PB13, 5); 108impl_spi_pin!(SPI2, SckPin, PB13, 5);
109impl_spi_pin!(SPI2, Miso, PB14, 5); 109impl_spi_pin!(SPI2, MisoPin, PB14, 5);
110impl_spi_pin!(SPI2, Mosi, PB15, 5); 110impl_spi_pin!(SPI2, MosiPin, PB15, 5);
111impl_spi_pin!(SPI2, Miso, PC2, 5); 111impl_spi_pin!(SPI2, MisoPin, PC2, 5);
112impl_spi_pin!(SPI2, Mosi, PC3, 5); 112impl_spi_pin!(SPI2, MosiPin, PC3, 5);
113impl_spi_pin!(SPI2, Sck, PC7, 5); 113impl_spi_pin!(SPI2, SckPin, PC7, 5);
114pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 114pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
115impl_spi!(SPI3, APB1); 115impl_spi!(SPI3, APB1);
116impl_spi_pin!(SPI3, Sck, PB12, 7); 116impl_spi_pin!(SPI3, SckPin, PB12, 7);
117impl_spi_pin!(SPI3, Sck, PB3, 6); 117impl_spi_pin!(SPI3, SckPin, PB3, 6);
118impl_spi_pin!(SPI3, Miso, PB4, 6); 118impl_spi_pin!(SPI3, MisoPin, PB4, 6);
119impl_spi_pin!(SPI3, Mosi, PB5, 6); 119impl_spi_pin!(SPI3, MosiPin, PB5, 6);
120impl_spi_pin!(SPI3, Sck, PC10, 6); 120impl_spi_pin!(SPI3, SckPin, PC10, 6);
121impl_spi_pin!(SPI3, Miso, PC11, 6); 121impl_spi_pin!(SPI3, MisoPin, PC11, 6);
122impl_spi_pin!(SPI3, Mosi, PC12, 6); 122impl_spi_pin!(SPI3, MosiPin, PC12, 6);
123pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 123pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
124impl_spi!(SPI4, APB2); 124impl_spi!(SPI4, APB2);
125impl_spi_pin!(SPI4, Mosi, PA1, 5); 125impl_spi_pin!(SPI4, MosiPin, PA1, 5);
126impl_spi_pin!(SPI4, Miso, PA11, 6); 126impl_spi_pin!(SPI4, MisoPin, PA11, 6);
127impl_spi_pin!(SPI4, Sck, PB13, 6); 127impl_spi_pin!(SPI4, SckPin, PB13, 6);
128pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 128pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
129impl_spi!(SPI5, APB2); 129impl_spi!(SPI5, APB2);
130impl_spi_pin!(SPI5, Mosi, PA10, 6); 130impl_spi_pin!(SPI5, MosiPin, PA10, 6);
131impl_spi_pin!(SPI5, Miso, PA12, 6); 131impl_spi_pin!(SPI5, MisoPin, PA12, 6);
132impl_spi_pin!(SPI5, Sck, PB0, 6); 132impl_spi_pin!(SPI5, SckPin, PB0, 6);
133impl_spi_pin!(SPI5, Mosi, PB8, 6); 133impl_spi_pin!(SPI5, MosiPin, PB8, 6);
134pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 134pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
135pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 135pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
136impl_usart!(USART1); 136impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412re.rs b/embassy-stm32/src/pac/stm32f412re.rs
index 819f0c06c..c390cb26c 100644
--- a/embassy-stm32/src/pac/stm32f412re.rs
+++ b/embassy-stm32/src/pac/stm32f412re.rs
@@ -113,43 +113,43 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
113impl_rng!(RNG, RNG); 113impl_rng!(RNG, RNG);
114pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 114pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
115impl_spi!(SPI1, APB2); 115impl_spi!(SPI1, APB2);
116impl_spi_pin!(SPI1, Sck, PA5, 5); 116impl_spi_pin!(SPI1, SckPin, PA5, 5);
117impl_spi_pin!(SPI1, Miso, PA6, 5); 117impl_spi_pin!(SPI1, MisoPin, PA6, 5);
118impl_spi_pin!(SPI1, Mosi, PA7, 5); 118impl_spi_pin!(SPI1, MosiPin, PA7, 5);
119impl_spi_pin!(SPI1, Sck, PB3, 5); 119impl_spi_pin!(SPI1, SckPin, PB3, 5);
120impl_spi_pin!(SPI1, Miso, PB4, 5); 120impl_spi_pin!(SPI1, MisoPin, PB4, 5);
121impl_spi_pin!(SPI1, Mosi, PB5, 5); 121impl_spi_pin!(SPI1, MosiPin, PB5, 5);
122pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 122pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
123impl_spi!(SPI2, APB1); 123impl_spi!(SPI2, APB1);
124impl_spi_pin!(SPI2, Sck, PB10, 5); 124impl_spi_pin!(SPI2, SckPin, PB10, 5);
125impl_spi_pin!(SPI2, Sck, PB13, 5); 125impl_spi_pin!(SPI2, SckPin, PB13, 5);
126impl_spi_pin!(SPI2, Miso, PB14, 5); 126impl_spi_pin!(SPI2, MisoPin, PB14, 5);
127impl_spi_pin!(SPI2, Mosi, PB15, 5); 127impl_spi_pin!(SPI2, MosiPin, PB15, 5);
128impl_spi_pin!(SPI2, Miso, PC2, 5); 128impl_spi_pin!(SPI2, MisoPin, PC2, 5);
129impl_spi_pin!(SPI2, Mosi, PC3, 5); 129impl_spi_pin!(SPI2, MosiPin, PC3, 5);
130impl_spi_pin!(SPI2, Sck, PC7, 5); 130impl_spi_pin!(SPI2, SckPin, PC7, 5);
131impl_spi_pin!(SPI2, Sck, PD3, 5); 131impl_spi_pin!(SPI2, SckPin, PD3, 5);
132pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 132pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
133impl_spi!(SPI3, APB1); 133impl_spi!(SPI3, APB1);
134impl_spi_pin!(SPI3, Sck, PB12, 7); 134impl_spi_pin!(SPI3, SckPin, PB12, 7);
135impl_spi_pin!(SPI3, Sck, PB3, 6); 135impl_spi_pin!(SPI3, SckPin, PB3, 6);
136impl_spi_pin!(SPI3, Miso, PB4, 6); 136impl_spi_pin!(SPI3, MisoPin, PB4, 6);
137impl_spi_pin!(SPI3, Mosi, PB5, 6); 137impl_spi_pin!(SPI3, MosiPin, PB5, 6);
138impl_spi_pin!(SPI3, Sck, PC10, 6); 138impl_spi_pin!(SPI3, SckPin, PC10, 6);
139impl_spi_pin!(SPI3, Miso, PC11, 6); 139impl_spi_pin!(SPI3, MisoPin, PC11, 6);
140impl_spi_pin!(SPI3, Mosi, PC12, 6); 140impl_spi_pin!(SPI3, MosiPin, PC12, 6);
141impl_spi_pin!(SPI3, Mosi, PD6, 5); 141impl_spi_pin!(SPI3, MosiPin, PD6, 5);
142pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 142pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
143impl_spi!(SPI4, APB2); 143impl_spi!(SPI4, APB2);
144impl_spi_pin!(SPI4, Mosi, PA1, 5); 144impl_spi_pin!(SPI4, MosiPin, PA1, 5);
145impl_spi_pin!(SPI4, Miso, PA11, 6); 145impl_spi_pin!(SPI4, MisoPin, PA11, 6);
146impl_spi_pin!(SPI4, Sck, PB13, 6); 146impl_spi_pin!(SPI4, SckPin, PB13, 6);
147pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 147pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
148impl_spi!(SPI5, APB2); 148impl_spi!(SPI5, APB2);
149impl_spi_pin!(SPI5, Mosi, PA10, 6); 149impl_spi_pin!(SPI5, MosiPin, PA10, 6);
150impl_spi_pin!(SPI5, Miso, PA12, 6); 150impl_spi_pin!(SPI5, MisoPin, PA12, 6);
151impl_spi_pin!(SPI5, Sck, PB0, 6); 151impl_spi_pin!(SPI5, SckPin, PB0, 6);
152impl_spi_pin!(SPI5, Mosi, PB8, 6); 152impl_spi_pin!(SPI5, MosiPin, PB8, 6);
153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
154pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 154pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
155impl_usart!(USART1); 155impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412rg.rs b/embassy-stm32/src/pac/stm32f412rg.rs
index 819f0c06c..c390cb26c 100644
--- a/embassy-stm32/src/pac/stm32f412rg.rs
+++ b/embassy-stm32/src/pac/stm32f412rg.rs
@@ -113,43 +113,43 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
113impl_rng!(RNG, RNG); 113impl_rng!(RNG, RNG);
114pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 114pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
115impl_spi!(SPI1, APB2); 115impl_spi!(SPI1, APB2);
116impl_spi_pin!(SPI1, Sck, PA5, 5); 116impl_spi_pin!(SPI1, SckPin, PA5, 5);
117impl_spi_pin!(SPI1, Miso, PA6, 5); 117impl_spi_pin!(SPI1, MisoPin, PA6, 5);
118impl_spi_pin!(SPI1, Mosi, PA7, 5); 118impl_spi_pin!(SPI1, MosiPin, PA7, 5);
119impl_spi_pin!(SPI1, Sck, PB3, 5); 119impl_spi_pin!(SPI1, SckPin, PB3, 5);
120impl_spi_pin!(SPI1, Miso, PB4, 5); 120impl_spi_pin!(SPI1, MisoPin, PB4, 5);
121impl_spi_pin!(SPI1, Mosi, PB5, 5); 121impl_spi_pin!(SPI1, MosiPin, PB5, 5);
122pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 122pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
123impl_spi!(SPI2, APB1); 123impl_spi!(SPI2, APB1);
124impl_spi_pin!(SPI2, Sck, PB10, 5); 124impl_spi_pin!(SPI2, SckPin, PB10, 5);
125impl_spi_pin!(SPI2, Sck, PB13, 5); 125impl_spi_pin!(SPI2, SckPin, PB13, 5);
126impl_spi_pin!(SPI2, Miso, PB14, 5); 126impl_spi_pin!(SPI2, MisoPin, PB14, 5);
127impl_spi_pin!(SPI2, Mosi, PB15, 5); 127impl_spi_pin!(SPI2, MosiPin, PB15, 5);
128impl_spi_pin!(SPI2, Miso, PC2, 5); 128impl_spi_pin!(SPI2, MisoPin, PC2, 5);
129impl_spi_pin!(SPI2, Mosi, PC3, 5); 129impl_spi_pin!(SPI2, MosiPin, PC3, 5);
130impl_spi_pin!(SPI2, Sck, PC7, 5); 130impl_spi_pin!(SPI2, SckPin, PC7, 5);
131impl_spi_pin!(SPI2, Sck, PD3, 5); 131impl_spi_pin!(SPI2, SckPin, PD3, 5);
132pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 132pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
133impl_spi!(SPI3, APB1); 133impl_spi!(SPI3, APB1);
134impl_spi_pin!(SPI3, Sck, PB12, 7); 134impl_spi_pin!(SPI3, SckPin, PB12, 7);
135impl_spi_pin!(SPI3, Sck, PB3, 6); 135impl_spi_pin!(SPI3, SckPin, PB3, 6);
136impl_spi_pin!(SPI3, Miso, PB4, 6); 136impl_spi_pin!(SPI3, MisoPin, PB4, 6);
137impl_spi_pin!(SPI3, Mosi, PB5, 6); 137impl_spi_pin!(SPI3, MosiPin, PB5, 6);
138impl_spi_pin!(SPI3, Sck, PC10, 6); 138impl_spi_pin!(SPI3, SckPin, PC10, 6);
139impl_spi_pin!(SPI3, Miso, PC11, 6); 139impl_spi_pin!(SPI3, MisoPin, PC11, 6);
140impl_spi_pin!(SPI3, Mosi, PC12, 6); 140impl_spi_pin!(SPI3, MosiPin, PC12, 6);
141impl_spi_pin!(SPI3, Mosi, PD6, 5); 141impl_spi_pin!(SPI3, MosiPin, PD6, 5);
142pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 142pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
143impl_spi!(SPI4, APB2); 143impl_spi!(SPI4, APB2);
144impl_spi_pin!(SPI4, Mosi, PA1, 5); 144impl_spi_pin!(SPI4, MosiPin, PA1, 5);
145impl_spi_pin!(SPI4, Miso, PA11, 6); 145impl_spi_pin!(SPI4, MisoPin, PA11, 6);
146impl_spi_pin!(SPI4, Sck, PB13, 6); 146impl_spi_pin!(SPI4, SckPin, PB13, 6);
147pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 147pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
148impl_spi!(SPI5, APB2); 148impl_spi!(SPI5, APB2);
149impl_spi_pin!(SPI5, Mosi, PA10, 6); 149impl_spi_pin!(SPI5, MosiPin, PA10, 6);
150impl_spi_pin!(SPI5, Miso, PA12, 6); 150impl_spi_pin!(SPI5, MisoPin, PA12, 6);
151impl_spi_pin!(SPI5, Sck, PB0, 6); 151impl_spi_pin!(SPI5, SckPin, PB0, 6);
152impl_spi_pin!(SPI5, Mosi, PB8, 6); 152impl_spi_pin!(SPI5, MosiPin, PB8, 6);
153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
154pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 154pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
155impl_usart!(USART1); 155impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412ve.rs b/embassy-stm32/src/pac/stm32f412ve.rs
index 9e109b61f..e951dcd09 100644
--- a/embassy-stm32/src/pac/stm32f412ve.rs
+++ b/embassy-stm32/src/pac/stm32f412ve.rs
@@ -164,55 +164,55 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Sck, PB10, 5); 175impl_spi_pin!(SPI2, SckPin, PB10, 5);
176impl_spi_pin!(SPI2, Sck, PB13, 5); 176impl_spi_pin!(SPI2, SckPin, PB13, 5);
177impl_spi_pin!(SPI2, Miso, PB14, 5); 177impl_spi_pin!(SPI2, MisoPin, PB14, 5);
178impl_spi_pin!(SPI2, Mosi, PB15, 5); 178impl_spi_pin!(SPI2, MosiPin, PB15, 5);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Sck, PB12, 7); 185impl_spi_pin!(SPI3, SckPin, PB12, 7);
186impl_spi_pin!(SPI3, Sck, PB3, 6); 186impl_spi_pin!(SPI3, SckPin, PB3, 6);
187impl_spi_pin!(SPI3, Miso, PB4, 6); 187impl_spi_pin!(SPI3, MisoPin, PB4, 6);
188impl_spi_pin!(SPI3, Mosi, PB5, 6); 188impl_spi_pin!(SPI3, MosiPin, PB5, 6);
189impl_spi_pin!(SPI3, Sck, PC10, 6); 189impl_spi_pin!(SPI3, SckPin, PC10, 6);
190impl_spi_pin!(SPI3, Miso, PC11, 6); 190impl_spi_pin!(SPI3, MisoPin, PC11, 6);
191impl_spi_pin!(SPI3, Mosi, PC12, 6); 191impl_spi_pin!(SPI3, MosiPin, PC12, 6);
192impl_spi_pin!(SPI3, Mosi, PD6, 5); 192impl_spi_pin!(SPI3, MosiPin, PD6, 5);
193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
194impl_spi!(SPI4, APB2); 194impl_spi!(SPI4, APB2);
195impl_spi_pin!(SPI4, Mosi, PA1, 5); 195impl_spi_pin!(SPI4, MosiPin, PA1, 5);
196impl_spi_pin!(SPI4, Miso, PA11, 6); 196impl_spi_pin!(SPI4, MisoPin, PA11, 6);
197impl_spi_pin!(SPI4, Sck, PB13, 6); 197impl_spi_pin!(SPI4, SckPin, PB13, 6);
198impl_spi_pin!(SPI4, Sck, PE12, 5); 198impl_spi_pin!(SPI4, SckPin, PE12, 5);
199impl_spi_pin!(SPI4, Miso, PE13, 5); 199impl_spi_pin!(SPI4, MisoPin, PE13, 5);
200impl_spi_pin!(SPI4, Mosi, PE14, 5); 200impl_spi_pin!(SPI4, MosiPin, PE14, 5);
201impl_spi_pin!(SPI4, Sck, PE2, 5); 201impl_spi_pin!(SPI4, SckPin, PE2, 5);
202impl_spi_pin!(SPI4, Miso, PE5, 5); 202impl_spi_pin!(SPI4, MisoPin, PE5, 5);
203impl_spi_pin!(SPI4, Mosi, PE6, 5); 203impl_spi_pin!(SPI4, MosiPin, PE6, 5);
204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
205impl_spi!(SPI5, APB2); 205impl_spi!(SPI5, APB2);
206impl_spi_pin!(SPI5, Mosi, PA10, 6); 206impl_spi_pin!(SPI5, MosiPin, PA10, 6);
207impl_spi_pin!(SPI5, Miso, PA12, 6); 207impl_spi_pin!(SPI5, MisoPin, PA12, 6);
208impl_spi_pin!(SPI5, Sck, PB0, 6); 208impl_spi_pin!(SPI5, SckPin, PB0, 6);
209impl_spi_pin!(SPI5, Mosi, PB8, 6); 209impl_spi_pin!(SPI5, MosiPin, PB8, 6);
210impl_spi_pin!(SPI5, Sck, PE12, 6); 210impl_spi_pin!(SPI5, SckPin, PE12, 6);
211impl_spi_pin!(SPI5, Miso, PE13, 6); 211impl_spi_pin!(SPI5, MisoPin, PE13, 6);
212impl_spi_pin!(SPI5, Mosi, PE14, 6); 212impl_spi_pin!(SPI5, MosiPin, PE14, 6);
213impl_spi_pin!(SPI5, Sck, PE2, 6); 213impl_spi_pin!(SPI5, SckPin, PE2, 6);
214impl_spi_pin!(SPI5, Miso, PE5, 6); 214impl_spi_pin!(SPI5, MisoPin, PE5, 6);
215impl_spi_pin!(SPI5, Mosi, PE6, 6); 215impl_spi_pin!(SPI5, MosiPin, PE6, 6);
216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
218impl_usart!(USART1); 218impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412vg.rs b/embassy-stm32/src/pac/stm32f412vg.rs
index 9e109b61f..e951dcd09 100644
--- a/embassy-stm32/src/pac/stm32f412vg.rs
+++ b/embassy-stm32/src/pac/stm32f412vg.rs
@@ -164,55 +164,55 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Sck, PB10, 5); 175impl_spi_pin!(SPI2, SckPin, PB10, 5);
176impl_spi_pin!(SPI2, Sck, PB13, 5); 176impl_spi_pin!(SPI2, SckPin, PB13, 5);
177impl_spi_pin!(SPI2, Miso, PB14, 5); 177impl_spi_pin!(SPI2, MisoPin, PB14, 5);
178impl_spi_pin!(SPI2, Mosi, PB15, 5); 178impl_spi_pin!(SPI2, MosiPin, PB15, 5);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Sck, PB12, 7); 185impl_spi_pin!(SPI3, SckPin, PB12, 7);
186impl_spi_pin!(SPI3, Sck, PB3, 6); 186impl_spi_pin!(SPI3, SckPin, PB3, 6);
187impl_spi_pin!(SPI3, Miso, PB4, 6); 187impl_spi_pin!(SPI3, MisoPin, PB4, 6);
188impl_spi_pin!(SPI3, Mosi, PB5, 6); 188impl_spi_pin!(SPI3, MosiPin, PB5, 6);
189impl_spi_pin!(SPI3, Sck, PC10, 6); 189impl_spi_pin!(SPI3, SckPin, PC10, 6);
190impl_spi_pin!(SPI3, Miso, PC11, 6); 190impl_spi_pin!(SPI3, MisoPin, PC11, 6);
191impl_spi_pin!(SPI3, Mosi, PC12, 6); 191impl_spi_pin!(SPI3, MosiPin, PC12, 6);
192impl_spi_pin!(SPI3, Mosi, PD6, 5); 192impl_spi_pin!(SPI3, MosiPin, PD6, 5);
193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
194impl_spi!(SPI4, APB2); 194impl_spi!(SPI4, APB2);
195impl_spi_pin!(SPI4, Mosi, PA1, 5); 195impl_spi_pin!(SPI4, MosiPin, PA1, 5);
196impl_spi_pin!(SPI4, Miso, PA11, 6); 196impl_spi_pin!(SPI4, MisoPin, PA11, 6);
197impl_spi_pin!(SPI4, Sck, PB13, 6); 197impl_spi_pin!(SPI4, SckPin, PB13, 6);
198impl_spi_pin!(SPI4, Sck, PE12, 5); 198impl_spi_pin!(SPI4, SckPin, PE12, 5);
199impl_spi_pin!(SPI4, Miso, PE13, 5); 199impl_spi_pin!(SPI4, MisoPin, PE13, 5);
200impl_spi_pin!(SPI4, Mosi, PE14, 5); 200impl_spi_pin!(SPI4, MosiPin, PE14, 5);
201impl_spi_pin!(SPI4, Sck, PE2, 5); 201impl_spi_pin!(SPI4, SckPin, PE2, 5);
202impl_spi_pin!(SPI4, Miso, PE5, 5); 202impl_spi_pin!(SPI4, MisoPin, PE5, 5);
203impl_spi_pin!(SPI4, Mosi, PE6, 5); 203impl_spi_pin!(SPI4, MosiPin, PE6, 5);
204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
205impl_spi!(SPI5, APB2); 205impl_spi!(SPI5, APB2);
206impl_spi_pin!(SPI5, Mosi, PA10, 6); 206impl_spi_pin!(SPI5, MosiPin, PA10, 6);
207impl_spi_pin!(SPI5, Miso, PA12, 6); 207impl_spi_pin!(SPI5, MisoPin, PA12, 6);
208impl_spi_pin!(SPI5, Sck, PB0, 6); 208impl_spi_pin!(SPI5, SckPin, PB0, 6);
209impl_spi_pin!(SPI5, Mosi, PB8, 6); 209impl_spi_pin!(SPI5, MosiPin, PB8, 6);
210impl_spi_pin!(SPI5, Sck, PE12, 6); 210impl_spi_pin!(SPI5, SckPin, PE12, 6);
211impl_spi_pin!(SPI5, Miso, PE13, 6); 211impl_spi_pin!(SPI5, MisoPin, PE13, 6);
212impl_spi_pin!(SPI5, Mosi, PE14, 6); 212impl_spi_pin!(SPI5, MosiPin, PE14, 6);
213impl_spi_pin!(SPI5, Sck, PE2, 6); 213impl_spi_pin!(SPI5, SckPin, PE2, 6);
214impl_spi_pin!(SPI5, Miso, PE5, 6); 214impl_spi_pin!(SPI5, MisoPin, PE5, 6);
215impl_spi_pin!(SPI5, Mosi, PE6, 6); 215impl_spi_pin!(SPI5, MosiPin, PE6, 6);
216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
218impl_usart!(USART1); 218impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412ze.rs b/embassy-stm32/src/pac/stm32f412ze.rs
index 9e109b61f..e951dcd09 100644
--- a/embassy-stm32/src/pac/stm32f412ze.rs
+++ b/embassy-stm32/src/pac/stm32f412ze.rs
@@ -164,55 +164,55 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Sck, PB10, 5); 175impl_spi_pin!(SPI2, SckPin, PB10, 5);
176impl_spi_pin!(SPI2, Sck, PB13, 5); 176impl_spi_pin!(SPI2, SckPin, PB13, 5);
177impl_spi_pin!(SPI2, Miso, PB14, 5); 177impl_spi_pin!(SPI2, MisoPin, PB14, 5);
178impl_spi_pin!(SPI2, Mosi, PB15, 5); 178impl_spi_pin!(SPI2, MosiPin, PB15, 5);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Sck, PB12, 7); 185impl_spi_pin!(SPI3, SckPin, PB12, 7);
186impl_spi_pin!(SPI3, Sck, PB3, 6); 186impl_spi_pin!(SPI3, SckPin, PB3, 6);
187impl_spi_pin!(SPI3, Miso, PB4, 6); 187impl_spi_pin!(SPI3, MisoPin, PB4, 6);
188impl_spi_pin!(SPI3, Mosi, PB5, 6); 188impl_spi_pin!(SPI3, MosiPin, PB5, 6);
189impl_spi_pin!(SPI3, Sck, PC10, 6); 189impl_spi_pin!(SPI3, SckPin, PC10, 6);
190impl_spi_pin!(SPI3, Miso, PC11, 6); 190impl_spi_pin!(SPI3, MisoPin, PC11, 6);
191impl_spi_pin!(SPI3, Mosi, PC12, 6); 191impl_spi_pin!(SPI3, MosiPin, PC12, 6);
192impl_spi_pin!(SPI3, Mosi, PD6, 5); 192impl_spi_pin!(SPI3, MosiPin, PD6, 5);
193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
194impl_spi!(SPI4, APB2); 194impl_spi!(SPI4, APB2);
195impl_spi_pin!(SPI4, Mosi, PA1, 5); 195impl_spi_pin!(SPI4, MosiPin, PA1, 5);
196impl_spi_pin!(SPI4, Miso, PA11, 6); 196impl_spi_pin!(SPI4, MisoPin, PA11, 6);
197impl_spi_pin!(SPI4, Sck, PB13, 6); 197impl_spi_pin!(SPI4, SckPin, PB13, 6);
198impl_spi_pin!(SPI4, Sck, PE12, 5); 198impl_spi_pin!(SPI4, SckPin, PE12, 5);
199impl_spi_pin!(SPI4, Miso, PE13, 5); 199impl_spi_pin!(SPI4, MisoPin, PE13, 5);
200impl_spi_pin!(SPI4, Mosi, PE14, 5); 200impl_spi_pin!(SPI4, MosiPin, PE14, 5);
201impl_spi_pin!(SPI4, Sck, PE2, 5); 201impl_spi_pin!(SPI4, SckPin, PE2, 5);
202impl_spi_pin!(SPI4, Miso, PE5, 5); 202impl_spi_pin!(SPI4, MisoPin, PE5, 5);
203impl_spi_pin!(SPI4, Mosi, PE6, 5); 203impl_spi_pin!(SPI4, MosiPin, PE6, 5);
204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
205impl_spi!(SPI5, APB2); 205impl_spi!(SPI5, APB2);
206impl_spi_pin!(SPI5, Mosi, PA10, 6); 206impl_spi_pin!(SPI5, MosiPin, PA10, 6);
207impl_spi_pin!(SPI5, Miso, PA12, 6); 207impl_spi_pin!(SPI5, MisoPin, PA12, 6);
208impl_spi_pin!(SPI5, Sck, PB0, 6); 208impl_spi_pin!(SPI5, SckPin, PB0, 6);
209impl_spi_pin!(SPI5, Mosi, PB8, 6); 209impl_spi_pin!(SPI5, MosiPin, PB8, 6);
210impl_spi_pin!(SPI5, Sck, PE12, 6); 210impl_spi_pin!(SPI5, SckPin, PE12, 6);
211impl_spi_pin!(SPI5, Miso, PE13, 6); 211impl_spi_pin!(SPI5, MisoPin, PE13, 6);
212impl_spi_pin!(SPI5, Mosi, PE14, 6); 212impl_spi_pin!(SPI5, MosiPin, PE14, 6);
213impl_spi_pin!(SPI5, Sck, PE2, 6); 213impl_spi_pin!(SPI5, SckPin, PE2, 6);
214impl_spi_pin!(SPI5, Miso, PE5, 6); 214impl_spi_pin!(SPI5, MisoPin, PE5, 6);
215impl_spi_pin!(SPI5, Mosi, PE6, 6); 215impl_spi_pin!(SPI5, MosiPin, PE6, 6);
216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
218impl_usart!(USART1); 218impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f412zg.rs b/embassy-stm32/src/pac/stm32f412zg.rs
index 9e109b61f..e951dcd09 100644
--- a/embassy-stm32/src/pac/stm32f412zg.rs
+++ b/embassy-stm32/src/pac/stm32f412zg.rs
@@ -164,55 +164,55 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Sck, PB10, 5); 175impl_spi_pin!(SPI2, SckPin, PB10, 5);
176impl_spi_pin!(SPI2, Sck, PB13, 5); 176impl_spi_pin!(SPI2, SckPin, PB13, 5);
177impl_spi_pin!(SPI2, Miso, PB14, 5); 177impl_spi_pin!(SPI2, MisoPin, PB14, 5);
178impl_spi_pin!(SPI2, Mosi, PB15, 5); 178impl_spi_pin!(SPI2, MosiPin, PB15, 5);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Sck, PB12, 7); 185impl_spi_pin!(SPI3, SckPin, PB12, 7);
186impl_spi_pin!(SPI3, Sck, PB3, 6); 186impl_spi_pin!(SPI3, SckPin, PB3, 6);
187impl_spi_pin!(SPI3, Miso, PB4, 6); 187impl_spi_pin!(SPI3, MisoPin, PB4, 6);
188impl_spi_pin!(SPI3, Mosi, PB5, 6); 188impl_spi_pin!(SPI3, MosiPin, PB5, 6);
189impl_spi_pin!(SPI3, Sck, PC10, 6); 189impl_spi_pin!(SPI3, SckPin, PC10, 6);
190impl_spi_pin!(SPI3, Miso, PC11, 6); 190impl_spi_pin!(SPI3, MisoPin, PC11, 6);
191impl_spi_pin!(SPI3, Mosi, PC12, 6); 191impl_spi_pin!(SPI3, MosiPin, PC12, 6);
192impl_spi_pin!(SPI3, Mosi, PD6, 5); 192impl_spi_pin!(SPI3, MosiPin, PD6, 5);
193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 193pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
194impl_spi!(SPI4, APB2); 194impl_spi!(SPI4, APB2);
195impl_spi_pin!(SPI4, Mosi, PA1, 5); 195impl_spi_pin!(SPI4, MosiPin, PA1, 5);
196impl_spi_pin!(SPI4, Miso, PA11, 6); 196impl_spi_pin!(SPI4, MisoPin, PA11, 6);
197impl_spi_pin!(SPI4, Sck, PB13, 6); 197impl_spi_pin!(SPI4, SckPin, PB13, 6);
198impl_spi_pin!(SPI4, Sck, PE12, 5); 198impl_spi_pin!(SPI4, SckPin, PE12, 5);
199impl_spi_pin!(SPI4, Miso, PE13, 5); 199impl_spi_pin!(SPI4, MisoPin, PE13, 5);
200impl_spi_pin!(SPI4, Mosi, PE14, 5); 200impl_spi_pin!(SPI4, MosiPin, PE14, 5);
201impl_spi_pin!(SPI4, Sck, PE2, 5); 201impl_spi_pin!(SPI4, SckPin, PE2, 5);
202impl_spi_pin!(SPI4, Miso, PE5, 5); 202impl_spi_pin!(SPI4, MisoPin, PE5, 5);
203impl_spi_pin!(SPI4, Mosi, PE6, 5); 203impl_spi_pin!(SPI4, MosiPin, PE6, 5);
204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 204pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
205impl_spi!(SPI5, APB2); 205impl_spi!(SPI5, APB2);
206impl_spi_pin!(SPI5, Mosi, PA10, 6); 206impl_spi_pin!(SPI5, MosiPin, PA10, 6);
207impl_spi_pin!(SPI5, Miso, PA12, 6); 207impl_spi_pin!(SPI5, MisoPin, PA12, 6);
208impl_spi_pin!(SPI5, Sck, PB0, 6); 208impl_spi_pin!(SPI5, SckPin, PB0, 6);
209impl_spi_pin!(SPI5, Mosi, PB8, 6); 209impl_spi_pin!(SPI5, MosiPin, PB8, 6);
210impl_spi_pin!(SPI5, Sck, PE12, 6); 210impl_spi_pin!(SPI5, SckPin, PE12, 6);
211impl_spi_pin!(SPI5, Miso, PE13, 6); 211impl_spi_pin!(SPI5, MisoPin, PE13, 6);
212impl_spi_pin!(SPI5, Mosi, PE14, 6); 212impl_spi_pin!(SPI5, MosiPin, PE14, 6);
213impl_spi_pin!(SPI5, Sck, PE2, 6); 213impl_spi_pin!(SPI5, SckPin, PE2, 6);
214impl_spi_pin!(SPI5, Miso, PE5, 6); 214impl_spi_pin!(SPI5, MisoPin, PE5, 6);
215impl_spi_pin!(SPI5, Mosi, PE6, 6); 215impl_spi_pin!(SPI5, MosiPin, PE6, 6);
216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 216pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 217pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
218impl_usart!(USART1); 218impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413cg.rs b/embassy-stm32/src/pac/stm32f413cg.rs
index f74b0f400..d826ffc9d 100644
--- a/embassy-stm32/src/pac/stm32f413cg.rs
+++ b/embassy-stm32/src/pac/stm32f413cg.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413ch.rs b/embassy-stm32/src/pac/stm32f413ch.rs
index f74b0f400..d826ffc9d 100644
--- a/embassy-stm32/src/pac/stm32f413ch.rs
+++ b/embassy-stm32/src/pac/stm32f413ch.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413mg.rs b/embassy-stm32/src/pac/stm32f413mg.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413mg.rs
+++ b/embassy-stm32/src/pac/stm32f413mg.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413mh.rs b/embassy-stm32/src/pac/stm32f413mh.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413mh.rs
+++ b/embassy-stm32/src/pac/stm32f413mh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413rg.rs b/embassy-stm32/src/pac/stm32f413rg.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413rg.rs
+++ b/embassy-stm32/src/pac/stm32f413rg.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413rh.rs b/embassy-stm32/src/pac/stm32f413rh.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413rh.rs
+++ b/embassy-stm32/src/pac/stm32f413rh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413vg.rs b/embassy-stm32/src/pac/stm32f413vg.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413vg.rs
+++ b/embassy-stm32/src/pac/stm32f413vg.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413vh.rs b/embassy-stm32/src/pac/stm32f413vh.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413vh.rs
+++ b/embassy-stm32/src/pac/stm32f413vh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413zg.rs b/embassy-stm32/src/pac/stm32f413zg.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413zg.rs
+++ b/embassy-stm32/src/pac/stm32f413zg.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f413zh.rs b/embassy-stm32/src/pac/stm32f413zh.rs
index f2cd2b65d..7064cf6d3 100644
--- a/embassy-stm32/src/pac/stm32f413zh.rs
+++ b/embassy-stm32/src/pac/stm32f413zh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f415og.rs b/embassy-stm32/src/pac/stm32f415og.rs
index 490a8c54e..212f6befd 100644
--- a/embassy-stm32/src/pac/stm32f415og.rs
+++ b/embassy-stm32/src/pac/stm32f415og.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f415rg.rs b/embassy-stm32/src/pac/stm32f415rg.rs
index 490a8c54e..212f6befd 100644
--- a/embassy-stm32/src/pac/stm32f415rg.rs
+++ b/embassy-stm32/src/pac/stm32f415rg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f415vg.rs b/embassy-stm32/src/pac/stm32f415vg.rs
index 490a8c54e..212f6befd 100644
--- a/embassy-stm32/src/pac/stm32f415vg.rs
+++ b/embassy-stm32/src/pac/stm32f415vg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f415zg.rs b/embassy-stm32/src/pac/stm32f415zg.rs
index 490a8c54e..212f6befd 100644
--- a/embassy-stm32/src/pac/stm32f415zg.rs
+++ b/embassy-stm32/src/pac/stm32f415zg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f417ie.rs b/embassy-stm32/src/pac/stm32f417ie.rs
index 04a3e952a..4cdc36b6c 100644
--- a/embassy-stm32/src/pac/stm32f417ie.rs
+++ b/embassy-stm32/src/pac/stm32f417ie.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f417ig.rs b/embassy-stm32/src/pac/stm32f417ig.rs
index 04a3e952a..4cdc36b6c 100644
--- a/embassy-stm32/src/pac/stm32f417ig.rs
+++ b/embassy-stm32/src/pac/stm32f417ig.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f417ve.rs b/embassy-stm32/src/pac/stm32f417ve.rs
index 04a3e952a..4cdc36b6c 100644
--- a/embassy-stm32/src/pac/stm32f417ve.rs
+++ b/embassy-stm32/src/pac/stm32f417ve.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f417vg.rs b/embassy-stm32/src/pac/stm32f417vg.rs
index 04a3e952a..4cdc36b6c 100644
--- a/embassy-stm32/src/pac/stm32f417vg.rs
+++ b/embassy-stm32/src/pac/stm32f417vg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f417ze.rs b/embassy-stm32/src/pac/stm32f417ze.rs
index 04a3e952a..4cdc36b6c 100644
--- a/embassy-stm32/src/pac/stm32f417ze.rs
+++ b/embassy-stm32/src/pac/stm32f417ze.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f417zg.rs b/embassy-stm32/src/pac/stm32f417zg.rs
index 04a3e952a..4cdc36b6c 100644
--- a/embassy-stm32/src/pac/stm32f417zg.rs
+++ b/embassy-stm32/src/pac/stm32f417zg.rs
@@ -181,31 +181,31 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA5, 5); 184impl_spi_pin!(SPI1, SckPin, PA5, 5);
185impl_spi_pin!(SPI1, Miso, PA6, 5); 185impl_spi_pin!(SPI1, MisoPin, PA6, 5);
186impl_spi_pin!(SPI1, Mosi, PA7, 5); 186impl_spi_pin!(SPI1, MosiPin, PA7, 5);
187impl_spi_pin!(SPI1, Sck, PB3, 5); 187impl_spi_pin!(SPI1, SckPin, PB3, 5);
188impl_spi_pin!(SPI1, Miso, PB4, 5); 188impl_spi_pin!(SPI1, MisoPin, PB4, 5);
189impl_spi_pin!(SPI1, Mosi, PB5, 5); 189impl_spi_pin!(SPI1, MosiPin, PB5, 5);
190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 190pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
191impl_spi!(SPI2, APB1); 191impl_spi!(SPI2, APB1);
192impl_spi_pin!(SPI2, Sck, PB10, 5); 192impl_spi_pin!(SPI2, SckPin, PB10, 5);
193impl_spi_pin!(SPI2, Sck, PB13, 5); 193impl_spi_pin!(SPI2, SckPin, PB13, 5);
194impl_spi_pin!(SPI2, Miso, PB14, 5); 194impl_spi_pin!(SPI2, MisoPin, PB14, 5);
195impl_spi_pin!(SPI2, Mosi, PB15, 5); 195impl_spi_pin!(SPI2, MosiPin, PB15, 5);
196impl_spi_pin!(SPI2, Miso, PC2, 5); 196impl_spi_pin!(SPI2, MisoPin, PC2, 5);
197impl_spi_pin!(SPI2, Mosi, PC3, 5); 197impl_spi_pin!(SPI2, MosiPin, PC3, 5);
198impl_spi_pin!(SPI2, Sck, PI1, 5); 198impl_spi_pin!(SPI2, SckPin, PI1, 5);
199impl_spi_pin!(SPI2, Miso, PI2, 5); 199impl_spi_pin!(SPI2, MisoPin, PI2, 5);
200impl_spi_pin!(SPI2, Mosi, PI3, 5); 200impl_spi_pin!(SPI2, MosiPin, PI3, 5);
201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 201pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
202impl_spi!(SPI3, APB1); 202impl_spi!(SPI3, APB1);
203impl_spi_pin!(SPI3, Sck, PB3, 6); 203impl_spi_pin!(SPI3, SckPin, PB3, 6);
204impl_spi_pin!(SPI3, Miso, PB4, 6); 204impl_spi_pin!(SPI3, MisoPin, PB4, 6);
205impl_spi_pin!(SPI3, Mosi, PB5, 6); 205impl_spi_pin!(SPI3, MosiPin, PB5, 6);
206impl_spi_pin!(SPI3, Sck, PC10, 6); 206impl_spi_pin!(SPI3, SckPin, PC10, 6);
207impl_spi_pin!(SPI3, Miso, PC11, 6); 207impl_spi_pin!(SPI3, MisoPin, PC11, 6);
208impl_spi_pin!(SPI3, Mosi, PC12, 6); 208impl_spi_pin!(SPI3, MosiPin, PC12, 6);
209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 209pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 210pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
211impl_usart!(USART1); 211impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f423ch.rs b/embassy-stm32/src/pac/stm32f423ch.rs
index 239676a63..5ba7b6eb5 100644
--- a/embassy-stm32/src/pac/stm32f423ch.rs
+++ b/embassy-stm32/src/pac/stm32f423ch.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f423mh.rs b/embassy-stm32/src/pac/stm32f423mh.rs
index 0708def54..5f6f0feee 100644
--- a/embassy-stm32/src/pac/stm32f423mh.rs
+++ b/embassy-stm32/src/pac/stm32f423mh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f423rh.rs b/embassy-stm32/src/pac/stm32f423rh.rs
index 0708def54..5f6f0feee 100644
--- a/embassy-stm32/src/pac/stm32f423rh.rs
+++ b/embassy-stm32/src/pac/stm32f423rh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f423vh.rs b/embassy-stm32/src/pac/stm32f423vh.rs
index 0708def54..5f6f0feee 100644
--- a/embassy-stm32/src/pac/stm32f423vh.rs
+++ b/embassy-stm32/src/pac/stm32f423vh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f423zh.rs b/embassy-stm32/src/pac/stm32f423zh.rs
index 0708def54..5f6f0feee 100644
--- a/embassy-stm32/src/pac/stm32f423zh.rs
+++ b/embassy-stm32/src/pac/stm32f423zh.rs
@@ -164,58 +164,58 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
164impl_rng!(RNG, RNG); 164impl_rng!(RNG, RNG);
165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 165pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
166impl_spi!(SPI1, APB2); 166impl_spi!(SPI1, APB2);
167impl_spi_pin!(SPI1, Sck, PA5, 5); 167impl_spi_pin!(SPI1, SckPin, PA5, 5);
168impl_spi_pin!(SPI1, Miso, PA6, 5); 168impl_spi_pin!(SPI1, MisoPin, PA6, 5);
169impl_spi_pin!(SPI1, Mosi, PA7, 5); 169impl_spi_pin!(SPI1, MosiPin, PA7, 5);
170impl_spi_pin!(SPI1, Sck, PB3, 5); 170impl_spi_pin!(SPI1, SckPin, PB3, 5);
171impl_spi_pin!(SPI1, Miso, PB4, 5); 171impl_spi_pin!(SPI1, MisoPin, PB4, 5);
172impl_spi_pin!(SPI1, Mosi, PB5, 5); 172impl_spi_pin!(SPI1, MosiPin, PB5, 5);
173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 173pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
174impl_spi!(SPI2, APB1); 174impl_spi!(SPI2, APB1);
175impl_spi_pin!(SPI2, Mosi, PA10, 5); 175impl_spi_pin!(SPI2, MosiPin, PA10, 5);
176impl_spi_pin!(SPI2, Miso, PA12, 5); 176impl_spi_pin!(SPI2, MisoPin, PA12, 5);
177impl_spi_pin!(SPI2, Sck, PA9, 5); 177impl_spi_pin!(SPI2, SckPin, PA9, 5);
178impl_spi_pin!(SPI2, Sck, PB10, 5); 178impl_spi_pin!(SPI2, SckPin, PB10, 5);
179impl_spi_pin!(SPI2, Sck, PB13, 5); 179impl_spi_pin!(SPI2, SckPin, PB13, 5);
180impl_spi_pin!(SPI2, Miso, PB14, 5); 180impl_spi_pin!(SPI2, MisoPin, PB14, 5);
181impl_spi_pin!(SPI2, Mosi, PB15, 5); 181impl_spi_pin!(SPI2, MosiPin, PB15, 5);
182impl_spi_pin!(SPI2, Miso, PC2, 5); 182impl_spi_pin!(SPI2, MisoPin, PC2, 5);
183impl_spi_pin!(SPI2, Mosi, PC3, 5); 183impl_spi_pin!(SPI2, MosiPin, PC3, 5);
184impl_spi_pin!(SPI2, Sck, PC7, 5); 184impl_spi_pin!(SPI2, SckPin, PC7, 5);
185impl_spi_pin!(SPI2, Sck, PD3, 5); 185impl_spi_pin!(SPI2, SckPin, PD3, 5);
186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 186pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
187impl_spi!(SPI3, APB1); 187impl_spi!(SPI3, APB1);
188impl_spi_pin!(SPI3, Sck, PB12, 7); 188impl_spi_pin!(SPI3, SckPin, PB12, 7);
189impl_spi_pin!(SPI3, Sck, PB3, 6); 189impl_spi_pin!(SPI3, SckPin, PB3, 6);
190impl_spi_pin!(SPI3, Miso, PB4, 6); 190impl_spi_pin!(SPI3, MisoPin, PB4, 6);
191impl_spi_pin!(SPI3, Mosi, PB5, 6); 191impl_spi_pin!(SPI3, MosiPin, PB5, 6);
192impl_spi_pin!(SPI3, Sck, PC10, 6); 192impl_spi_pin!(SPI3, SckPin, PC10, 6);
193impl_spi_pin!(SPI3, Miso, PC11, 6); 193impl_spi_pin!(SPI3, MisoPin, PC11, 6);
194impl_spi_pin!(SPI3, Mosi, PC12, 6); 194impl_spi_pin!(SPI3, MosiPin, PC12, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Mosi, PA1, 5); 198impl_spi_pin!(SPI4, MosiPin, PA1, 5);
199impl_spi_pin!(SPI4, Miso, PA11, 6); 199impl_spi_pin!(SPI4, MisoPin, PA11, 6);
200impl_spi_pin!(SPI4, Sck, PB13, 6); 200impl_spi_pin!(SPI4, SckPin, PB13, 6);
201impl_spi_pin!(SPI4, Sck, PE12, 5); 201impl_spi_pin!(SPI4, SckPin, PE12, 5);
202impl_spi_pin!(SPI4, Miso, PE13, 5); 202impl_spi_pin!(SPI4, MisoPin, PE13, 5);
203impl_spi_pin!(SPI4, Mosi, PE14, 5); 203impl_spi_pin!(SPI4, MosiPin, PE14, 5);
204impl_spi_pin!(SPI4, Sck, PE2, 5); 204impl_spi_pin!(SPI4, SckPin, PE2, 5);
205impl_spi_pin!(SPI4, Miso, PE5, 5); 205impl_spi_pin!(SPI4, MisoPin, PE5, 5);
206impl_spi_pin!(SPI4, Mosi, PE6, 5); 206impl_spi_pin!(SPI4, MosiPin, PE6, 5);
207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 207pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
208impl_spi!(SPI5, APB2); 208impl_spi!(SPI5, APB2);
209impl_spi_pin!(SPI5, Mosi, PA10, 6); 209impl_spi_pin!(SPI5, MosiPin, PA10, 6);
210impl_spi_pin!(SPI5, Miso, PA12, 6); 210impl_spi_pin!(SPI5, MisoPin, PA12, 6);
211impl_spi_pin!(SPI5, Sck, PB0, 6); 211impl_spi_pin!(SPI5, SckPin, PB0, 6);
212impl_spi_pin!(SPI5, Mosi, PB8, 6); 212impl_spi_pin!(SPI5, MosiPin, PB8, 6);
213impl_spi_pin!(SPI5, Sck, PE12, 6); 213impl_spi_pin!(SPI5, SckPin, PE12, 6);
214impl_spi_pin!(SPI5, Miso, PE13, 6); 214impl_spi_pin!(SPI5, MisoPin, PE13, 6);
215impl_spi_pin!(SPI5, Mosi, PE14, 6); 215impl_spi_pin!(SPI5, MosiPin, PE14, 6);
216impl_spi_pin!(SPI5, Sck, PE2, 6); 216impl_spi_pin!(SPI5, SckPin, PE2, 6);
217impl_spi_pin!(SPI5, Miso, PE5, 6); 217impl_spi_pin!(SPI5, MisoPin, PE5, 6);
218impl_spi_pin!(SPI5, Mosi, PE6, 6); 218impl_spi_pin!(SPI5, MosiPin, PE6, 6);
219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 219pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 220pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
221impl_usart!(USART1); 221impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427ag.rs b/embassy-stm32/src/pac/stm32f427ag.rs
index bd166eb91..482d05539 100644
--- a/embassy-stm32/src/pac/stm32f427ag.rs
+++ b/embassy-stm32/src/pac/stm32f427ag.rs
@@ -215,49 +215,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
263impl_usart!(USART1); 263impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427ai.rs b/embassy-stm32/src/pac/stm32f427ai.rs
index bd166eb91..482d05539 100644
--- a/embassy-stm32/src/pac/stm32f427ai.rs
+++ b/embassy-stm32/src/pac/stm32f427ai.rs
@@ -215,49 +215,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
263impl_usart!(USART1); 263impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427ig.rs b/embassy-stm32/src/pac/stm32f427ig.rs
index 6d811e913..264fb1751 100644
--- a/embassy-stm32/src/pac/stm32f427ig.rs
+++ b/embassy-stm32/src/pac/stm32f427ig.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427ii.rs b/embassy-stm32/src/pac/stm32f427ii.rs
index 6d811e913..264fb1751 100644
--- a/embassy-stm32/src/pac/stm32f427ii.rs
+++ b/embassy-stm32/src/pac/stm32f427ii.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427vg.rs b/embassy-stm32/src/pac/stm32f427vg.rs
index a3481b099..91b33ba5d 100644
--- a/embassy-stm32/src/pac/stm32f427vg.rs
+++ b/embassy-stm32/src/pac/stm32f427vg.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427vi.rs b/embassy-stm32/src/pac/stm32f427vi.rs
index a3481b099..91b33ba5d 100644
--- a/embassy-stm32/src/pac/stm32f427vi.rs
+++ b/embassy-stm32/src/pac/stm32f427vi.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427zg.rs b/embassy-stm32/src/pac/stm32f427zg.rs
index 6d811e913..264fb1751 100644
--- a/embassy-stm32/src/pac/stm32f427zg.rs
+++ b/embassy-stm32/src/pac/stm32f427zg.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f427zi.rs b/embassy-stm32/src/pac/stm32f427zi.rs
index 6d811e913..264fb1751 100644
--- a/embassy-stm32/src/pac/stm32f427zi.rs
+++ b/embassy-stm32/src/pac/stm32f427zi.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ag.rs b/embassy-stm32/src/pac/stm32f429ag.rs
index 7b973e44c..ce1caee68 100644
--- a/embassy-stm32/src/pac/stm32f429ag.rs
+++ b/embassy-stm32/src/pac/stm32f429ag.rs
@@ -215,49 +215,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
263impl_usart!(USART1); 263impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ai.rs b/embassy-stm32/src/pac/stm32f429ai.rs
index 7b973e44c..ce1caee68 100644
--- a/embassy-stm32/src/pac/stm32f429ai.rs
+++ b/embassy-stm32/src/pac/stm32f429ai.rs
@@ -215,49 +215,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
263impl_usart!(USART1); 263impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429be.rs b/embassy-stm32/src/pac/stm32f429be.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429be.rs
+++ b/embassy-stm32/src/pac/stm32f429be.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429bg.rs b/embassy-stm32/src/pac/stm32f429bg.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429bg.rs
+++ b/embassy-stm32/src/pac/stm32f429bg.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429bi.rs b/embassy-stm32/src/pac/stm32f429bi.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429bi.rs
+++ b/embassy-stm32/src/pac/stm32f429bi.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ie.rs b/embassy-stm32/src/pac/stm32f429ie.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429ie.rs
+++ b/embassy-stm32/src/pac/stm32f429ie.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ig.rs b/embassy-stm32/src/pac/stm32f429ig.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429ig.rs
+++ b/embassy-stm32/src/pac/stm32f429ig.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ii.rs b/embassy-stm32/src/pac/stm32f429ii.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429ii.rs
+++ b/embassy-stm32/src/pac/stm32f429ii.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ne.rs b/embassy-stm32/src/pac/stm32f429ne.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429ne.rs
+++ b/embassy-stm32/src/pac/stm32f429ne.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ng.rs b/embassy-stm32/src/pac/stm32f429ng.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429ng.rs
+++ b/embassy-stm32/src/pac/stm32f429ng.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ni.rs b/embassy-stm32/src/pac/stm32f429ni.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429ni.rs
+++ b/embassy-stm32/src/pac/stm32f429ni.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ve.rs b/embassy-stm32/src/pac/stm32f429ve.rs
index bc50d0d0b..1d8b1c7c4 100644
--- a/embassy-stm32/src/pac/stm32f429ve.rs
+++ b/embassy-stm32/src/pac/stm32f429ve.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429vg.rs b/embassy-stm32/src/pac/stm32f429vg.rs
index bc50d0d0b..1d8b1c7c4 100644
--- a/embassy-stm32/src/pac/stm32f429vg.rs
+++ b/embassy-stm32/src/pac/stm32f429vg.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429vi.rs b/embassy-stm32/src/pac/stm32f429vi.rs
index bc50d0d0b..1d8b1c7c4 100644
--- a/embassy-stm32/src/pac/stm32f429vi.rs
+++ b/embassy-stm32/src/pac/stm32f429vi.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429ze.rs b/embassy-stm32/src/pac/stm32f429ze.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429ze.rs
+++ b/embassy-stm32/src/pac/stm32f429ze.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429zg.rs b/embassy-stm32/src/pac/stm32f429zg.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429zg.rs
+++ b/embassy-stm32/src/pac/stm32f429zg.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f429zi.rs b/embassy-stm32/src/pac/stm32f429zi.rs
index 9a4d45b1a..656c87e07 100644
--- a/embassy-stm32/src/pac/stm32f429zi.rs
+++ b/embassy-stm32/src/pac/stm32f429zi.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f437ai.rs b/embassy-stm32/src/pac/stm32f437ai.rs
index 83748a01f..6d5351b44 100644
--- a/embassy-stm32/src/pac/stm32f437ai.rs
+++ b/embassy-stm32/src/pac/stm32f437ai.rs
@@ -215,49 +215,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
263impl_usart!(USART1); 263impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f437ig.rs b/embassy-stm32/src/pac/stm32f437ig.rs
index 30c8712e0..8bdfb2d0d 100644
--- a/embassy-stm32/src/pac/stm32f437ig.rs
+++ b/embassy-stm32/src/pac/stm32f437ig.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f437ii.rs b/embassy-stm32/src/pac/stm32f437ii.rs
index 30c8712e0..8bdfb2d0d 100644
--- a/embassy-stm32/src/pac/stm32f437ii.rs
+++ b/embassy-stm32/src/pac/stm32f437ii.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f437vg.rs b/embassy-stm32/src/pac/stm32f437vg.rs
index f7059b8a9..f3d6048db 100644
--- a/embassy-stm32/src/pac/stm32f437vg.rs
+++ b/embassy-stm32/src/pac/stm32f437vg.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f437vi.rs b/embassy-stm32/src/pac/stm32f437vi.rs
index f7059b8a9..f3d6048db 100644
--- a/embassy-stm32/src/pac/stm32f437vi.rs
+++ b/embassy-stm32/src/pac/stm32f437vi.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f437zg.rs b/embassy-stm32/src/pac/stm32f437zg.rs
index 30c8712e0..8bdfb2d0d 100644
--- a/embassy-stm32/src/pac/stm32f437zg.rs
+++ b/embassy-stm32/src/pac/stm32f437zg.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f437zi.rs b/embassy-stm32/src/pac/stm32f437zi.rs
index 30c8712e0..8bdfb2d0d 100644
--- a/embassy-stm32/src/pac/stm32f437zi.rs
+++ b/embassy-stm32/src/pac/stm32f437zi.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439ai.rs b/embassy-stm32/src/pac/stm32f439ai.rs
index 128ffc57e..cd06ea3a6 100644
--- a/embassy-stm32/src/pac/stm32f439ai.rs
+++ b/embassy-stm32/src/pac/stm32f439ai.rs
@@ -215,49 +215,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 261pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 262pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
263impl_usart!(USART1); 263impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439bg.rs b/embassy-stm32/src/pac/stm32f439bg.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439bg.rs
+++ b/embassy-stm32/src/pac/stm32f439bg.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439bi.rs b/embassy-stm32/src/pac/stm32f439bi.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439bi.rs
+++ b/embassy-stm32/src/pac/stm32f439bi.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439ig.rs b/embassy-stm32/src/pac/stm32f439ig.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439ig.rs
+++ b/embassy-stm32/src/pac/stm32f439ig.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439ii.rs b/embassy-stm32/src/pac/stm32f439ii.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439ii.rs
+++ b/embassy-stm32/src/pac/stm32f439ii.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439ng.rs b/embassy-stm32/src/pac/stm32f439ng.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439ng.rs
+++ b/embassy-stm32/src/pac/stm32f439ng.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439ni.rs b/embassy-stm32/src/pac/stm32f439ni.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439ni.rs
+++ b/embassy-stm32/src/pac/stm32f439ni.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439vg.rs b/embassy-stm32/src/pac/stm32f439vg.rs
index 3228bc47c..15642387b 100644
--- a/embassy-stm32/src/pac/stm32f439vg.rs
+++ b/embassy-stm32/src/pac/stm32f439vg.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439vi.rs b/embassy-stm32/src/pac/stm32f439vi.rs
index 3228bc47c..15642387b 100644
--- a/embassy-stm32/src/pac/stm32f439vi.rs
+++ b/embassy-stm32/src/pac/stm32f439vi.rs
@@ -215,41 +215,41 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 253pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 254pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
255impl_usart!(USART1); 255impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439zg.rs b/embassy-stm32/src/pac/stm32f439zg.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439zg.rs
+++ b/embassy-stm32/src/pac/stm32f439zg.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f439zi.rs b/embassy-stm32/src/pac/stm32f439zi.rs
index 34ffaac98..5a0019b3b 100644
--- a/embassy-stm32/src/pac/stm32f439zi.rs
+++ b/embassy-stm32/src/pac/stm32f439zi.rs
@@ -215,54 +215,54 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
215impl_rng!(RNG, HASH_RNG); 215impl_rng!(RNG, HASH_RNG);
216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 216pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
217impl_spi!(SPI1, APB2); 217impl_spi!(SPI1, APB2);
218impl_spi_pin!(SPI1, Sck, PA5, 5); 218impl_spi_pin!(SPI1, SckPin, PA5, 5);
219impl_spi_pin!(SPI1, Miso, PA6, 5); 219impl_spi_pin!(SPI1, MisoPin, PA6, 5);
220impl_spi_pin!(SPI1, Mosi, PA7, 5); 220impl_spi_pin!(SPI1, MosiPin, PA7, 5);
221impl_spi_pin!(SPI1, Sck, PB3, 5); 221impl_spi_pin!(SPI1, SckPin, PB3, 5);
222impl_spi_pin!(SPI1, Miso, PB4, 5); 222impl_spi_pin!(SPI1, MisoPin, PB4, 5);
223impl_spi_pin!(SPI1, Mosi, PB5, 5); 223impl_spi_pin!(SPI1, MosiPin, PB5, 5);
224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 224pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
225impl_spi!(SPI2, APB1); 225impl_spi!(SPI2, APB1);
226impl_spi_pin!(SPI2, Sck, PB10, 5); 226impl_spi_pin!(SPI2, SckPin, PB10, 5);
227impl_spi_pin!(SPI2, Sck, PB13, 5); 227impl_spi_pin!(SPI2, SckPin, PB13, 5);
228impl_spi_pin!(SPI2, Miso, PB14, 5); 228impl_spi_pin!(SPI2, MisoPin, PB14, 5);
229impl_spi_pin!(SPI2, Mosi, PB15, 5); 229impl_spi_pin!(SPI2, MosiPin, PB15, 5);
230impl_spi_pin!(SPI2, Miso, PC2, 5); 230impl_spi_pin!(SPI2, MisoPin, PC2, 5);
231impl_spi_pin!(SPI2, Mosi, PC3, 5); 231impl_spi_pin!(SPI2, MosiPin, PC3, 5);
232impl_spi_pin!(SPI2, Sck, PD3, 5); 232impl_spi_pin!(SPI2, SckPin, PD3, 5);
233impl_spi_pin!(SPI2, Sck, PI1, 5); 233impl_spi_pin!(SPI2, SckPin, PI1, 5);
234impl_spi_pin!(SPI2, Miso, PI2, 5); 234impl_spi_pin!(SPI2, MisoPin, PI2, 5);
235impl_spi_pin!(SPI2, Mosi, PI3, 5); 235impl_spi_pin!(SPI2, MosiPin, PI3, 5);
236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 236pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
237impl_spi!(SPI3, APB1); 237impl_spi!(SPI3, APB1);
238impl_spi_pin!(SPI3, Sck, PB3, 6); 238impl_spi_pin!(SPI3, SckPin, PB3, 6);
239impl_spi_pin!(SPI3, Miso, PB4, 6); 239impl_spi_pin!(SPI3, MisoPin, PB4, 6);
240impl_spi_pin!(SPI3, Mosi, PB5, 6); 240impl_spi_pin!(SPI3, MosiPin, PB5, 6);
241impl_spi_pin!(SPI3, Sck, PC10, 6); 241impl_spi_pin!(SPI3, SckPin, PC10, 6);
242impl_spi_pin!(SPI3, Miso, PC11, 6); 242impl_spi_pin!(SPI3, MisoPin, PC11, 6);
243impl_spi_pin!(SPI3, Mosi, PC12, 6); 243impl_spi_pin!(SPI3, MosiPin, PC12, 6);
244impl_spi_pin!(SPI3, Mosi, PD6, 5); 244impl_spi_pin!(SPI3, MosiPin, PD6, 5);
245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 245pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
246impl_spi!(SPI4, APB2); 246impl_spi!(SPI4, APB2);
247impl_spi_pin!(SPI4, Sck, PE12, 5); 247impl_spi_pin!(SPI4, SckPin, PE12, 5);
248impl_spi_pin!(SPI4, Miso, PE13, 5); 248impl_spi_pin!(SPI4, MisoPin, PE13, 5);
249impl_spi_pin!(SPI4, Mosi, PE14, 5); 249impl_spi_pin!(SPI4, MosiPin, PE14, 5);
250impl_spi_pin!(SPI4, Sck, PE2, 5); 250impl_spi_pin!(SPI4, SckPin, PE2, 5);
251impl_spi_pin!(SPI4, Miso, PE5, 5); 251impl_spi_pin!(SPI4, MisoPin, PE5, 5);
252impl_spi_pin!(SPI4, Mosi, PE6, 5); 252impl_spi_pin!(SPI4, MosiPin, PE6, 5);
253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _); 253pub const SPI5: spi::Spi = spi::Spi(0x40015000 as _);
254impl_spi!(SPI5, APB2); 254impl_spi!(SPI5, APB2);
255impl_spi_pin!(SPI5, Mosi, PF11, 5); 255impl_spi_pin!(SPI5, MosiPin, PF11, 5);
256impl_spi_pin!(SPI5, Sck, PF7, 5); 256impl_spi_pin!(SPI5, SckPin, PF7, 5);
257impl_spi_pin!(SPI5, Miso, PF8, 5); 257impl_spi_pin!(SPI5, MisoPin, PF8, 5);
258impl_spi_pin!(SPI5, Mosi, PF9, 5); 258impl_spi_pin!(SPI5, MosiPin, PF9, 5);
259impl_spi_pin!(SPI5, Sck, PH6, 5); 259impl_spi_pin!(SPI5, SckPin, PH6, 5);
260impl_spi_pin!(SPI5, Miso, PH7, 5); 260impl_spi_pin!(SPI5, MisoPin, PH7, 5);
261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _); 261pub const SPI6: spi::Spi = spi::Spi(0x40015400 as _);
262impl_spi!(SPI6, APB2); 262impl_spi!(SPI6, APB2);
263impl_spi_pin!(SPI6, Miso, PG12, 5); 263impl_spi_pin!(SPI6, MisoPin, PG12, 5);
264impl_spi_pin!(SPI6, Sck, PG13, 5); 264impl_spi_pin!(SPI6, SckPin, PG13, 5);
265impl_spi_pin!(SPI6, Mosi, PG14, 5); 265impl_spi_pin!(SPI6, MosiPin, PG14, 5);
266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 266pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 267pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
268impl_usart!(USART1); 268impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446mc.rs b/embassy-stm32/src/pac/stm32f446mc.rs
index eda63c600..349fc72e1 100644
--- a/embassy-stm32/src/pac/stm32f446mc.rs
+++ b/embassy-stm32/src/pac/stm32f446mc.rs
@@ -162,49 +162,49 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Miso, PD0, 5); 198impl_spi_pin!(SPI4, MisoPin, PD0, 5);
199impl_spi_pin!(SPI4, Sck, PE12, 5); 199impl_spi_pin!(SPI4, SckPin, PE12, 5);
200impl_spi_pin!(SPI4, Miso, PE13, 5); 200impl_spi_pin!(SPI4, MisoPin, PE13, 5);
201impl_spi_pin!(SPI4, Mosi, PE14, 5); 201impl_spi_pin!(SPI4, MosiPin, PE14, 5);
202impl_spi_pin!(SPI4, Sck, PE2, 5); 202impl_spi_pin!(SPI4, SckPin, PE2, 5);
203impl_spi_pin!(SPI4, Miso, PE5, 5); 203impl_spi_pin!(SPI4, MisoPin, PE5, 5);
204impl_spi_pin!(SPI4, Mosi, PE6, 5); 204impl_spi_pin!(SPI4, MosiPin, PE6, 5);
205impl_spi_pin!(SPI4, Sck, PG11, 6); 205impl_spi_pin!(SPI4, SckPin, PG11, 6);
206impl_spi_pin!(SPI4, Miso, PG12, 6); 206impl_spi_pin!(SPI4, MisoPin, PG12, 6);
207impl_spi_pin!(SPI4, Mosi, PG13, 6); 207impl_spi_pin!(SPI4, MosiPin, PG13, 6);
208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
210impl_usart!(USART1); 210impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446me.rs b/embassy-stm32/src/pac/stm32f446me.rs
index eda63c600..349fc72e1 100644
--- a/embassy-stm32/src/pac/stm32f446me.rs
+++ b/embassy-stm32/src/pac/stm32f446me.rs
@@ -162,49 +162,49 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Miso, PD0, 5); 198impl_spi_pin!(SPI4, MisoPin, PD0, 5);
199impl_spi_pin!(SPI4, Sck, PE12, 5); 199impl_spi_pin!(SPI4, SckPin, PE12, 5);
200impl_spi_pin!(SPI4, Miso, PE13, 5); 200impl_spi_pin!(SPI4, MisoPin, PE13, 5);
201impl_spi_pin!(SPI4, Mosi, PE14, 5); 201impl_spi_pin!(SPI4, MosiPin, PE14, 5);
202impl_spi_pin!(SPI4, Sck, PE2, 5); 202impl_spi_pin!(SPI4, SckPin, PE2, 5);
203impl_spi_pin!(SPI4, Miso, PE5, 5); 203impl_spi_pin!(SPI4, MisoPin, PE5, 5);
204impl_spi_pin!(SPI4, Mosi, PE6, 5); 204impl_spi_pin!(SPI4, MosiPin, PE6, 5);
205impl_spi_pin!(SPI4, Sck, PG11, 6); 205impl_spi_pin!(SPI4, SckPin, PG11, 6);
206impl_spi_pin!(SPI4, Miso, PG12, 6); 206impl_spi_pin!(SPI4, MisoPin, PG12, 6);
207impl_spi_pin!(SPI4, Mosi, PG13, 6); 207impl_spi_pin!(SPI4, MosiPin, PG13, 6);
208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
210impl_usart!(USART1); 210impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446rc.rs b/embassy-stm32/src/pac/stm32f446rc.rs
index 78c721ce6..84c114821 100644
--- a/embassy-stm32/src/pac/stm32f446rc.rs
+++ b/embassy-stm32/src/pac/stm32f446rc.rs
@@ -162,37 +162,37 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 196pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
197pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 197pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
198impl_usart!(USART1); 198impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446re.rs b/embassy-stm32/src/pac/stm32f446re.rs
index 78c721ce6..84c114821 100644
--- a/embassy-stm32/src/pac/stm32f446re.rs
+++ b/embassy-stm32/src/pac/stm32f446re.rs
@@ -162,37 +162,37 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 196pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
197pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 197pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
198impl_usart!(USART1); 198impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446vc.rs b/embassy-stm32/src/pac/stm32f446vc.rs
index eda63c600..349fc72e1 100644
--- a/embassy-stm32/src/pac/stm32f446vc.rs
+++ b/embassy-stm32/src/pac/stm32f446vc.rs
@@ -162,49 +162,49 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Miso, PD0, 5); 198impl_spi_pin!(SPI4, MisoPin, PD0, 5);
199impl_spi_pin!(SPI4, Sck, PE12, 5); 199impl_spi_pin!(SPI4, SckPin, PE12, 5);
200impl_spi_pin!(SPI4, Miso, PE13, 5); 200impl_spi_pin!(SPI4, MisoPin, PE13, 5);
201impl_spi_pin!(SPI4, Mosi, PE14, 5); 201impl_spi_pin!(SPI4, MosiPin, PE14, 5);
202impl_spi_pin!(SPI4, Sck, PE2, 5); 202impl_spi_pin!(SPI4, SckPin, PE2, 5);
203impl_spi_pin!(SPI4, Miso, PE5, 5); 203impl_spi_pin!(SPI4, MisoPin, PE5, 5);
204impl_spi_pin!(SPI4, Mosi, PE6, 5); 204impl_spi_pin!(SPI4, MosiPin, PE6, 5);
205impl_spi_pin!(SPI4, Sck, PG11, 6); 205impl_spi_pin!(SPI4, SckPin, PG11, 6);
206impl_spi_pin!(SPI4, Miso, PG12, 6); 206impl_spi_pin!(SPI4, MisoPin, PG12, 6);
207impl_spi_pin!(SPI4, Mosi, PG13, 6); 207impl_spi_pin!(SPI4, MosiPin, PG13, 6);
208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
210impl_usart!(USART1); 210impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446ve.rs b/embassy-stm32/src/pac/stm32f446ve.rs
index eda63c600..349fc72e1 100644
--- a/embassy-stm32/src/pac/stm32f446ve.rs
+++ b/embassy-stm32/src/pac/stm32f446ve.rs
@@ -162,49 +162,49 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Miso, PD0, 5); 198impl_spi_pin!(SPI4, MisoPin, PD0, 5);
199impl_spi_pin!(SPI4, Sck, PE12, 5); 199impl_spi_pin!(SPI4, SckPin, PE12, 5);
200impl_spi_pin!(SPI4, Miso, PE13, 5); 200impl_spi_pin!(SPI4, MisoPin, PE13, 5);
201impl_spi_pin!(SPI4, Mosi, PE14, 5); 201impl_spi_pin!(SPI4, MosiPin, PE14, 5);
202impl_spi_pin!(SPI4, Sck, PE2, 5); 202impl_spi_pin!(SPI4, SckPin, PE2, 5);
203impl_spi_pin!(SPI4, Miso, PE5, 5); 203impl_spi_pin!(SPI4, MisoPin, PE5, 5);
204impl_spi_pin!(SPI4, Mosi, PE6, 5); 204impl_spi_pin!(SPI4, MosiPin, PE6, 5);
205impl_spi_pin!(SPI4, Sck, PG11, 6); 205impl_spi_pin!(SPI4, SckPin, PG11, 6);
206impl_spi_pin!(SPI4, Miso, PG12, 6); 206impl_spi_pin!(SPI4, MisoPin, PG12, 6);
207impl_spi_pin!(SPI4, Mosi, PG13, 6); 207impl_spi_pin!(SPI4, MosiPin, PG13, 6);
208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
210impl_usart!(USART1); 210impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446zc.rs b/embassy-stm32/src/pac/stm32f446zc.rs
index eda63c600..349fc72e1 100644
--- a/embassy-stm32/src/pac/stm32f446zc.rs
+++ b/embassy-stm32/src/pac/stm32f446zc.rs
@@ -162,49 +162,49 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Miso, PD0, 5); 198impl_spi_pin!(SPI4, MisoPin, PD0, 5);
199impl_spi_pin!(SPI4, Sck, PE12, 5); 199impl_spi_pin!(SPI4, SckPin, PE12, 5);
200impl_spi_pin!(SPI4, Miso, PE13, 5); 200impl_spi_pin!(SPI4, MisoPin, PE13, 5);
201impl_spi_pin!(SPI4, Mosi, PE14, 5); 201impl_spi_pin!(SPI4, MosiPin, PE14, 5);
202impl_spi_pin!(SPI4, Sck, PE2, 5); 202impl_spi_pin!(SPI4, SckPin, PE2, 5);
203impl_spi_pin!(SPI4, Miso, PE5, 5); 203impl_spi_pin!(SPI4, MisoPin, PE5, 5);
204impl_spi_pin!(SPI4, Mosi, PE6, 5); 204impl_spi_pin!(SPI4, MosiPin, PE6, 5);
205impl_spi_pin!(SPI4, Sck, PG11, 6); 205impl_spi_pin!(SPI4, SckPin, PG11, 6);
206impl_spi_pin!(SPI4, Miso, PG12, 6); 206impl_spi_pin!(SPI4, MisoPin, PG12, 6);
207impl_spi_pin!(SPI4, Mosi, PG13, 6); 207impl_spi_pin!(SPI4, MosiPin, PG13, 6);
208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
210impl_usart!(USART1); 210impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32f446ze.rs b/embassy-stm32/src/pac/stm32f446ze.rs
index eda63c600..349fc72e1 100644
--- a/embassy-stm32/src/pac/stm32f446ze.rs
+++ b/embassy-stm32/src/pac/stm32f446ze.rs
@@ -162,49 +162,49 @@ impl_gpio_pin!(PH14, 7, 14, EXTI14);
162impl_gpio_pin!(PH15, 7, 15, EXTI15); 162impl_gpio_pin!(PH15, 7, 15, EXTI15);
163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 163pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
164impl_spi!(SPI1, APB2); 164impl_spi!(SPI1, APB2);
165impl_spi_pin!(SPI1, Sck, PA5, 5); 165impl_spi_pin!(SPI1, SckPin, PA5, 5);
166impl_spi_pin!(SPI1, Miso, PA6, 5); 166impl_spi_pin!(SPI1, MisoPin, PA6, 5);
167impl_spi_pin!(SPI1, Mosi, PA7, 5); 167impl_spi_pin!(SPI1, MosiPin, PA7, 5);
168impl_spi_pin!(SPI1, Sck, PB3, 5); 168impl_spi_pin!(SPI1, SckPin, PB3, 5);
169impl_spi_pin!(SPI1, Miso, PB4, 5); 169impl_spi_pin!(SPI1, MisoPin, PB4, 5);
170impl_spi_pin!(SPI1, Mosi, PB5, 5); 170impl_spi_pin!(SPI1, MosiPin, PB5, 5);
171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 171pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
172impl_spi!(SPI2, APB1); 172impl_spi!(SPI2, APB1);
173impl_spi_pin!(SPI2, Sck, PA9, 5); 173impl_spi_pin!(SPI2, SckPin, PA9, 5);
174impl_spi_pin!(SPI2, Sck, PB10, 5); 174impl_spi_pin!(SPI2, SckPin, PB10, 5);
175impl_spi_pin!(SPI2, Sck, PB13, 5); 175impl_spi_pin!(SPI2, SckPin, PB13, 5);
176impl_spi_pin!(SPI2, Miso, PB14, 5); 176impl_spi_pin!(SPI2, MisoPin, PB14, 5);
177impl_spi_pin!(SPI2, Mosi, PB15, 5); 177impl_spi_pin!(SPI2, MosiPin, PB15, 5);
178impl_spi_pin!(SPI2, Mosi, PC1, 7); 178impl_spi_pin!(SPI2, MosiPin, PC1, 7);
179impl_spi_pin!(SPI2, Miso, PC2, 5); 179impl_spi_pin!(SPI2, MisoPin, PC2, 5);
180impl_spi_pin!(SPI2, Mosi, PC3, 5); 180impl_spi_pin!(SPI2, MosiPin, PC3, 5);
181impl_spi_pin!(SPI2, Sck, PC7, 5); 181impl_spi_pin!(SPI2, SckPin, PC7, 5);
182impl_spi_pin!(SPI2, Sck, PD3, 5); 182impl_spi_pin!(SPI2, SckPin, PD3, 5);
183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 183pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
184impl_spi!(SPI3, APB1); 184impl_spi!(SPI3, APB1);
185impl_spi_pin!(SPI3, Mosi, PB0, 7); 185impl_spi_pin!(SPI3, MosiPin, PB0, 7);
186impl_spi_pin!(SPI3, Mosi, PB2, 7); 186impl_spi_pin!(SPI3, MosiPin, PB2, 7);
187impl_spi_pin!(SPI3, Sck, PB3, 6); 187impl_spi_pin!(SPI3, SckPin, PB3, 6);
188impl_spi_pin!(SPI3, Miso, PB4, 6); 188impl_spi_pin!(SPI3, MisoPin, PB4, 6);
189impl_spi_pin!(SPI3, Mosi, PB5, 6); 189impl_spi_pin!(SPI3, MosiPin, PB5, 6);
190impl_spi_pin!(SPI3, Mosi, PC1, 5); 190impl_spi_pin!(SPI3, MosiPin, PC1, 5);
191impl_spi_pin!(SPI3, Sck, PC10, 6); 191impl_spi_pin!(SPI3, SckPin, PC10, 6);
192impl_spi_pin!(SPI3, Miso, PC11, 6); 192impl_spi_pin!(SPI3, MisoPin, PC11, 6);
193impl_spi_pin!(SPI3, Mosi, PC12, 6); 193impl_spi_pin!(SPI3, MosiPin, PC12, 6);
194impl_spi_pin!(SPI3, Mosi, PD0, 6); 194impl_spi_pin!(SPI3, MosiPin, PD0, 6);
195impl_spi_pin!(SPI3, Mosi, PD6, 5); 195impl_spi_pin!(SPI3, MosiPin, PD6, 5);
196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _); 196pub const SPI4: spi::Spi = spi::Spi(0x40013400 as _);
197impl_spi!(SPI4, APB2); 197impl_spi!(SPI4, APB2);
198impl_spi_pin!(SPI4, Miso, PD0, 5); 198impl_spi_pin!(SPI4, MisoPin, PD0, 5);
199impl_spi_pin!(SPI4, Sck, PE12, 5); 199impl_spi_pin!(SPI4, SckPin, PE12, 5);
200impl_spi_pin!(SPI4, Miso, PE13, 5); 200impl_spi_pin!(SPI4, MisoPin, PE13, 5);
201impl_spi_pin!(SPI4, Mosi, PE14, 5); 201impl_spi_pin!(SPI4, MosiPin, PE14, 5);
202impl_spi_pin!(SPI4, Sck, PE2, 5); 202impl_spi_pin!(SPI4, SckPin, PE2, 5);
203impl_spi_pin!(SPI4, Miso, PE5, 5); 203impl_spi_pin!(SPI4, MisoPin, PE5, 5);
204impl_spi_pin!(SPI4, Mosi, PE6, 5); 204impl_spi_pin!(SPI4, MosiPin, PE6, 5);
205impl_spi_pin!(SPI4, Sck, PG11, 6); 205impl_spi_pin!(SPI4, SckPin, PG11, 6);
206impl_spi_pin!(SPI4, Miso, PG12, 6); 206impl_spi_pin!(SPI4, MisoPin, PG12, 6);
207impl_spi_pin!(SPI4, Mosi, PG13, 6); 207impl_spi_pin!(SPI4, MosiPin, PG13, 6);
208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); 208pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _);
209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); 209pub const USART1: usart::Usart = usart::Usart(0x40011000 as _);
210impl_usart!(USART1); 210impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l431cb.rs b/embassy-stm32/src/pac/stm32l431cb.rs
index 3526babf8..73f31d278 100644
--- a/embassy-stm32/src/pac/stm32l431cb.rs
+++ b/embassy-stm32/src/pac/stm32l431cb.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l431cc.rs b/embassy-stm32/src/pac/stm32l431cc.rs
index 3526babf8..73f31d278 100644
--- a/embassy-stm32/src/pac/stm32l431cc.rs
+++ b/embassy-stm32/src/pac/stm32l431cc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l431kb.rs b/embassy-stm32/src/pac/stm32l431kb.rs
index 6ee92e995..f4fe06052 100644
--- a/embassy-stm32/src/pac/stm32l431kb.rs
+++ b/embassy-stm32/src/pac/stm32l431kb.rs
@@ -130,26 +130,26 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 145pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
146impl_spi!(SPI3, APB1); 146impl_spi!(SPI3, APB1);
147impl_spi_pin!(SPI3, Sck, PB3, 6); 147impl_spi_pin!(SPI3, SckPin, PB3, 6);
148impl_spi_pin!(SPI3, Miso, PB4, 6); 148impl_spi_pin!(SPI3, MisoPin, PB4, 6);
149impl_spi_pin!(SPI3, Mosi, PB5, 6); 149impl_spi_pin!(SPI3, MosiPin, PB5, 6);
150impl_spi_pin!(SPI3, Sck, PC10, 6); 150impl_spi_pin!(SPI3, SckPin, PC10, 6);
151impl_spi_pin!(SPI3, Miso, PC11, 6); 151impl_spi_pin!(SPI3, MisoPin, PC11, 6);
152impl_spi_pin!(SPI3, Mosi, PC12, 6); 152impl_spi_pin!(SPI3, MosiPin, PC12, 6);
153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
154pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 154pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
155impl_usart!(USART1); 155impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l431kc.rs b/embassy-stm32/src/pac/stm32l431kc.rs
index 6ee92e995..f4fe06052 100644
--- a/embassy-stm32/src/pac/stm32l431kc.rs
+++ b/embassy-stm32/src/pac/stm32l431kc.rs
@@ -130,26 +130,26 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 145pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
146impl_spi!(SPI3, APB1); 146impl_spi!(SPI3, APB1);
147impl_spi_pin!(SPI3, Sck, PB3, 6); 147impl_spi_pin!(SPI3, SckPin, PB3, 6);
148impl_spi_pin!(SPI3, Miso, PB4, 6); 148impl_spi_pin!(SPI3, MisoPin, PB4, 6);
149impl_spi_pin!(SPI3, Mosi, PB5, 6); 149impl_spi_pin!(SPI3, MosiPin, PB5, 6);
150impl_spi_pin!(SPI3, Sck, PC10, 6); 150impl_spi_pin!(SPI3, SckPin, PC10, 6);
151impl_spi_pin!(SPI3, Miso, PC11, 6); 151impl_spi_pin!(SPI3, MisoPin, PC11, 6);
152impl_spi_pin!(SPI3, Mosi, PC12, 6); 152impl_spi_pin!(SPI3, MosiPin, PC12, 6);
153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 153pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
154pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 154pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
155impl_usart!(USART1); 155impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l431rb.rs b/embassy-stm32/src/pac/stm32l431rb.rs
index 3526babf8..73f31d278 100644
--- a/embassy-stm32/src/pac/stm32l431rb.rs
+++ b/embassy-stm32/src/pac/stm32l431rb.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l431rc.rs b/embassy-stm32/src/pac/stm32l431rc.rs
index 3526babf8..73f31d278 100644
--- a/embassy-stm32/src/pac/stm32l431rc.rs
+++ b/embassy-stm32/src/pac/stm32l431rc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l431vc.rs b/embassy-stm32/src/pac/stm32l431vc.rs
index 3526babf8..73f31d278 100644
--- a/embassy-stm32/src/pac/stm32l431vc.rs
+++ b/embassy-stm32/src/pac/stm32l431vc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l432kb.rs b/embassy-stm32/src/pac/stm32l432kb.rs
index 520a130a2..6f49490e1 100644
--- a/embassy-stm32/src/pac/stm32l432kb.rs
+++ b/embassy-stm32/src/pac/stm32l432kb.rs
@@ -96,23 +96,23 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
96impl_rng!(RNG, RNG); 96impl_rng!(RNG, RNG);
97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
98impl_spi!(SPI1, APB2); 98impl_spi!(SPI1, APB2);
99impl_spi_pin!(SPI1, Sck, PA1, 5); 99impl_spi_pin!(SPI1, SckPin, PA1, 5);
100impl_spi_pin!(SPI1, Miso, PA11, 5); 100impl_spi_pin!(SPI1, MisoPin, PA11, 5);
101impl_spi_pin!(SPI1, Mosi, PA12, 5); 101impl_spi_pin!(SPI1, MosiPin, PA12, 5);
102impl_spi_pin!(SPI1, Sck, PA5, 5); 102impl_spi_pin!(SPI1, SckPin, PA5, 5);
103impl_spi_pin!(SPI1, Miso, PA6, 5); 103impl_spi_pin!(SPI1, MisoPin, PA6, 5);
104impl_spi_pin!(SPI1, Mosi, PA7, 5); 104impl_spi_pin!(SPI1, MosiPin, PA7, 5);
105impl_spi_pin!(SPI1, Sck, PB3, 5); 105impl_spi_pin!(SPI1, SckPin, PB3, 5);
106impl_spi_pin!(SPI1, Miso, PB4, 5); 106impl_spi_pin!(SPI1, MisoPin, PB4, 5);
107impl_spi_pin!(SPI1, Mosi, PB5, 5); 107impl_spi_pin!(SPI1, MosiPin, PB5, 5);
108pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 108pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
109impl_spi!(SPI3, APB1); 109impl_spi!(SPI3, APB1);
110impl_spi_pin!(SPI3, Sck, PB3, 6); 110impl_spi_pin!(SPI3, SckPin, PB3, 6);
111impl_spi_pin!(SPI3, Miso, PB4, 6); 111impl_spi_pin!(SPI3, MisoPin, PB4, 6);
112impl_spi_pin!(SPI3, Mosi, PB5, 6); 112impl_spi_pin!(SPI3, MosiPin, PB5, 6);
113impl_spi_pin!(SPI3, Sck, PC10, 6); 113impl_spi_pin!(SPI3, SckPin, PC10, 6);
114impl_spi_pin!(SPI3, Miso, PC11, 6); 114impl_spi_pin!(SPI3, MisoPin, PC11, 6);
115impl_spi_pin!(SPI3, Mosi, PC12, 6); 115impl_spi_pin!(SPI3, MosiPin, PC12, 6);
116pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 116pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
117pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 117pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
118impl_usart!(USART1); 118impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l432kc.rs b/embassy-stm32/src/pac/stm32l432kc.rs
index 520a130a2..6f49490e1 100644
--- a/embassy-stm32/src/pac/stm32l432kc.rs
+++ b/embassy-stm32/src/pac/stm32l432kc.rs
@@ -96,23 +96,23 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
96impl_rng!(RNG, RNG); 96impl_rng!(RNG, RNG);
97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
98impl_spi!(SPI1, APB2); 98impl_spi!(SPI1, APB2);
99impl_spi_pin!(SPI1, Sck, PA1, 5); 99impl_spi_pin!(SPI1, SckPin, PA1, 5);
100impl_spi_pin!(SPI1, Miso, PA11, 5); 100impl_spi_pin!(SPI1, MisoPin, PA11, 5);
101impl_spi_pin!(SPI1, Mosi, PA12, 5); 101impl_spi_pin!(SPI1, MosiPin, PA12, 5);
102impl_spi_pin!(SPI1, Sck, PA5, 5); 102impl_spi_pin!(SPI1, SckPin, PA5, 5);
103impl_spi_pin!(SPI1, Miso, PA6, 5); 103impl_spi_pin!(SPI1, MisoPin, PA6, 5);
104impl_spi_pin!(SPI1, Mosi, PA7, 5); 104impl_spi_pin!(SPI1, MosiPin, PA7, 5);
105impl_spi_pin!(SPI1, Sck, PB3, 5); 105impl_spi_pin!(SPI1, SckPin, PB3, 5);
106impl_spi_pin!(SPI1, Miso, PB4, 5); 106impl_spi_pin!(SPI1, MisoPin, PB4, 5);
107impl_spi_pin!(SPI1, Mosi, PB5, 5); 107impl_spi_pin!(SPI1, MosiPin, PB5, 5);
108pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 108pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
109impl_spi!(SPI3, APB1); 109impl_spi!(SPI3, APB1);
110impl_spi_pin!(SPI3, Sck, PB3, 6); 110impl_spi_pin!(SPI3, SckPin, PB3, 6);
111impl_spi_pin!(SPI3, Miso, PB4, 6); 111impl_spi_pin!(SPI3, MisoPin, PB4, 6);
112impl_spi_pin!(SPI3, Mosi, PB5, 6); 112impl_spi_pin!(SPI3, MosiPin, PB5, 6);
113impl_spi_pin!(SPI3, Sck, PC10, 6); 113impl_spi_pin!(SPI3, SckPin, PC10, 6);
114impl_spi_pin!(SPI3, Miso, PC11, 6); 114impl_spi_pin!(SPI3, MisoPin, PC11, 6);
115impl_spi_pin!(SPI3, Mosi, PC12, 6); 115impl_spi_pin!(SPI3, MosiPin, PC12, 6);
116pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 116pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
117pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 117pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
118impl_usart!(USART1); 118impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l433cb.rs b/embassy-stm32/src/pac/stm32l433cb.rs
index d7c46042a..523c14eb5 100644
--- a/embassy-stm32/src/pac/stm32l433cb.rs
+++ b/embassy-stm32/src/pac/stm32l433cb.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l433cc.rs b/embassy-stm32/src/pac/stm32l433cc.rs
index d7c46042a..523c14eb5 100644
--- a/embassy-stm32/src/pac/stm32l433cc.rs
+++ b/embassy-stm32/src/pac/stm32l433cc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l433rb.rs b/embassy-stm32/src/pac/stm32l433rb.rs
index d7c46042a..523c14eb5 100644
--- a/embassy-stm32/src/pac/stm32l433rb.rs
+++ b/embassy-stm32/src/pac/stm32l433rb.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l433rc.rs b/embassy-stm32/src/pac/stm32l433rc.rs
index d7c46042a..523c14eb5 100644
--- a/embassy-stm32/src/pac/stm32l433rc.rs
+++ b/embassy-stm32/src/pac/stm32l433rc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l433vc.rs b/embassy-stm32/src/pac/stm32l433vc.rs
index d7c46042a..523c14eb5 100644
--- a/embassy-stm32/src/pac/stm32l433vc.rs
+++ b/embassy-stm32/src/pac/stm32l433vc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l442kc.rs b/embassy-stm32/src/pac/stm32l442kc.rs
index 7a7e0780e..43847827e 100644
--- a/embassy-stm32/src/pac/stm32l442kc.rs
+++ b/embassy-stm32/src/pac/stm32l442kc.rs
@@ -96,23 +96,23 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
96impl_rng!(RNG, RNG); 96impl_rng!(RNG, RNG);
97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 97pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
98impl_spi!(SPI1, APB2); 98impl_spi!(SPI1, APB2);
99impl_spi_pin!(SPI1, Sck, PA1, 5); 99impl_spi_pin!(SPI1, SckPin, PA1, 5);
100impl_spi_pin!(SPI1, Miso, PA11, 5); 100impl_spi_pin!(SPI1, MisoPin, PA11, 5);
101impl_spi_pin!(SPI1, Mosi, PA12, 5); 101impl_spi_pin!(SPI1, MosiPin, PA12, 5);
102impl_spi_pin!(SPI1, Sck, PA5, 5); 102impl_spi_pin!(SPI1, SckPin, PA5, 5);
103impl_spi_pin!(SPI1, Miso, PA6, 5); 103impl_spi_pin!(SPI1, MisoPin, PA6, 5);
104impl_spi_pin!(SPI1, Mosi, PA7, 5); 104impl_spi_pin!(SPI1, MosiPin, PA7, 5);
105impl_spi_pin!(SPI1, Sck, PB3, 5); 105impl_spi_pin!(SPI1, SckPin, PB3, 5);
106impl_spi_pin!(SPI1, Miso, PB4, 5); 106impl_spi_pin!(SPI1, MisoPin, PB4, 5);
107impl_spi_pin!(SPI1, Mosi, PB5, 5); 107impl_spi_pin!(SPI1, MosiPin, PB5, 5);
108pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 108pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
109impl_spi!(SPI3, APB1); 109impl_spi!(SPI3, APB1);
110impl_spi_pin!(SPI3, Sck, PB3, 6); 110impl_spi_pin!(SPI3, SckPin, PB3, 6);
111impl_spi_pin!(SPI3, Miso, PB4, 6); 111impl_spi_pin!(SPI3, MisoPin, PB4, 6);
112impl_spi_pin!(SPI3, Mosi, PB5, 6); 112impl_spi_pin!(SPI3, MosiPin, PB5, 6);
113impl_spi_pin!(SPI3, Sck, PC10, 6); 113impl_spi_pin!(SPI3, SckPin, PC10, 6);
114impl_spi_pin!(SPI3, Miso, PC11, 6); 114impl_spi_pin!(SPI3, MisoPin, PC11, 6);
115impl_spi_pin!(SPI3, Mosi, PC12, 6); 115impl_spi_pin!(SPI3, MosiPin, PC12, 6);
116pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 116pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
117pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 117pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
118impl_usart!(USART1); 118impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l443cc.rs b/embassy-stm32/src/pac/stm32l443cc.rs
index a3a633823..221a674a0 100644
--- a/embassy-stm32/src/pac/stm32l443cc.rs
+++ b/embassy-stm32/src/pac/stm32l443cc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l443rc.rs b/embassy-stm32/src/pac/stm32l443rc.rs
index a3a633823..221a674a0 100644
--- a/embassy-stm32/src/pac/stm32l443rc.rs
+++ b/embassy-stm32/src/pac/stm32l443rc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l443vc.rs b/embassy-stm32/src/pac/stm32l443vc.rs
index a3a633823..221a674a0 100644
--- a/embassy-stm32/src/pac/stm32l443vc.rs
+++ b/embassy-stm32/src/pac/stm32l443vc.rs
@@ -130,37 +130,37 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
130impl_rng!(RNG, RNG); 130impl_rng!(RNG, RNG);
131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 131pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
132impl_spi!(SPI1, APB2); 132impl_spi!(SPI1, APB2);
133impl_spi_pin!(SPI1, Sck, PA1, 5); 133impl_spi_pin!(SPI1, SckPin, PA1, 5);
134impl_spi_pin!(SPI1, Miso, PA11, 5); 134impl_spi_pin!(SPI1, MisoPin, PA11, 5);
135impl_spi_pin!(SPI1, Mosi, PA12, 5); 135impl_spi_pin!(SPI1, MosiPin, PA12, 5);
136impl_spi_pin!(SPI1, Sck, PA5, 5); 136impl_spi_pin!(SPI1, SckPin, PA5, 5);
137impl_spi_pin!(SPI1, Miso, PA6, 5); 137impl_spi_pin!(SPI1, MisoPin, PA6, 5);
138impl_spi_pin!(SPI1, Mosi, PA7, 5); 138impl_spi_pin!(SPI1, MosiPin, PA7, 5);
139impl_spi_pin!(SPI1, Sck, PB3, 5); 139impl_spi_pin!(SPI1, SckPin, PB3, 5);
140impl_spi_pin!(SPI1, Miso, PB4, 5); 140impl_spi_pin!(SPI1, MisoPin, PB4, 5);
141impl_spi_pin!(SPI1, Mosi, PB5, 5); 141impl_spi_pin!(SPI1, MosiPin, PB5, 5);
142impl_spi_pin!(SPI1, Sck, PE13, 5); 142impl_spi_pin!(SPI1, SckPin, PE13, 5);
143impl_spi_pin!(SPI1, Miso, PE14, 5); 143impl_spi_pin!(SPI1, MisoPin, PE14, 5);
144impl_spi_pin!(SPI1, Mosi, PE15, 5); 144impl_spi_pin!(SPI1, MosiPin, PE15, 5);
145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 145pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
146impl_spi!(SPI2, APB1); 146impl_spi!(SPI2, APB1);
147impl_spi_pin!(SPI2, Sck, PB10, 5); 147impl_spi_pin!(SPI2, SckPin, PB10, 5);
148impl_spi_pin!(SPI2, Sck, PB13, 5); 148impl_spi_pin!(SPI2, SckPin, PB13, 5);
149impl_spi_pin!(SPI2, Miso, PB14, 5); 149impl_spi_pin!(SPI2, MisoPin, PB14, 5);
150impl_spi_pin!(SPI2, Mosi, PB15, 5); 150impl_spi_pin!(SPI2, MosiPin, PB15, 5);
151impl_spi_pin!(SPI2, Miso, PC2, 5); 151impl_spi_pin!(SPI2, MisoPin, PC2, 5);
152impl_spi_pin!(SPI2, Mosi, PC3, 5); 152impl_spi_pin!(SPI2, MosiPin, PC3, 5);
153impl_spi_pin!(SPI2, Sck, PD1, 5); 153impl_spi_pin!(SPI2, SckPin, PD1, 5);
154impl_spi_pin!(SPI2, Miso, PD3, 5); 154impl_spi_pin!(SPI2, MisoPin, PD3, 5);
155impl_spi_pin!(SPI2, Mosi, PD4, 5); 155impl_spi_pin!(SPI2, MosiPin, PD4, 5);
156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 156pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
157impl_spi!(SPI3, APB1); 157impl_spi!(SPI3, APB1);
158impl_spi_pin!(SPI3, Sck, PB3, 6); 158impl_spi_pin!(SPI3, SckPin, PB3, 6);
159impl_spi_pin!(SPI3, Miso, PB4, 6); 159impl_spi_pin!(SPI3, MisoPin, PB4, 6);
160impl_spi_pin!(SPI3, Mosi, PB5, 6); 160impl_spi_pin!(SPI3, MosiPin, PB5, 6);
161impl_spi_pin!(SPI3, Sck, PC10, 6); 161impl_spi_pin!(SPI3, SckPin, PC10, 6);
162impl_spi_pin!(SPI3, Miso, PC11, 6); 162impl_spi_pin!(SPI3, MisoPin, PC11, 6);
163impl_spi_pin!(SPI3, Mosi, PC12, 6); 163impl_spi_pin!(SPI3, MosiPin, PC12, 6);
164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 164pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 165pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
166impl_usart!(USART1); 166impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496ae.rs b/embassy-stm32/src/pac/stm32l496ae.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496ae.rs
+++ b/embassy-stm32/src/pac/stm32l496ae.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496ag.rs b/embassy-stm32/src/pac/stm32l496ag.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496ag.rs
+++ b/embassy-stm32/src/pac/stm32l496ag.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496qe.rs b/embassy-stm32/src/pac/stm32l496qe.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496qe.rs
+++ b/embassy-stm32/src/pac/stm32l496qe.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496qg.rs b/embassy-stm32/src/pac/stm32l496qg.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496qg.rs
+++ b/embassy-stm32/src/pac/stm32l496qg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496re.rs b/embassy-stm32/src/pac/stm32l496re.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496re.rs
+++ b/embassy-stm32/src/pac/stm32l496re.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496rg.rs b/embassy-stm32/src/pac/stm32l496rg.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496rg.rs
+++ b/embassy-stm32/src/pac/stm32l496rg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496ve.rs b/embassy-stm32/src/pac/stm32l496ve.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496ve.rs
+++ b/embassy-stm32/src/pac/stm32l496ve.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496vg.rs b/embassy-stm32/src/pac/stm32l496vg.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496vg.rs
+++ b/embassy-stm32/src/pac/stm32l496vg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496wg.rs b/embassy-stm32/src/pac/stm32l496wg.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496wg.rs
+++ b/embassy-stm32/src/pac/stm32l496wg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496ze.rs b/embassy-stm32/src/pac/stm32l496ze.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496ze.rs
+++ b/embassy-stm32/src/pac/stm32l496ze.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l496zg.rs b/embassy-stm32/src/pac/stm32l496zg.rs
index 4f15b5bf7..1b48e2042 100644
--- a/embassy-stm32/src/pac/stm32l496zg.rs
+++ b/embassy-stm32/src/pac/stm32l496zg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l4a6ag.rs b/embassy-stm32/src/pac/stm32l4a6ag.rs
index 7384744ec..250bd6d9c 100644
--- a/embassy-stm32/src/pac/stm32l4a6ag.rs
+++ b/embassy-stm32/src/pac/stm32l4a6ag.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l4a6qg.rs b/embassy-stm32/src/pac/stm32l4a6qg.rs
index 7384744ec..250bd6d9c 100644
--- a/embassy-stm32/src/pac/stm32l4a6qg.rs
+++ b/embassy-stm32/src/pac/stm32l4a6qg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l4a6rg.rs b/embassy-stm32/src/pac/stm32l4a6rg.rs
index 7384744ec..250bd6d9c 100644
--- a/embassy-stm32/src/pac/stm32l4a6rg.rs
+++ b/embassy-stm32/src/pac/stm32l4a6rg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l4a6vg.rs b/embassy-stm32/src/pac/stm32l4a6vg.rs
index 7384744ec..250bd6d9c 100644
--- a/embassy-stm32/src/pac/stm32l4a6vg.rs
+++ b/embassy-stm32/src/pac/stm32l4a6vg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l4a6zg.rs b/embassy-stm32/src/pac/stm32l4a6zg.rs
index 7384744ec..250bd6d9c 100644
--- a/embassy-stm32/src/pac/stm32l4a6zg.rs
+++ b/embassy-stm32/src/pac/stm32l4a6zg.rs
@@ -181,49 +181,49 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, HASH_RNG); 181impl_rng!(RNG, HASH_RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Miso, PG10, 6); 224impl_spi_pin!(SPI3, MisoPin, PG10, 6);
225impl_spi_pin!(SPI3, Mosi, PG11, 6); 225impl_spi_pin!(SPI3, MosiPin, PG11, 6);
226impl_spi_pin!(SPI3, Sck, PG9, 6); 226impl_spi_pin!(SPI3, SckPin, PG9, 6);
227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 227pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); 228pub const USART1: usart::Usart = usart::Usart(0x40013800 as _);
229impl_usart!(USART1); 229impl_usart!(USART1);
diff --git a/embassy-stm32/src/pac/stm32l4p5ae.rs b/embassy-stm32/src/pac/stm32l4p5ae.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5ae.rs
+++ b/embassy-stm32/src/pac/stm32l4p5ae.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5ag.rs b/embassy-stm32/src/pac/stm32l4p5ag.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5ag.rs
+++ b/embassy-stm32/src/pac/stm32l4p5ag.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5ce.rs b/embassy-stm32/src/pac/stm32l4p5ce.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5ce.rs
+++ b/embassy-stm32/src/pac/stm32l4p5ce.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5cg.rs b/embassy-stm32/src/pac/stm32l4p5cg.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5cg.rs
+++ b/embassy-stm32/src/pac/stm32l4p5cg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5qe.rs b/embassy-stm32/src/pac/stm32l4p5qe.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5qe.rs
+++ b/embassy-stm32/src/pac/stm32l4p5qe.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5qg.rs b/embassy-stm32/src/pac/stm32l4p5qg.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5qg.rs
+++ b/embassy-stm32/src/pac/stm32l4p5qg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5re.rs b/embassy-stm32/src/pac/stm32l4p5re.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5re.rs
+++ b/embassy-stm32/src/pac/stm32l4p5re.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5rg.rs b/embassy-stm32/src/pac/stm32l4p5rg.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5rg.rs
+++ b/embassy-stm32/src/pac/stm32l4p5rg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5ve.rs b/embassy-stm32/src/pac/stm32l4p5ve.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5ve.rs
+++ b/embassy-stm32/src/pac/stm32l4p5ve.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5vg.rs b/embassy-stm32/src/pac/stm32l4p5vg.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5vg.rs
+++ b/embassy-stm32/src/pac/stm32l4p5vg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5ze.rs b/embassy-stm32/src/pac/stm32l4p5ze.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5ze.rs
+++ b/embassy-stm32/src/pac/stm32l4p5ze.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4p5zg.rs b/embassy-stm32/src/pac/stm32l4p5zg.rs
index 98ec98306..44abb83bc 100644
--- a/embassy-stm32/src/pac/stm32l4p5zg.rs
+++ b/embassy-stm32/src/pac/stm32l4p5zg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4q5ag.rs b/embassy-stm32/src/pac/stm32l4q5ag.rs
index f7ea12de2..e302792a2 100644
--- a/embassy-stm32/src/pac/stm32l4q5ag.rs
+++ b/embassy-stm32/src/pac/stm32l4q5ag.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4q5cg.rs b/embassy-stm32/src/pac/stm32l4q5cg.rs
index f7ea12de2..e302792a2 100644
--- a/embassy-stm32/src/pac/stm32l4q5cg.rs
+++ b/embassy-stm32/src/pac/stm32l4q5cg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4q5qg.rs b/embassy-stm32/src/pac/stm32l4q5qg.rs
index f7ea12de2..e302792a2 100644
--- a/embassy-stm32/src/pac/stm32l4q5qg.rs
+++ b/embassy-stm32/src/pac/stm32l4q5qg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4q5rg.rs b/embassy-stm32/src/pac/stm32l4q5rg.rs
index f7ea12de2..e302792a2 100644
--- a/embassy-stm32/src/pac/stm32l4q5rg.rs
+++ b/embassy-stm32/src/pac/stm32l4q5rg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4q5vg.rs b/embassy-stm32/src/pac/stm32l4q5vg.rs
index f7ea12de2..e302792a2 100644
--- a/embassy-stm32/src/pac/stm32l4q5vg.rs
+++ b/embassy-stm32/src/pac/stm32l4q5vg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4q5zg.rs b/embassy-stm32/src/pac/stm32l4q5zg.rs
index f7ea12de2..e302792a2 100644
--- a/embassy-stm32/src/pac/stm32l4q5zg.rs
+++ b/embassy-stm32/src/pac/stm32l4q5zg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5ag.rs b/embassy-stm32/src/pac/stm32l4r5ag.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5ag.rs
+++ b/embassy-stm32/src/pac/stm32l4r5ag.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5ai.rs b/embassy-stm32/src/pac/stm32l4r5ai.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5ai.rs
+++ b/embassy-stm32/src/pac/stm32l4r5ai.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5qg.rs b/embassy-stm32/src/pac/stm32l4r5qg.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5qg.rs
+++ b/embassy-stm32/src/pac/stm32l4r5qg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5qi.rs b/embassy-stm32/src/pac/stm32l4r5qi.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5qi.rs
+++ b/embassy-stm32/src/pac/stm32l4r5qi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5vg.rs b/embassy-stm32/src/pac/stm32l4r5vg.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5vg.rs
+++ b/embassy-stm32/src/pac/stm32l4r5vg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5vi.rs b/embassy-stm32/src/pac/stm32l4r5vi.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5vi.rs
+++ b/embassy-stm32/src/pac/stm32l4r5vi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5zg.rs b/embassy-stm32/src/pac/stm32l4r5zg.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5zg.rs
+++ b/embassy-stm32/src/pac/stm32l4r5zg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r5zi.rs b/embassy-stm32/src/pac/stm32l4r5zi.rs
index 0fad849dd..588b46839 100644
--- a/embassy-stm32/src/pac/stm32l4r5zi.rs
+++ b/embassy-stm32/src/pac/stm32l4r5zi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r7ai.rs b/embassy-stm32/src/pac/stm32l4r7ai.rs
index 4bc279c43..39c03935b 100644
--- a/embassy-stm32/src/pac/stm32l4r7ai.rs
+++ b/embassy-stm32/src/pac/stm32l4r7ai.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r7vi.rs b/embassy-stm32/src/pac/stm32l4r7vi.rs
index 4bc279c43..39c03935b 100644
--- a/embassy-stm32/src/pac/stm32l4r7vi.rs
+++ b/embassy-stm32/src/pac/stm32l4r7vi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r7zi.rs b/embassy-stm32/src/pac/stm32l4r7zi.rs
index 4bc279c43..39c03935b 100644
--- a/embassy-stm32/src/pac/stm32l4r7zi.rs
+++ b/embassy-stm32/src/pac/stm32l4r7zi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r9ag.rs b/embassy-stm32/src/pac/stm32l4r9ag.rs
index 2a0a52d40..d4bc778fd 100644
--- a/embassy-stm32/src/pac/stm32l4r9ag.rs
+++ b/embassy-stm32/src/pac/stm32l4r9ag.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r9ai.rs b/embassy-stm32/src/pac/stm32l4r9ai.rs
index 2a0a52d40..d4bc778fd 100644
--- a/embassy-stm32/src/pac/stm32l4r9ai.rs
+++ b/embassy-stm32/src/pac/stm32l4r9ai.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r9vg.rs b/embassy-stm32/src/pac/stm32l4r9vg.rs
index 2a0a52d40..d4bc778fd 100644
--- a/embassy-stm32/src/pac/stm32l4r9vg.rs
+++ b/embassy-stm32/src/pac/stm32l4r9vg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r9vi.rs b/embassy-stm32/src/pac/stm32l4r9vi.rs
index 2a0a52d40..d4bc778fd 100644
--- a/embassy-stm32/src/pac/stm32l4r9vi.rs
+++ b/embassy-stm32/src/pac/stm32l4r9vi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r9zg.rs b/embassy-stm32/src/pac/stm32l4r9zg.rs
index 2a0a52d40..d4bc778fd 100644
--- a/embassy-stm32/src/pac/stm32l4r9zg.rs
+++ b/embassy-stm32/src/pac/stm32l4r9zg.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4r9zi.rs b/embassy-stm32/src/pac/stm32l4r9zi.rs
index 2a0a52d40..d4bc778fd 100644
--- a/embassy-stm32/src/pac/stm32l4r9zi.rs
+++ b/embassy-stm32/src/pac/stm32l4r9zi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s5ai.rs b/embassy-stm32/src/pac/stm32l4s5ai.rs
index 81671a5d0..86caf9c50 100644
--- a/embassy-stm32/src/pac/stm32l4s5ai.rs
+++ b/embassy-stm32/src/pac/stm32l4s5ai.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s5qi.rs b/embassy-stm32/src/pac/stm32l4s5qi.rs
index 81671a5d0..86caf9c50 100644
--- a/embassy-stm32/src/pac/stm32l4s5qi.rs
+++ b/embassy-stm32/src/pac/stm32l4s5qi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s5vi.rs b/embassy-stm32/src/pac/stm32l4s5vi.rs
index 81671a5d0..86caf9c50 100644
--- a/embassy-stm32/src/pac/stm32l4s5vi.rs
+++ b/embassy-stm32/src/pac/stm32l4s5vi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s5zi.rs b/embassy-stm32/src/pac/stm32l4s5zi.rs
index 81671a5d0..86caf9c50 100644
--- a/embassy-stm32/src/pac/stm32l4s5zi.rs
+++ b/embassy-stm32/src/pac/stm32l4s5zi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s7ai.rs b/embassy-stm32/src/pac/stm32l4s7ai.rs
index 402b2cadf..abee0fd92 100644
--- a/embassy-stm32/src/pac/stm32l4s7ai.rs
+++ b/embassy-stm32/src/pac/stm32l4s7ai.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s7vi.rs b/embassy-stm32/src/pac/stm32l4s7vi.rs
index 402b2cadf..abee0fd92 100644
--- a/embassy-stm32/src/pac/stm32l4s7vi.rs
+++ b/embassy-stm32/src/pac/stm32l4s7vi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s7zi.rs b/embassy-stm32/src/pac/stm32l4s7zi.rs
index 402b2cadf..abee0fd92 100644
--- a/embassy-stm32/src/pac/stm32l4s7zi.rs
+++ b/embassy-stm32/src/pac/stm32l4s7zi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s9ai.rs b/embassy-stm32/src/pac/stm32l4s9ai.rs
index ccabd113d..1207d866c 100644
--- a/embassy-stm32/src/pac/stm32l4s9ai.rs
+++ b/embassy-stm32/src/pac/stm32l4s9ai.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s9vi.rs b/embassy-stm32/src/pac/stm32l4s9vi.rs
index ccabd113d..1207d866c 100644
--- a/embassy-stm32/src/pac/stm32l4s9vi.rs
+++ b/embassy-stm32/src/pac/stm32l4s9vi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/pac/stm32l4s9zi.rs b/embassy-stm32/src/pac/stm32l4s9zi.rs
index ccabd113d..1207d866c 100644
--- a/embassy-stm32/src/pac/stm32l4s9zi.rs
+++ b/embassy-stm32/src/pac/stm32l4s9zi.rs
@@ -181,50 +181,50 @@ pub const RNG: rng::Rng = rng::Rng(0x50060800 as _);
181impl_rng!(RNG, RNG); 181impl_rng!(RNG, RNG);
182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _); 182pub const SPI1: spi::Spi = spi::Spi(0x40013000 as _);
183impl_spi!(SPI1, APB2); 183impl_spi!(SPI1, APB2);
184impl_spi_pin!(SPI1, Sck, PA1, 5); 184impl_spi_pin!(SPI1, SckPin, PA1, 5);
185impl_spi_pin!(SPI1, Miso, PA11, 5); 185impl_spi_pin!(SPI1, MisoPin, PA11, 5);
186impl_spi_pin!(SPI1, Mosi, PA12, 5); 186impl_spi_pin!(SPI1, MosiPin, PA12, 5);
187impl_spi_pin!(SPI1, Sck, PA5, 5); 187impl_spi_pin!(SPI1, SckPin, PA5, 5);
188impl_spi_pin!(SPI1, Miso, PA6, 5); 188impl_spi_pin!(SPI1, MisoPin, PA6, 5);
189impl_spi_pin!(SPI1, Mosi, PA7, 5); 189impl_spi_pin!(SPI1, MosiPin, PA7, 5);
190impl_spi_pin!(SPI1, Sck, PB3, 5); 190impl_spi_pin!(SPI1, SckPin, PB3, 5);
191impl_spi_pin!(SPI1, Miso, PB4, 5); 191impl_spi_pin!(SPI1, MisoPin, PB4, 5);
192impl_spi_pin!(SPI1, Mosi, PB5, 5); 192impl_spi_pin!(SPI1, MosiPin, PB5, 5);
193impl_spi_pin!(SPI1, Sck, PE13, 5); 193impl_spi_pin!(SPI1, SckPin, PE13, 5);
194impl_spi_pin!(SPI1, Miso, PE14, 5); 194impl_spi_pin!(SPI1, MisoPin, PE14, 5);
195impl_spi_pin!(SPI1, Mosi, PE15, 5); 195impl_spi_pin!(SPI1, MosiPin, PE15, 5);
196impl_spi_pin!(SPI1, Sck, PG2, 5); 196impl_spi_pin!(SPI1, SckPin, PG2, 5);
197impl_spi_pin!(SPI1, Miso, PG3, 5); 197impl_spi_pin!(SPI1, MisoPin, PG3, 5);
198impl_spi_pin!(SPI1, Mosi, PG4, 5); 198impl_spi_pin!(SPI1, MosiPin, PG4, 5);
199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _); 199pub const SPI2: spi::Spi = spi::Spi(0x40003800 as _);
200impl_spi!(SPI2, APB1); 200impl_spi!(SPI2, APB1);
201impl_spi_pin!(SPI2, Sck, PA9, 3); 201impl_spi_pin!(SPI2, SckPin, PA9, 3);
202impl_spi_pin!(SPI2, Sck, PB10, 5); 202impl_spi_pin!(SPI2, SckPin, PB10, 5);
203impl_spi_pin!(SPI2, Sck, PB13, 5); 203impl_spi_pin!(SPI2, SckPin, PB13, 5);
204impl_spi_pin!(SPI2, Miso, PB14, 5); 204impl_spi_pin!(SPI2, MisoPin, PB14, 5);
205impl_spi_pin!(SPI2, Mosi, PB15, 5); 205impl_spi_pin!(SPI2, MosiPin, PB15, 5);
206impl_spi_pin!(SPI2, Mosi, PC1, 3); 206impl_spi_pin!(SPI2, MosiPin, PC1, 3);
207impl_spi_pin!(SPI2, Miso, PC2, 5); 207impl_spi_pin!(SPI2, MisoPin, PC2, 5);
208impl_spi_pin!(SPI2, Mosi, PC3, 5); 208impl_spi_pin!(SPI2, MosiPin, PC3, 5);
209impl_spi_pin!(SPI2, Sck, PD1, 5); 209impl_spi_pin!(SPI2, SckPin, PD1, 5);
210impl_spi_pin!(SPI2, Sck, PD3, 3); 210impl_spi_pin!(SPI2, SckPin, PD3, 3);
211impl_spi_pin!(SPI2, Miso, PD3, 5); 211impl_spi_pin!(SPI2, MisoPin, PD3, 5);
212impl_spi_pin!(SPI2, Mosi, PD4, 5); 212impl_spi_pin!(SPI2, MosiPin, PD4, 5);
213impl_spi_pin!(SPI2, Sck, PI1, 5); 213impl_spi_pin!(SPI2, SckPin, PI1, 5);
214impl_spi_pin!(SPI2, Miso, PI2, 5); 214impl_spi_pin!(SPI2, MisoPin, PI2, 5);
215impl_spi_pin!(SPI2, Mosi, PI3, 5); 215impl_spi_pin!(SPI2, MosiPin, PI3, 5);
216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _); 216pub const SPI3: spi::Spi = spi::Spi(0x40003c00 as _);
217impl_spi!(SPI3, APB1); 217impl_spi!(SPI3, APB1);
218impl_spi_pin!(SPI3, Sck, PB3, 6); 218impl_spi_pin!(SPI3, SckPin, PB3, 6);
219impl_spi_pin!(SPI3, Miso, PB4, 6); 219impl_spi_pin!(SPI3, MisoPin, PB4, 6);
220impl_spi_pin!(SPI3, Mosi, PB5, 6); 220impl_spi_pin!(SPI3, MosiPin, PB5, 6);
221impl_spi_pin!(SPI3, Sck, PC10, 6); 221impl_spi_pin!(SPI3, SckPin, PC10, 6);
222impl_spi_pin!(SPI3, Miso, PC11, 6); 222impl_spi_pin!(SPI3, MisoPin, PC11, 6);
223impl_spi_pin!(SPI3, Mosi, PC12, 6); 223impl_spi_pin!(SPI3, MosiPin, PC12, 6);
224impl_spi_pin!(SPI3, Mosi, PD6, 5); 224impl_spi_pin!(SPI3, MosiPin, PD6, 5);
225impl_spi_pin!(SPI3, Miso, PG10, 6); 225impl_spi_pin!(SPI3, MisoPin, PG10, 6);
226impl_spi_pin!(SPI3, Mosi, PG11, 6); 226impl_spi_pin!(SPI3, MosiPin, PG11, 6);
227impl_spi_pin!(SPI3, Sck, PG9, 6); 227impl_spi_pin!(SPI3, SckPin, PG9, 6);
228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); 228pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _);
229pub use regs::dma_v1 as dma; 229pub use regs::dma_v1 as dma;
230pub use regs::exti_v1 as exti; 230pub use regs::exti_v1 as exti;
diff --git a/embassy-stm32/src/rng.rs b/embassy-stm32/src/rng.rs
index 672a8f624..bc613e0a3 100644
--- a/embassy-stm32/src/rng.rs
+++ b/embassy-stm32/src/rng.rs
@@ -2,18 +2,22 @@
2 2
3use core::future::Future; 3use core::future::Future;
4use core::task::Poll; 4use core::task::Poll;
5use defmt::*;
6use embassy::traits; 5use embassy::traits;
7use embassy::util::{AtomicWaker, Unborrow}; 6use embassy::util::{AtomicWaker, Unborrow};
8use embassy_extras::unborrow; 7use embassy_extras::unborrow;
9use futures::future::poll_fn; 8use futures::future::poll_fn;
10use rand_core::{CryptoRng, RngCore}; 9use rand_core::{CryptoRng, RngCore};
11 10
12//Guse crate::interrupt; 11use crate::interrupt;
13use crate::pac; 12use crate::pac;
14 13
15pub(crate) static RNG_WAKER: AtomicWaker = AtomicWaker::new(); 14pub(crate) static RNG_WAKER: AtomicWaker = AtomicWaker::new();
16 15
16pub enum Error {
17 SeedError,
18 ClockError,
19}
20
17pub struct Random<T: Instance> { 21pub struct Random<T: Instance> {
18 inner: T, 22 inner: T,
19} 23}
@@ -75,11 +79,6 @@ impl<T: Instance> RngCore for Random<T> {
75 79
76impl<T: Instance> CryptoRng for Random<T> {} 80impl<T: Instance> CryptoRng for Random<T> {}
77 81
78pub enum Error {
79 SeedError,
80 ClockError,
81}
82
83impl<T: Instance> traits::rng::Rng for Random<T> { 82impl<T: Instance> traits::rng::Rng for Random<T> {
84 type Error = Error; 83 type Error = Error;
85 #[rustfmt::skip] 84 #[rustfmt::skip]
@@ -146,12 +145,16 @@ macro_rules! impl_rng {
146 145
147 impl crate::rng::Instance for peripherals::RNG {} 146 impl crate::rng::Instance for peripherals::RNG {}
148 147
149 #[$crate::interrupt] 148 mod rng_irq {
150 unsafe fn $irq() { 149 use crate::interrupt;
151 let bits = $crate::pac::RNG.sr().read(); 150
152 if bits.drdy() || bits.seis() || bits.ceis() { 151 #[interrupt]
153 $crate::pac::RNG.cr().write(|reg| reg.set_ie(false)); 152 unsafe fn $irq() {
154 $crate::rng::RNG_WAKER.wake(); 153 let bits = $crate::pac::RNG.sr().read();
154 if bits.drdy() || bits.seis() || bits.ceis() {
155 $crate::pac::RNG.cr().write(|reg| reg.set_ie(false));
156 $crate::rng::RNG_WAKER.wake();
157 }
155 } 158 }
156 } 159 }
157 }; 160 };
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs
index 27f1be93d..3e00fdd4e 100644
--- a/embassy-stm32/src/spi/mod.rs
+++ b/embassy-stm32/src/spi/mod.rs
@@ -6,6 +6,12 @@ mod spi;
6 6
7pub use spi::*; 7pub use spi::*;
8 8
9pub enum Error {
10 Framing,
11 Crc,
12 Overrun,
13}
14
9// TODO move upwards in the tree 15// TODO move upwards in the tree
10pub enum ByteOrder { 16pub enum ByteOrder {
11 LsbFirst, 17 LsbFirst,
@@ -32,3 +38,64 @@ impl Default for Config {
32 } 38 }
33 } 39 }
34} 40}
41
42pub(crate) mod sealed {
43 use super::*;
44 use crate::gpio::Pin;
45 use embassy::util::AtomicWaker;
46
47 pub trait Instance {
48 fn regs() -> &'static crate::pac::spi::Spi;
49 }
50
51 pub trait SckPin<T: Instance>: Pin {
52 const AF: u8;
53 fn af(&self) -> u8 {
54 Self::AF
55 }
56 }
57
58 pub trait MosiPin<T: Instance>: Pin {
59 const AF: u8;
60 fn af(&self) -> u8 {
61 Self::AF
62 }
63 }
64
65 pub trait MisoPin<T: Instance>: Pin {
66 const AF: u8;
67 fn af(&self) -> u8 {
68 Self::AF
69 }
70 }
71}
72
73pub trait Instance: sealed::Instance + 'static {}
74
75pub trait SckPin<T: Instance>: sealed::SckPin<T> + 'static {}
76
77pub trait MosiPin<T: Instance>: sealed::MosiPin<T> + 'static {}
78
79pub trait MisoPin<T: Instance>: sealed::MisoPin<T> + 'static {}
80
81macro_rules! impl_spi {
82 ($inst:ident, $clk:ident) => {
83 impl crate::spi::sealed::Instance for peripherals::$inst {
84 fn regs() -> &'static crate::pac::spi::Spi {
85 &crate::pac::$inst
86 }
87 }
88
89 impl crate::spi::Instance for peripherals::$inst {}
90 };
91}
92
93macro_rules! impl_spi_pin {
94 ($inst:ident, $pin_func:ident, $pin:ident, $af:expr) => {
95 impl crate::spi::$pin_func<peripherals::$inst> for peripherals::$pin {}
96
97 impl crate::spi::sealed::$pin_func<peripherals::$inst> for peripherals::$pin {
98 const AF: u8 = $af;
99 }
100 };
101}
diff --git a/embassy-stm32/src/spi/spi_v1.rs b/embassy-stm32/src/spi/spi_v1.rs
index 3ef096e42..002fe207e 100644
--- a/embassy-stm32/src/spi/spi_v1.rs
+++ b/embassy-stm32/src/spi/spi_v1.rs
@@ -1,17 +1,15 @@
1#![macro_use] 1#![macro_use]
2 2
3pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 3use crate::gpio::{AnyPin, Pin};
4use core::marker::PhantomData;
5use embassy::interrupt::Interrupt;
6use embedded_hal::blocking::spi::{Write, Transfer};
7use embassy::util::Unborrow;
8use embassy_extras::{impl_unborrow, unborrow};
9use crate::gpio::{Pin, AnyPin};
10use crate::pac::gpio::vals::{Afr, Moder}; 4use crate::pac::gpio::vals::{Afr, Moder};
11use crate::pac::spi;
12use crate::pac::gpio::Gpio; 5use crate::pac::gpio::Gpio;
6use crate::pac::spi;
7use crate::spi::{ByteOrder, Config, Error, Instance, MisoPin, MosiPin, SckPin, WordSize};
13use crate::time::Hertz; 8use crate::time::Hertz;
14use crate::spi::{WordSize, Config, ByteOrder}; 9use core::marker::PhantomData;
10use embassy::util::Unborrow;
11use embassy_extras::unborrow;
12pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
15 13
16impl WordSize { 14impl WordSize {
17 fn dff(&self) -> spi::vals::Dff { 15 fn dff(&self) -> spi::vals::Dff {
@@ -23,7 +21,7 @@ impl WordSize {
23} 21}
24 22
25pub struct Spi<'d, T: Instance> { 23pub struct Spi<'d, T: Instance> {
26 peri: T, 24 //peri: T,
27 sck: AnyPin, 25 sck: AnyPin,
28 mosi: AnyPin, 26 mosi: AnyPin,
29 miso: AnyPin, 27 miso: AnyPin,
@@ -32,16 +30,17 @@ pub struct Spi<'d, T: Instance> {
32} 30}
33 31
34impl<'d, T: Instance> Spi<'d, T> { 32impl<'d, T: Instance> Spi<'d, T> {
35 pub fn new<F>(pclk: Hertz, 33 pub fn new<F>(
36 peri: impl Unborrow<Target=T> + 'd, 34 pclk: Hertz,
37 sck: impl Unborrow<Target=impl Sck<T>>, 35 peri: impl Unborrow<Target = T> + 'd,
38 mosi: impl Unborrow<Target=impl Mosi<T>>, 36 sck: impl Unborrow<Target = impl SckPin<T>>,
39 miso: impl Unborrow<Target=impl Miso<T>>, 37 mosi: impl Unborrow<Target = impl MosiPin<T>>,
40 freq: F, 38 miso: impl Unborrow<Target = impl MisoPin<T>>,
41 config: Config, 39 freq: F,
40 config: Config,
42 ) -> Self 41 ) -> Self
43 where 42 where
44 F: Into<Hertz> 43 F: Into<Hertz>,
45 { 44 {
46 unborrow!(peri); 45 unborrow!(peri);
47 unborrow!(sck, mosi, miso); 46 unborrow!(sck, mosi, miso);
@@ -57,10 +56,9 @@ impl<'d, T: Instance> Spi<'d, T> {
57 let miso = miso.degrade(); 56 let miso = miso.degrade();
58 57
59 unsafe { 58 unsafe {
60 T::regs().cr2() 59 T::regs().cr2().write(|w| {
61 .write(|w| { 60 w.set_ssoe(false);
62 w.set_ssoe(false); 61 });
63 });
64 } 62 }
65 63
66 let br = Self::compute_baud_rate(pclk, freq.into()); 64 let br = Self::compute_baud_rate(pclk, freq.into());
@@ -71,7 +69,7 @@ impl<'d, T: Instance> Spi<'d, T> {
71 match config.mode.phase == Phase::CaptureOnSecondTransition { 69 match config.mode.phase == Phase::CaptureOnSecondTransition {
72 true => spi::vals::Cpha::SECONDEDGE, 70 true => spi::vals::Cpha::SECONDEDGE,
73 false => spi::vals::Cpha::FIRSTEDGE, 71 false => spi::vals::Cpha::FIRSTEDGE,
74 } 72 },
75 ); 73 );
76 w.set_cpol(match config.mode.polarity == Polarity::IdleHigh { 74 w.set_cpol(match config.mode.polarity == Polarity::IdleHigh {
77 true => spi::vals::Cpol::IDLEHIGH, 75 true => spi::vals::Cpol::IDLEHIGH,
@@ -81,22 +79,20 @@ impl<'d, T: Instance> Spi<'d, T> {
81 w.set_mstr(spi::vals::Mstr::MASTER); 79 w.set_mstr(spi::vals::Mstr::MASTER);
82 w.set_br(spi::vals::Br(br)); 80 w.set_br(spi::vals::Br(br));
83 w.set_spe(true); 81 w.set_spe(true);
84 w.set_lsbfirst( 82 w.set_lsbfirst(match config.byte_order {
85 match config.byte_order { 83 ByteOrder::LsbFirst => spi::vals::Lsbfirst::LSBFIRST,
86 ByteOrder::LsbFirst => spi::vals::Lsbfirst::LSBFIRST, 84 ByteOrder::MsbFirst => spi::vals::Lsbfirst::MSBFIRST,
87 ByteOrder::MsbFirst => spi::vals::Lsbfirst::MSBFIRST, 85 });
88 }
89 );
90 w.set_ssi(true); 86 w.set_ssi(true);
91 w.set_ssm(true); 87 w.set_ssm(true);
92 w.set_crcen(false); 88 w.set_crcen(false);
93 w.set_bidimode(spi::vals::Bidimode::UNIDIRECTIONAL); 89 w.set_bidimode(spi::vals::Bidimode::UNIDIRECTIONAL);
94 w.set_dff( WordSize::EightBit.dff() ) 90 w.set_dff(WordSize::EightBit.dff())
95 }); 91 });
96 } 92 }
97 93
98 Self { 94 Self {
99 peri, 95 //peri,
100 sck, 96 sck,
101 mosi, 97 mosi,
102 miso, 98 miso,
@@ -112,7 +108,6 @@ impl<'d, T: Instance> Spi<'d, T> {
112 } 108 }
113 109
114 unsafe fn unconfigure_pin(block: Gpio, pin: usize) { 110 unsafe fn unconfigure_pin(block: Gpio, pin: usize) {
115 let (afr, n_af) = if pin < 8 { (0, pin) } else { (1, pin - 8) };
116 block.moder().modify(|w| w.set_moder(pin, Moder::ANALOG)); 111 block.moder().modify(|w| w.set_moder(pin, Moder::ANALOG));
117 } 112 }
118 113
@@ -132,14 +127,14 @@ impl<'d, T: Instance> Spi<'d, T> {
132 127
133 fn set_word_size(&mut self, word_size: WordSize) { 128 fn set_word_size(&mut self, word_size: WordSize) {
134 if self.current_word_size == word_size { 129 if self.current_word_size == word_size {
135 return 130 return;
136 } 131 }
137 unsafe { 132 unsafe {
138 T::regs().cr1().modify( |reg| { 133 T::regs().cr1().modify(|reg| {
139 reg.set_spe(false); 134 reg.set_spe(false);
140 reg.set_dff( word_size.dff() ) 135 reg.set_dff(word_size.dff())
141 }); 136 });
142 T::regs().cr1().modify( |reg| { 137 T::regs().cr1().modify(|reg| {
143 reg.set_spe(true); 138 reg.set_spe(true);
144 }); 139 });
145 self.current_word_size = word_size; 140 self.current_word_size = word_size;
@@ -157,12 +152,6 @@ impl<'d, T: Instance> Drop for Spi<'d, T> {
157 } 152 }
158} 153}
159 154
160pub enum Error {
161 Framing,
162 Crc,
163 Overrun,
164}
165
166impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> { 155impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> {
167 type Error = Error; 156 type Error = Error;
168 157
@@ -300,65 +289,3 @@ impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T>
300 Ok(words) 289 Ok(words)
301 } 290 }
302} 291}
303
304
305pub(crate) mod sealed {
306 use super::*;
307 use embassy::util::AtomicWaker;
308
309 pub trait Instance {
310 fn regs() -> &'static spi::Spi;
311 }
312
313 pub trait Sck<T: Instance>: Pin {
314 const AF: u8;
315 fn af(&self) -> u8 {
316 Self::AF
317 }
318 }
319
320 pub trait Mosi<T: Instance>: Pin {
321 const AF: u8;
322 fn af(&self) -> u8 {
323 Self::AF
324 }
325 }
326
327 pub trait Miso<T: Instance>: Pin {
328 const AF: u8;
329 fn af(&self) -> u8 {
330 Self::AF
331 }
332 }
333}
334
335pub trait Instance: sealed::Instance + 'static {}
336
337pub trait Sck<T: Instance>: sealed::Sck<T> + 'static {}
338
339pub trait Mosi<T: Instance>: sealed::Mosi<T> + 'static {}
340
341pub trait Miso<T: Instance>: sealed::Miso<T> + 'static {}
342
343macro_rules! impl_spi {
344 ($inst:ident, $clk:ident) => {
345 impl crate::spi::sealed::Instance for peripherals::$inst {
346 fn regs() -> &'static crate::pac::spi::Spi {
347 &crate::pac::$inst
348 }
349 }
350
351 impl crate::spi::Instance for peripherals::$inst {}
352 };
353}
354
355macro_rules! impl_spi_pin {
356 ($inst:ident, $pin_func:ident, $pin:ident, $af:expr) => {
357 impl crate::spi::$pin_func<peripherals::$inst> for peripherals::$pin {
358 }
359
360 impl crate::spi::sealed::$pin_func<peripherals::$inst> for peripherals::$pin {
361 const AF: u8 = $af;
362 }
363 }
364} \ No newline at end of file
diff --git a/embassy-stm32/src/spi/spi_v2.rs b/embassy-stm32/src/spi/spi_v2.rs
index 48370c84e..b6ae8b275 100644
--- a/embassy-stm32/src/spi/spi_v2.rs
+++ b/embassy-stm32/src/spi/spi_v2.rs
@@ -1,17 +1,15 @@
1#![macro_use] 1#![macro_use]
2 2
3pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 3use crate::gpio::{AnyPin, Pin};
4use core::marker::PhantomData;
5use embassy::interrupt::Interrupt;
6use embedded_hal::blocking::spi::{Write, Transfer};
7use embassy::util::Unborrow;
8use embassy_extras::{impl_unborrow, unborrow};
9use crate::gpio::{Pin, AnyPin};
10use crate::pac::gpio::vals::{Afr, Moder}; 4use crate::pac::gpio::vals::{Afr, Moder};
11use crate::pac::spi;
12use crate::pac::gpio::Gpio; 5use crate::pac::gpio::Gpio;
6use crate::pac::spi;
7use crate::spi::{ByteOrder, Config, Instance, MisoPin, MosiPin, SckPin, WordSize};
13use crate::time::Hertz; 8use crate::time::Hertz;
14use crate::spi::{WordSize, Config, ByteOrder}; 9use core::marker::PhantomData;
10use embassy::util::Unborrow;
11use embassy_extras::unborrow;
12pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
15 13
16impl WordSize { 14impl WordSize {
17 fn ds(&self) -> spi::vals::Ds { 15 fn ds(&self) -> spi::vals::Ds {
@@ -30,25 +28,25 @@ impl WordSize {
30} 28}
31 29
32pub struct Spi<'d, T: Instance> { 30pub struct Spi<'d, T: Instance> {
33 peri: T, 31 //peri: T,
34 sck: AnyPin, 32 sck: AnyPin,
35 mosi: AnyPin, 33 mosi: AnyPin,
36 miso: AnyPin, 34 miso: AnyPin,
37 //irq: T::Interrupt,
38 phantom: PhantomData<&'d mut T>, 35 phantom: PhantomData<&'d mut T>,
39} 36}
40 37
41impl<'d, T: Instance> Spi<'d, T> { 38impl<'d, T: Instance> Spi<'d, T> {
42 pub fn new<F>(pclk: Hertz, 39 pub fn new<F>(
43 peri: impl Unborrow<Target=T> + 'd, 40 pclk: Hertz,
44 sck: impl Unborrow<Target=impl Sck<T>>, 41 peri: impl Unborrow<Target = T> + 'd,
45 mosi: impl Unborrow<Target=impl Mosi<T>>, 42 sck: impl Unborrow<Target = impl SckPin<T>>,
46 miso: impl Unborrow<Target=impl Miso<T>>, 43 mosi: impl Unborrow<Target = impl MosiPin<T>>,
47 freq: F, 44 miso: impl Unborrow<Target = impl MisoPin<T>>,
48 config: Config, 45 freq: F,
46 config: Config,
49 ) -> Self 47 ) -> Self
50 where 48 where
51 F: Into<Hertz> 49 F: Into<Hertz>,
52 { 50 {
53 unborrow!(peri); 51 unborrow!(peri);
54 unborrow!(sck, mosi, miso); 52 unborrow!(sck, mosi, miso);
@@ -64,10 +62,9 @@ impl<'d, T: Instance> Spi<'d, T> {
64 let miso = miso.degrade(); 62 let miso = miso.degrade();
65 63
66 unsafe { 64 unsafe {
67 T::regs().cr2() 65 T::regs().cr2().write(|w| {
68 .write(|w| { 66 w.set_ssoe(false);
69 w.set_ssoe(false); 67 });
70 });
71 } 68 }
72 69
73 let br = Self::compute_baud_rate(pclk, freq.into()); 70 let br = Self::compute_baud_rate(pclk, freq.into());
@@ -78,7 +75,7 @@ impl<'d, T: Instance> Spi<'d, T> {
78 match config.mode.phase == Phase::CaptureOnSecondTransition { 75 match config.mode.phase == Phase::CaptureOnSecondTransition {
79 true => spi::vals::Cpha::SECONDEDGE, 76 true => spi::vals::Cpha::SECONDEDGE,
80 false => spi::vals::Cpha::FIRSTEDGE, 77 false => spi::vals::Cpha::FIRSTEDGE,
81 } 78 },
82 ); 79 );
83 w.set_cpol(match config.mode.polarity == Polarity::IdleHigh { 80 w.set_cpol(match config.mode.polarity == Polarity::IdleHigh {
84 true => spi::vals::Cpol::IDLEHIGH, 81 true => spi::vals::Cpol::IDLEHIGH,
@@ -88,12 +85,10 @@ impl<'d, T: Instance> Spi<'d, T> {
88 w.set_mstr(spi::vals::Mstr::MASTER); 85 w.set_mstr(spi::vals::Mstr::MASTER);
89 w.set_br(spi::vals::Br(br)); 86 w.set_br(spi::vals::Br(br));
90 w.set_spe(true); 87 w.set_spe(true);
91 w.set_lsbfirst( 88 w.set_lsbfirst(match config.byte_order {
92 match config.byte_order { 89 ByteOrder::LsbFirst => spi::vals::Lsbfirst::LSBFIRST,
93 ByteOrder::LsbFirst => spi::vals::Lsbfirst::LSBFIRST, 90 ByteOrder::MsbFirst => spi::vals::Lsbfirst::MSBFIRST,
94 ByteOrder::MsbFirst => spi::vals::Lsbfirst::MSBFIRST, 91 });
95 }
96 );
97 w.set_ssi(true); 92 w.set_ssi(true);
98 w.set_ssm(true); 93 w.set_ssm(true);
99 w.set_crcen(false); 94 w.set_crcen(false);
@@ -102,7 +97,7 @@ impl<'d, T: Instance> Spi<'d, T> {
102 } 97 }
103 98
104 Self { 99 Self {
105 peri, 100 //peri,
106 sck, 101 sck,
107 mosi, 102 mosi,
108 miso, 103 miso,
@@ -117,7 +112,6 @@ impl<'d, T: Instance> Spi<'d, T> {
117 } 112 }
118 113
119 unsafe fn unconfigure_pin(block: Gpio, pin: usize) { 114 unsafe fn unconfigure_pin(block: Gpio, pin: usize) {
120 let (afr, n_af) = if pin < 8 { (0, pin) } else { (1, pin - 8) };
121 block.moder().modify(|w| w.set_moder(pin, Moder::ANALOG)); 115 block.moder().modify(|w| w.set_moder(pin, Moder::ANALOG));
122 } 116 }
123 117
@@ -137,11 +131,10 @@ impl<'d, T: Instance> Spi<'d, T> {
137 131
138 fn set_word_size(word_size: WordSize) { 132 fn set_word_size(word_size: WordSize) {
139 unsafe { 133 unsafe {
140 T::regs().cr2() 134 T::regs().cr2().write(|w| {
141 .write(|w| { 135 w.set_ds(word_size.ds());
142 w.set_ds(word_size.ds()); 136 w.set_frxth(word_size.frxth());
143 w.set_frxth(word_size.frxth()); 137 });
144 });
145 } 138 }
146 } 139 }
147} 140}
@@ -299,65 +292,3 @@ impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T>
299 Ok(words) 292 Ok(words)
300 } 293 }
301} 294}
302
303
304pub(crate) mod sealed {
305 use super::*;
306 use embassy::util::AtomicWaker;
307
308 pub trait Instance {
309 fn regs() -> &'static spi::Spi;
310 }
311
312 pub trait Sck<T: Instance>: Pin {
313 const AF: u8;
314 fn af(&self) -> u8 {
315 Self::AF
316 }
317 }
318
319 pub trait Mosi<T: Instance>: Pin {
320 const AF: u8;
321 fn af(&self) -> u8 {
322 Self::AF
323 }
324 }
325
326 pub trait Miso<T: Instance>: Pin {
327 const AF: u8;
328 fn af(&self) -> u8 {
329 Self::AF
330 }
331 }
332}
333
334pub trait Instance: sealed::Instance + 'static {}
335
336pub trait Sck<T: Instance>: sealed::Sck<T> + 'static {}
337
338pub trait Mosi<T: Instance>: sealed::Mosi<T> + 'static {}
339
340pub trait Miso<T: Instance>: sealed::Miso<T> + 'static {}
341
342macro_rules! impl_spi {
343 ($inst:ident, $clk:ident) => {
344 impl crate::spi::sealed::Instance for peripherals::$inst {
345 fn regs() -> &'static crate::pac::spi::Spi {
346 &crate::pac::$inst
347 }
348 }
349
350 impl crate::spi::Instance for peripherals::$inst {}
351 };
352}
353
354macro_rules! impl_spi_pin {
355 ($inst:ident, $pin_func:ident, $pin:ident, $af:expr) => {
356 impl crate::spi::$pin_func<peripherals::$inst> for peripherals::$pin {
357 }
358
359 impl crate::spi::sealed::$pin_func<peripherals::$inst> for peripherals::$pin {
360 const AF: u8 = $af;
361 }
362 }
363} \ No newline at end of file
diff --git a/embassy-stm32/src/time.rs b/embassy-stm32/src/time.rs
index 4df799e30..c131415c4 100644
--- a/embassy-stm32/src/time.rs
+++ b/embassy-stm32/src/time.rs
@@ -1,4 +1,3 @@
1
2//! Time units 1//! Time units
3 2
4/// Bits per second 3/// Bits per second
@@ -124,4 +123,4 @@ impl Into<MicroSeconds> for MilliSeconds {
124 fn into(self) -> MicroSeconds { 123 fn into(self) -> MicroSeconds {
125 MicroSeconds(self.0 * 1_000) 124 MicroSeconds(self.0 * 1_000)
126 } 125 }
127} \ No newline at end of file 126}
diff --git a/embassy-stm32/stm32-data b/embassy-stm32/stm32-data
Subproject e06947f20f01c938d95410d4310c09d116dbca4 Subproject 500cb4b31aa767347f6360c6002c8a89adabd3b