aboutsummaryrefslogtreecommitdiff
path: root/tests/stm32/src/common.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stm32/src/common.rs')
-rw-r--r--tests/stm32/src/common.rs205
1 files changed, 201 insertions, 4 deletions
diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs
index ca5cb43ac..9c0b8c39e 100644
--- a/tests/stm32/src/common.rs
+++ b/tests/stm32/src/common.rs
@@ -24,6 +24,131 @@ teleprobe_meta::target!(b"iot-stm32u585ai");
24teleprobe_meta::target!(b"nucleo-stm32h563zi"); 24teleprobe_meta::target!(b"nucleo-stm32h563zi");
25#[cfg(feature = "stm32c031c6")] 25#[cfg(feature = "stm32c031c6")]
26teleprobe_meta::target!(b"nucleo-stm32c031c6"); 26teleprobe_meta::target!(b"nucleo-stm32c031c6");
27#[cfg(feature = "stm32l073rz")]
28teleprobe_meta::target!(b"nucleo-stm32l073rz");
29#[cfg(feature = "stm32l152re")]
30teleprobe_meta::target!(b"nucleo-stm32l152re");
31#[cfg(feature = "stm32l4a6zg")]
32teleprobe_meta::target!(b"nucleo-stm32l4a6zg");
33#[cfg(feature = "stm32l4r5zi")]
34teleprobe_meta::target!(b"nucleo-stm32l4r5zi");
35#[cfg(feature = "stm32l552ze")]
36teleprobe_meta::target!(b"nucleo-stm32l552ze");
37
38macro_rules! define_peris {
39 ($($name:ident = $peri:ident,)* $(@irq $irq_name:ident = $irq_code:tt,)*) => {
40 #[allow(unused_macros)]
41 macro_rules! peri {
42 $(
43 ($p:expr, $name) => {
44 $p.$peri
45 };
46 )*
47 }
48 #[allow(unused_macros)]
49 macro_rules! irqs {
50 $(
51 ($irq_name) => {{
52 embassy_stm32::bind_interrupts!(struct Irqs $irq_code);
53 Irqs
54 }};
55 )*
56 }
57
58 #[allow(unused)]
59 #[allow(non_camel_case_types)]
60 pub mod peris {
61 $(
62 pub type $name = embassy_stm32::peripherals::$peri;
63 )*
64 }
65 };
66}
67
68#[cfg(feature = "stm32f103c8")]
69define_peris!(
70 UART = USART1, UART_TX = PA9, UART_RX = PA10, UART_TX_DMA = DMA1_CH4, UART_RX_DMA = DMA1_CH5,
71 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH3, SPI_RX_DMA = DMA1_CH2,
72 @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;},
73);
74#[cfg(feature = "stm32g491re")]
75define_peris!(
76 UART = USART1, UART_TX = PC4, UART_RX = PC5, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2,
77 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2,
78 @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;},
79);
80#[cfg(feature = "stm32g071rb")]
81define_peris!(
82 UART = USART1, UART_TX = PC4, UART_RX = PC5, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2,
83 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2,
84 @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;},
85);
86#[cfg(feature = "stm32f429zi")]
87define_peris!(
88 UART = USART6, UART_TX = PG14, UART_RX = PG9, UART_TX_DMA = DMA2_CH6, UART_RX_DMA = DMA2_CH1,
89 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA2_CH3, SPI_RX_DMA = DMA2_CH2,
90 @irq UART = {USART6 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART6>;},
91);
92#[cfg(feature = "stm32wb55rg")]
93define_peris!(
94 UART = LPUART1, UART_TX = PA2, UART_RX = PA3, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2,
95 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2,
96 @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;},
97);
98#[cfg(feature = "stm32h755zi")]
99define_peris!(
100 UART = USART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = DMA1_CH0, UART_RX_DMA = DMA1_CH1,
101 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PB5, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH0, SPI_RX_DMA = DMA1_CH1,
102 @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;},
103);
104#[cfg(feature = "stm32u585ai")]
105define_peris!(
106 UART = USART3, UART_TX = PD8, UART_RX = PD9, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1,
107 SPI = SPI1, SPI_SCK = PE13, SPI_MOSI = PE15, SPI_MISO = PE14, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1,
108 @irq UART = {USART3 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART3>;},
109);
110#[cfg(feature = "stm32h563zi")]
111define_peris!(
112 UART = LPUART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1,
113 SPI = SPI4, SPI_SCK = PE12, SPI_MOSI = PE14, SPI_MISO = PE13, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1,
114 @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;},
115);
116#[cfg(feature = "stm32c031c6")]
117define_peris!(
118 UART = USART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2,
119 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2,
120 @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;},
121);
122#[cfg(feature = "stm32l4a6zg")]
123define_peris!(
124 UART = USART3, UART_TX = PD8, UART_RX = PD9, UART_TX_DMA = DMA1_CH2, UART_RX_DMA = DMA1_CH3,
125 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH3, SPI_RX_DMA = DMA1_CH2,
126 @irq UART = {USART3 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART3>;},
127);
128#[cfg(feature = "stm32l4r5zi")]
129define_peris!(
130 UART = USART3, UART_TX = PD8, UART_RX = PD9, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2,
131 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2,
132 @irq UART = {USART3 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART3>;},
133);
134#[cfg(feature = "stm32l073rz")]
135define_peris!(
136 UART = USART4, UART_TX = PA0, UART_RX = PA1, UART_TX_DMA = DMA1_CH3, UART_RX_DMA = DMA1_CH2,
137 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH3, SPI_RX_DMA = DMA1_CH2,
138 @irq UART = {USART4_5 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART4>;},
139);
140#[cfg(feature = "stm32l152re")]
141define_peris!(
142 UART = USART3, UART_TX = PB10, UART_RX = PB11, UART_TX_DMA = DMA1_CH2, UART_RX_DMA = DMA1_CH3,
143 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH3, SPI_RX_DMA = DMA1_CH2,
144 @irq UART = {USART3 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART3>;},
145);
146#[cfg(feature = "stm32l552ze")]
147define_peris!(
148 UART = USART3, UART_TX = PD8, UART_RX = PD9, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2,
149 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2,
150 @irq UART = {USART3 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART3>;},
151);
27 152
28pub fn config() -> Config { 153pub fn config() -> Config {
29 #[allow(unused_mut)] 154 #[allow(unused_mut)]
@@ -31,14 +156,86 @@ pub fn config() -> Config {
31 156
32 #[cfg(feature = "stm32h755zi")] 157 #[cfg(feature = "stm32h755zi")]
33 { 158 {
34 config.rcc.sys_ck = Some(Hertz(400_000_000)); 159 use embassy_stm32::rcc::*;
35 config.rcc.pll1.q_ck = Some(Hertz(100_000_000)); 160 config.rcc.hsi = Some(Hsi::Mhz64);
36 config.rcc.adc_clock_source = embassy_stm32::rcc::AdcClockSource::PerCk; 161 config.rcc.csi = true;
162 config.rcc.pll_src = PllSource::Hsi;
163 config.rcc.pll1 = Some(Pll {
164 prediv: 4,
165 mul: 50,
166 divp: Some(2),
167 divq: Some(8), // SPI1 cksel defaults to pll1_q
168 divr: None,
169 });
170 config.rcc.pll2 = Some(Pll {
171 prediv: 4,
172 mul: 50,
173 divp: Some(8), // 100mhz
174 divq: None,
175 divr: None,
176 });
177 config.rcc.sys = Sysclk::Pll1P; // 400 Mhz
178 config.rcc.ahb_pre = AHBPrescaler::DIV2; // 200 Mhz
179 config.rcc.apb1_pre = APBPrescaler::DIV2; // 100 Mhz
180 config.rcc.apb2_pre = APBPrescaler::DIV2; // 100 Mhz
181 config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz
182 config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz
183 config.rcc.voltage_scale = VoltageScale::Scale1;
184 config.rcc.adc_clock_source = AdcClockSource::PLL2_P;
185 }
186
187 #[cfg(any(feature = "stm32l4a6zg", feature = "stm32l4r5zi"))]
188 {
189 use embassy_stm32::rcc::*;
190 config.rcc.mux = ClockSrc::PLL(
191 // 72Mhz clock (16 / 1 * 18 / 4)
192 PLLSource::HSI16,
193 PLLClkDiv::Div4,
194 PLLSrcDiv::Div1,
195 PLLMul::Mul18,
196 Some(PLLClkDiv::Div6), // 48Mhz (16 / 1 * 18 / 6)
197 );
198 }
199
200 #[cfg(any(feature = "stm32l552ze"))]
201 {
202 use embassy_stm32::rcc::*;
203 config.rcc.mux = ClockSrc::PLL(
204 // 110Mhz clock (16 / 4 * 55 / 2)
205 PLLSource::HSI16,
206 PLLClkDiv::Div2,
207 PLLSrcDiv::Div4,
208 PLLMul::Mul55,
209 None,
210 );
37 } 211 }
38 212
39 #[cfg(feature = "stm32u585ai")] 213 #[cfg(feature = "stm32u585ai")]
40 { 214 {
41 config.rcc.mux = embassy_stm32::rcc::ClockSrc::MSI(embassy_stm32::rcc::MSIRange::Range48mhz); 215 use embassy_stm32::rcc::*;
216 config.rcc.mux = ClockSrc::MSI(MSIRange::Range48mhz);
217 }
218
219 #[cfg(feature = "stm32l073rz")]
220 {
221 use embassy_stm32::rcc::*;
222 config.rcc.mux = ClockSrc::PLL(
223 // 32Mhz clock (16 * 4 / 2)
224 PLLSource::HSI16,
225 PLLMul::Mul4,
226 PLLDiv::Div2,
227 );
228 }
229
230 #[cfg(any(feature = "stm32l152re"))]
231 {
232 use embassy_stm32::rcc::*;
233 config.rcc.mux = ClockSrc::PLL(
234 // 32Mhz clock (16 * 4 / 2)
235 PLLSource::HSI,
236 PLLMul::Mul4,
237 PLLDiv::Div2,
238 );
42 } 239 }
43 240
44 config 241 config