diff options
| author | Dario Nieuwenhuis <[email protected]> | 2024-02-17 02:36:48 +0100 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2024-02-17 02:36:48 +0100 |
| commit | 0e80dc4cd929f201dd35b569aa0aadd891c58682 (patch) | |
| tree | 37bf70a9d6f4c8d50f460d4e95e677329d37db50 | |
| parent | 9352621058bb4e96b8897ec431cc939838729442 (diff) | |
tests/stm32: add stm32f091rc, stm32h503rb.
| -rw-r--r-- | tests/stm32/Cargo.toml | 2 | ||||
| -rw-r--r-- | tests/stm32/build.rs | 2 | ||||
| -rw-r--r-- | tests/stm32/src/bin/hash.rs | 1 | ||||
| -rw-r--r-- | tests/stm32/src/common.rs | 58 |
4 files changed, 62 insertions, 1 deletions
diff --git a/tests/stm32/Cargo.toml b/tests/stm32/Cargo.toml index d94045737..8554682a4 100644 --- a/tests/stm32/Cargo.toml +++ b/tests/stm32/Cargo.toml | |||
| @@ -30,6 +30,8 @@ stm32u5a5zj = ["embassy-stm32/stm32u5a5zj", "chrono", "rng"] | |||
| 30 | stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng"] | 30 | stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng"] |
| 31 | stm32wba52cg = ["embassy-stm32/stm32wba52cg", "chrono", "rng", "hash"] | 31 | stm32wba52cg = ["embassy-stm32/stm32wba52cg", "chrono", "rng", "hash"] |
| 32 | stm32wl55jc = ["embassy-stm32/stm32wl55jc-cm4", "not-gpdma", "rng", "chrono"] | 32 | stm32wl55jc = ["embassy-stm32/stm32wl55jc-cm4", "not-gpdma", "rng", "chrono"] |
| 33 | stm32f091rc = ["embassy-stm32/stm32f091rc", "cm0", "not-gpdma", "chrono"] | ||
| 34 | stm32h503rb = ["embassy-stm32/stm32h503rb", "rng"] | ||
| 33 | 35 | ||
| 34 | hash = [] | 36 | hash = [] |
| 35 | eth = ["embassy-executor/task-arena-size-16384"] | 37 | eth = ["embassy-executor/task-arena-size-16384"] |
diff --git a/tests/stm32/build.rs b/tests/stm32/build.rs index f32a7b2f8..bc5589164 100644 --- a/tests/stm32/build.rs +++ b/tests/stm32/build.rs | |||
| @@ -16,6 +16,8 @@ fn main() -> Result<(), Box<dyn Error>> { | |||
| 16 | feature = "stm32l073rz", | 16 | feature = "stm32l073rz", |
| 17 | // wrong ram size in stm32-data | 17 | // wrong ram size in stm32-data |
| 18 | feature = "stm32wl55jc", | 18 | feature = "stm32wl55jc", |
| 19 | // no VTOR, so interrupts can't work when running from RAM | ||
| 20 | feature = "stm32f091rc", | ||
| 19 | )) { | 21 | )) { |
| 20 | println!("cargo:rustc-link-arg-bins=-Tlink.x"); | 22 | println!("cargo:rustc-link-arg-bins=-Tlink.x"); |
| 21 | println!("cargo:rerun-if-changed=link.x"); | 23 | println!("cargo:rerun-if-changed=link.x"); |
diff --git a/tests/stm32/src/bin/hash.rs b/tests/stm32/src/bin/hash.rs index d1cfac5ce..8cc5d593f 100644 --- a/tests/stm32/src/bin/hash.rs +++ b/tests/stm32/src/bin/hash.rs | |||
| @@ -24,6 +24,7 @@ bind_interrupts!(struct Irqs { | |||
| 24 | feature = "stm32wba52cg", | 24 | feature = "stm32wba52cg", |
| 25 | feature = "stm32l552ze", | 25 | feature = "stm32l552ze", |
| 26 | feature = "stm32h563zi", | 26 | feature = "stm32h563zi", |
| 27 | feature = "stm32h503rb", | ||
| 27 | feature = "stm32u5a5zj", | 28 | feature = "stm32u5a5zj", |
| 28 | feature = "stm32u585ai" | 29 | feature = "stm32u585ai" |
| 29 | ))] | 30 | ))] |
diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs index 182ad6298..50a7f9bae 100644 --- a/tests/stm32/src/common.rs +++ b/tests/stm32/src/common.rs | |||
| @@ -54,6 +54,10 @@ teleprobe_meta::target!(b"nucleo-stm32l496zg"); | |||
| 54 | teleprobe_meta::target!(b"nucleo-stm32wl55jc"); | 54 | teleprobe_meta::target!(b"nucleo-stm32wl55jc"); |
| 55 | #[cfg(feature = "stm32wba52cg")] | 55 | #[cfg(feature = "stm32wba52cg")] |
| 56 | teleprobe_meta::target!(b"nucleo-stm32wba52cg"); | 56 | teleprobe_meta::target!(b"nucleo-stm32wba52cg"); |
| 57 | #[cfg(feature = "stm32f091rc")] | ||
| 58 | teleprobe_meta::target!(b"nucleo-stm32f091rc"); | ||
| 59 | #[cfg(feature = "stm32h503rb")] | ||
| 60 | teleprobe_meta::target!(b"nucleo-stm32h503rb"); | ||
| 57 | 61 | ||
| 58 | macro_rules! define_peris { | 62 | macro_rules! define_peris { |
| 59 | ($($name:ident = $peri:ident,)* $(@irq $irq_name:ident = $irq_code:tt,)*) => { | 63 | ($($name:ident = $peri:ident,)* $(@irq $irq_name:ident = $irq_code:tt,)*) => { |
| @@ -85,6 +89,12 @@ macro_rules! define_peris { | |||
| 85 | }; | 89 | }; |
| 86 | } | 90 | } |
| 87 | 91 | ||
| 92 | #[cfg(feature = "stm32f091rc")] | ||
| 93 | define_peris!( | ||
| 94 | UART = USART1, UART_TX = PA9, UART_RX = PA10, UART_TX_DMA = DMA1_CH4, UART_RX_DMA = DMA1_CH5, | ||
| 95 | SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH3, SPI_RX_DMA = DMA1_CH2, | ||
| 96 | @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;}, | ||
| 97 | ); | ||
| 88 | #[cfg(feature = "stm32f103c8")] | 98 | #[cfg(feature = "stm32f103c8")] |
| 89 | define_peris!( | 99 | define_peris!( |
| 90 | UART = USART1, UART_TX = PA9, UART_RX = PA10, UART_TX_DMA = DMA1_CH4, UART_RX_DMA = DMA1_CH5, | 100 | UART = USART1, UART_TX = PA9, UART_RX = PA10, UART_TX_DMA = DMA1_CH4, UART_RX_DMA = DMA1_CH5, |
| @@ -157,6 +167,12 @@ define_peris!( | |||
| 157 | SPI = SPI4, SPI_SCK = PE12, SPI_MOSI = PE14, SPI_MISO = PE13, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1, | 167 | SPI = SPI4, SPI_SCK = PE12, SPI_MOSI = PE14, SPI_MISO = PE13, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1, |
| 158 | @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;}, | 168 | @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;}, |
| 159 | ); | 169 | ); |
| 170 | #[cfg(feature = "stm32h503rb")] | ||
| 171 | define_peris!( | ||
| 172 | UART = USART1, UART_TX = PB14, UART_RX = PB15, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1, | ||
| 173 | SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1, | ||
| 174 | @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;}, | ||
| 175 | ); | ||
| 160 | #[cfg(feature = "stm32c031c6")] | 176 | #[cfg(feature = "stm32c031c6")] |
| 161 | define_peris!( | 177 | define_peris!( |
| 162 | UART = USART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2, | 178 | UART = USART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = DMA1_CH1, UART_RX_DMA = DMA1_CH2, |
| @@ -247,6 +263,22 @@ pub fn config() -> Config { | |||
| 247 | config.rcc = embassy_stm32::rcc::WPAN_DEFAULT; | 263 | config.rcc = embassy_stm32::rcc::WPAN_DEFAULT; |
| 248 | } | 264 | } |
| 249 | 265 | ||
| 266 | #[cfg(feature = "stm32f091rc")] | ||
| 267 | { | ||
| 268 | use embassy_stm32::rcc::*; | ||
| 269 | config.rcc.hse = Some(Hse { | ||
| 270 | freq: Hertz(8_000_000), | ||
| 271 | mode: HseMode::Bypass, | ||
| 272 | }); | ||
| 273 | config.rcc.pll = Some(Pll { | ||
| 274 | src: PllSource::HSE, | ||
| 275 | prediv: PllPreDiv::DIV1, | ||
| 276 | mul: PllMul::MUL6, | ||
| 277 | }); | ||
| 278 | config.rcc.sys = Sysclk::PLL1_P; | ||
| 279 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | ||
| 280 | config.rcc.apb1_pre = APBPrescaler::DIV1; | ||
| 281 | } | ||
| 250 | #[cfg(feature = "stm32f103c8")] | 282 | #[cfg(feature = "stm32f103c8")] |
| 251 | { | 283 | { |
| 252 | use embassy_stm32::rcc::*; | 284 | use embassy_stm32::rcc::*; |
| @@ -264,7 +296,6 @@ pub fn config() -> Config { | |||
| 264 | config.rcc.apb1_pre = APBPrescaler::DIV2; | 296 | config.rcc.apb1_pre = APBPrescaler::DIV2; |
| 265 | config.rcc.apb2_pre = APBPrescaler::DIV1; | 297 | config.rcc.apb2_pre = APBPrescaler::DIV1; |
| 266 | } | 298 | } |
| 267 | |||
| 268 | #[cfg(feature = "stm32f207zg")] | 299 | #[cfg(feature = "stm32f207zg")] |
| 269 | { | 300 | { |
| 270 | use embassy_stm32::rcc::*; | 301 | use embassy_stm32::rcc::*; |
| @@ -400,6 +431,31 @@ pub fn config() -> Config { | |||
| 400 | config.rcc.voltage_scale = VoltageScale::Scale0; | 431 | config.rcc.voltage_scale = VoltageScale::Scale0; |
| 401 | } | 432 | } |
| 402 | 433 | ||
| 434 | #[cfg(feature = "stm32h503rb")] | ||
| 435 | { | ||
| 436 | use embassy_stm32::rcc::*; | ||
| 437 | config.rcc.hsi = None; | ||
| 438 | config.rcc.hsi48 = Some(Default::default()); // needed for RNG | ||
| 439 | config.rcc.hse = Some(Hse { | ||
| 440 | freq: Hertz(24_000_000), | ||
| 441 | mode: HseMode::Oscillator, | ||
| 442 | }); | ||
| 443 | config.rcc.pll1 = Some(Pll { | ||
| 444 | source: PllSource::HSE, | ||
| 445 | prediv: PllPreDiv::DIV6, | ||
| 446 | mul: PllMul::MUL125, | ||
| 447 | divp: Some(PllDiv::DIV2), | ||
| 448 | divq: Some(PllDiv::DIV2), | ||
| 449 | divr: None, | ||
| 450 | }); | ||
| 451 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | ||
| 452 | config.rcc.apb1_pre = APBPrescaler::DIV1; | ||
| 453 | config.rcc.apb2_pre = APBPrescaler::DIV1; | ||
| 454 | config.rcc.apb3_pre = APBPrescaler::DIV1; | ||
| 455 | config.rcc.sys = Sysclk::PLL1_P; | ||
| 456 | config.rcc.voltage_scale = VoltageScale::Scale0; | ||
| 457 | } | ||
| 458 | |||
| 403 | #[cfg(any(feature = "stm32h755zi", feature = "stm32h753zi"))] | 459 | #[cfg(any(feature = "stm32h755zi", feature = "stm32h753zi"))] |
| 404 | { | 460 | { |
| 405 | use embassy_stm32::rcc::*; | 461 | use embassy_stm32::rcc::*; |
