diff options
Diffstat (limited to 'tests/stm32')
| -rw-r--r-- | tests/stm32/Cargo.toml | 8 | ||||
| -rw-r--r-- | tests/stm32/src/bin/adc.rs | 39 | ||||
| -rw-r--r-- | tests/stm32/src/common.rs | 1 |
3 files changed, 47 insertions, 1 deletions
diff --git a/tests/stm32/Cargo.toml b/tests/stm32/Cargo.toml index 8fcb6b2b4..496a9de18 100644 --- a/tests/stm32/Cargo.toml +++ b/tests/stm32/Cargo.toml | |||
| @@ -32,7 +32,7 @@ stm32l552ze = ["embassy-stm32/stm32l552ze", "not-gpdma", "rng", "hash", "dual-ba | |||
| 32 | stm32u585ai = ["embassy-stm32/stm32u585ai", "spi-v345", "chrono", "rng", "hash", "cordic"] | 32 | stm32u585ai = ["embassy-stm32/stm32u585ai", "spi-v345", "chrono", "rng", "hash", "cordic"] |
| 33 | stm32u5a5zj = ["embassy-stm32/stm32u5a5zj", "spi-v345", "chrono", "rng", "hash"] # FIXME: cordic test cause it crash | 33 | stm32u5a5zj = ["embassy-stm32/stm32u5a5zj", "spi-v345", "chrono", "rng", "hash"] # FIXME: cordic test cause it crash |
| 34 | stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng", "hsem", "stop"] | 34 | stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng", "hsem", "stop"] |
| 35 | stm32wba52cg = ["embassy-stm32/stm32wba52cg", "spi-v345", "chrono", "rng", "hash"] | 35 | stm32wba52cg = ["embassy-stm32/stm32wba52cg", "spi-v345", "chrono", "rng", "hash", "adc"] |
| 36 | stm32wl55jc = ["embassy-stm32/stm32wl55jc-cm4", "not-gpdma", "rng", "chrono", "hsem"] | 36 | stm32wl55jc = ["embassy-stm32/stm32wl55jc-cm4", "not-gpdma", "rng", "chrono", "hsem"] |
| 37 | stm32f091rc = ["embassy-stm32/stm32f091rc", "cm0", "not-gpdma", "chrono"] | 37 | stm32f091rc = ["embassy-stm32/stm32f091rc", "cm0", "not-gpdma", "chrono"] |
| 38 | stm32h503rb = ["embassy-stm32/stm32h503rb", "spi-v345", "rng", "stop"] | 38 | stm32h503rb = ["embassy-stm32/stm32h503rb", "spi-v345", "rng", "stop"] |
| @@ -56,6 +56,7 @@ mac = ["dep:embassy-stm32-wpan", "embassy-stm32-wpan/mac"] | |||
| 56 | embassy-stm32-wpan = [] | 56 | embassy-stm32-wpan = [] |
| 57 | not-gpdma = [] | 57 | not-gpdma = [] |
| 58 | dac = [] | 58 | dac = [] |
| 59 | adc = [] | ||
| 59 | ucpd = [] | 60 | ucpd = [] |
| 60 | cordic = ["dep:num-traits"] | 61 | cordic = ["dep:num-traits"] |
| 61 | hsem = [] | 62 | hsem = [] |
| @@ -111,6 +112,11 @@ path = "src/bin/afio.rs" | |||
| 111 | required-features = [ "afio",] | 112 | required-features = [ "afio",] |
| 112 | 113 | ||
| 113 | [[bin]] | 114 | [[bin]] |
| 115 | name = "adc" | ||
| 116 | path = "src/bin/adc.rs" | ||
| 117 | required-features = [ "adc",] | ||
| 118 | |||
| 119 | [[bin]] | ||
| 114 | name = "can" | 120 | name = "can" |
| 115 | path = "src/bin/can.rs" | 121 | path = "src/bin/can.rs" |
| 116 | required-features = [ "can",] | 122 | required-features = [ "can",] |
diff --git a/tests/stm32/src/bin/adc.rs b/tests/stm32/src/bin/adc.rs new file mode 100644 index 000000000..6cedc6498 --- /dev/null +++ b/tests/stm32/src/bin/adc.rs | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | #![no_std] | ||
| 2 | #![no_main] | ||
| 3 | |||
| 4 | // required-features: dac | ||
| 5 | |||
| 6 | #[path = "../common.rs"] | ||
| 7 | mod common; | ||
| 8 | |||
| 9 | use common::*; | ||
| 10 | use embassy_executor::Spawner; | ||
| 11 | use embassy_stm32::adc::{Adc, SampleTime}; | ||
| 12 | use embassy_time::Timer; | ||
| 13 | use {defmt_rtt as _, panic_probe as _}; | ||
| 14 | |||
| 15 | #[embassy_executor::main] | ||
| 16 | async fn main(_spawner: Spawner) { | ||
| 17 | // Initialize the board and obtain a Peripherals instance | ||
| 18 | let p: embassy_stm32::Peripherals = init(); | ||
| 19 | |||
| 20 | let adc = peri!(p, ADC); | ||
| 21 | let mut adc_pin = peri!(p, DAC_PIN); | ||
| 22 | |||
| 23 | let mut adc = Adc::new_adc4(adc); | ||
| 24 | |||
| 25 | // Now wait a little to obtain a stable value | ||
| 26 | Timer::after_millis(30).await; | ||
| 27 | let _ = adc.blocking_read(&mut adc_pin, SampleTime::from_bits(0)); | ||
| 28 | |||
| 29 | for _ in 0..=255 { | ||
| 30 | // Now wait a little to obtain a stable value | ||
| 31 | Timer::after_millis(30).await; | ||
| 32 | |||
| 33 | // Need to steal the peripherals here because PA4 is obviously in use already | ||
| 34 | let _ = adc.blocking_read(&mut adc_pin, SampleTime::from_bits(0)); | ||
| 35 | } | ||
| 36 | |||
| 37 | info!("Test OK"); | ||
| 38 | cortex_m::asm::bkpt(); | ||
| 39 | } | ||
diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs index 096cce947..9f88b182a 100644 --- a/tests/stm32/src/common.rs +++ b/tests/stm32/src/common.rs | |||
| @@ -259,6 +259,7 @@ define_peris!( | |||
| 259 | define_peris!( | 259 | define_peris!( |
| 260 | UART = LPUART1, UART_TX = PB5, UART_RX = PA10, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1, | 260 | UART = LPUART1, UART_TX = PB5, UART_RX = PA10, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1, |
| 261 | SPI = SPI1, SPI_SCK = PB4, SPI_MOSI = PA15, SPI_MISO = PB3, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1, | 261 | SPI = SPI1, SPI_SCK = PB4, SPI_MOSI = PA15, SPI_MISO = PB3, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1, |
| 262 | ADC = ADC4, DAC_PIN = PA0, | ||
| 262 | @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;}, | 263 | @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;}, |
| 263 | ); | 264 | ); |
| 264 | #[cfg(feature = "stm32h7s3l8")] | 265 | #[cfg(feature = "stm32h7s3l8")] |
