diff --git a/examples/button.rs b/examples/button.rs index ef7990ec..7064e363 100644 --- a/examples/button.rs +++ b/examples/button.rs @@ -3,7 +3,7 @@ use stm32g4xx_hal::{ //delay::{DelayExt, SYSTDelayExt}, - gpio::{gpioc, ExtiPin, GpioExt, Input, PullDown, SignalEdge}, + gpio::{self, ExtiPin, GpioExt, Input, PullDown, SignalEdge}, rcc::RccExt, stm32, stm32::{interrupt, Interrupt}, @@ -16,7 +16,7 @@ use cortex_m::{asm::wfi, interrupt::Mutex}; use cortex_m_rt::entry; use embedded_hal::digital::OutputPin; -type ButtonPin = gpioc::PC13>; +type ButtonPin = gpio::PC13>; // Make LED pin globally available static G_BUTTON: Mutex>> = Mutex::new(RefCell::new(None)); diff --git a/examples/pwm.rs b/examples/pwm.rs index cee8f7d7..9b94f527 100644 --- a/examples/pwm.rs +++ b/examples/pwm.rs @@ -3,9 +3,7 @@ #![no_std] use cortex_m_rt::entry; -use hal::gpio::gpioa::PA8; -use hal::gpio::Alternate; -use hal::gpio::AF6; +use hal::gpio::{AF6, PA8}; use hal::prelude::*; use hal::stm32; use hal::time::RateExtU32; @@ -23,7 +21,7 @@ fn main() -> ! { let dp = stm32::Peripherals::take().expect("cannot take peripherals"); let mut rcc = dp.RCC.constrain(); let gpioa = dp.GPIOA.split(&mut rcc); - let pin: PA8> = gpioa.pa8.into_alternate(); + let pin: PA8 = gpioa.pa8.into_alternate(); let mut pwm = dp.TIM1.pwm(pin, 100.Hz(), &mut rcc); diff --git a/examples/spi-dma.rs b/examples/spi-dma.rs index 3404f2c0..318ab48f 100644 --- a/examples/spi-dma.rs +++ b/examples/spi-dma.rs @@ -6,11 +6,7 @@ use crate::hal::{ delay::DelayFromCountDownTimer, - gpio::gpioa::PA5, - gpio::gpioa::PA6, - gpio::gpioa::PA7, - gpio::Alternate, - gpio::AF5, + gpio::{AF5, PA5, PA6, PA7}, prelude::*, pwr::PwrExt, rcc::Config, @@ -44,9 +40,9 @@ fn main() -> ! { let mut delay_tim2 = DelayFromCountDownTimer::new(timer2.start_count_down(100.millis())); let gpioa = dp.GPIOA.split(&mut rcc); - let sclk: PA5> = gpioa.pa5.into_alternate(); - let miso: PA6> = gpioa.pa6.into_alternate(); - let mosi: PA7> = gpioa.pa7.into_alternate(); + let sclk: PA5 = gpioa.pa5.into_alternate(); + let miso: PA6 = gpioa.pa6.into_alternate(); + let mosi: PA7 = gpioa.pa7.into_alternate(); let spi = dp .SPI1 diff --git a/examples/spi-example.rs b/examples/spi-example.rs index a661e248..33b86c2b 100644 --- a/examples/spi-example.rs +++ b/examples/spi-example.rs @@ -7,11 +7,7 @@ use hal::{ delay::DelayFromCountDownTimer, - gpio::gpioa::PA5, - gpio::gpioa::PA6, - gpio::gpioa::PA7, - gpio::Alternate, - gpio::AF5, + gpio::{AF5, PA5, PA6, PA7}, hal_02::spi::FullDuplex, prelude::*, pwr::PwrExt, @@ -41,9 +37,9 @@ fn main() -> ! { let mut delay_tim2 = DelayFromCountDownTimer::new(timer2.start_count_down(100.millis())); let gpioa = dp.GPIOA.split(&mut rcc); - let sclk: PA5> = gpioa.pa5.into_alternate(); - let miso: PA6> = gpioa.pa6.into_alternate(); - let mosi: PA7> = gpioa.pa7.into_alternate(); + let sclk: PA5 = gpioa.pa5.into_alternate(); + let miso: PA6 = gpioa.pa6.into_alternate(); + let mosi: PA7 = gpioa.pa7.into_alternate(); let mut spi = dp .SPI1 @@ -52,13 +48,13 @@ fn main() -> ! { cs.set_high().unwrap(); // "Hello world!" - let message: [char; 12] = ['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']; + let message = b"Hello world!"; let mut received_byte: u8; loop { - for byte in message.iter() { + for &byte in message { cs.set_low().unwrap(); - spi.send(*byte as u8).unwrap(); + spi.send(byte).unwrap(); received_byte = nb::block!(FullDuplex::read(&mut spi)).unwrap(); cs.set_high().unwrap(); diff --git a/examples/spi-sd.rs b/examples/spi-sd.rs index 7be0e077..6a98d877 100644 --- a/examples/spi-sd.rs +++ b/examples/spi-sd.rs @@ -6,11 +6,7 @@ extern crate embedded_sdmmc; use fugit::RateExtU32; -use hal::gpio::gpiob::PB14; -use hal::gpio::gpiob::PB15; -use hal::gpio::gpiof::PF9; -use hal::gpio::Alternate; -use hal::gpio::AF5; +use hal::gpio::{AF5, PB14, PB15, PF9}; use hal::prelude::*; use hal::pwr::PwrExt; use hal::rcc::Config; @@ -43,9 +39,9 @@ fn main() -> ! { cs }; - let sck: PF9> = gpiof.pf9.into_alternate(); - let miso: PB14> = gpiob.pb14.into_alternate(); - let mosi: PB15> = gpiob.pb15.into_alternate(); + let sck: PF9 = gpiof.pf9.into_alternate(); + let miso: PB14 = gpiob.pb14.into_alternate(); + let mosi: PB15 = gpiob.pb15.into_alternate(); let spi = dp .SPI2 diff --git a/src/can.rs b/src/can.rs index dbfef79d..0dda3c68 100644 --- a/src/can.rs +++ b/src/can.rs @@ -53,11 +53,11 @@ macro_rules! pins { rx: [ $($( #[ $pmetarx:meta ] )* $rx:ident<$rxaf:ident>),+ $(,)? ])) => { $( $( #[ $pmetatx ] )* - impl sealed::Tx<$PER> for $tx> {} + impl sealed::Tx<$PER> for $tx<$txaf> {} )+ $( $( #[ $pmetarx ] )* - impl sealed::Rx<$PER> for $rx> {} + impl sealed::Rx<$PER> for $rx<$rxaf> {} )+ }; } @@ -65,12 +65,7 @@ macro_rules! pins { mod fdcan1 { use super::sealed; use super::{Can, CanExt}; - use crate::gpio::{ - gpioa::{PA11, PA12}, - gpiob::{PB8, PB9}, - gpiod::{PD0, PD1}, - AF9, - }; + use crate::gpio::{AF9, PA11, PA12, PB8, PB9, PD0, PD1}; use crate::stm32::FDCAN1; use fdcan; @@ -119,10 +114,7 @@ mod fdcan1 { mod fdcan2 { use super::sealed; use super::{Can, CanExt}; - use crate::gpio::{ - gpiob::{PB12, PB13, PB5, PB6}, - AF9, - }; + use crate::gpio::{AF9, PB12, PB13, PB5, PB6}; use crate::stm32::FDCAN2; use fdcan; use fdcan::message_ram; @@ -166,11 +158,7 @@ mod fdcan2 { mod fdcan3 { use super::sealed; use super::{Can, CanExt}; - use crate::gpio::{ - gpioa::{PA15, PA8}, - gpiob::{PB3, PB4}, - AF11, - }; + use crate::gpio::{AF11, PA15, PA8, PB3, PB4}; use crate::stm32::FDCAN3; use fdcan; use fdcan::message_ram; diff --git a/src/comparator.rs b/src/comparator.rs index a9ebe9c7..2fb4772f 100644 --- a/src/comparator.rs +++ b/src/comparator.rs @@ -9,31 +9,8 @@ use core::marker::PhantomData; use crate::dac; use crate::exti::{Event as ExtiEvent, ExtiExt}; -use crate::gpio::{ - gpioa::{PA0, PA1, PA11, PA12, PA2, PA3, PA4, PA5, PA6, PA7}, - gpiob::{PB0, PB1, PB14, PB15, PB2, PB6, PB7, PB8, PB9}, - gpioc::PC2, - gpiof::PF4, - Analog, OpenDrain, Output, PushPull, SignalEdge, AF2, AF3, AF8, -}; +use crate::gpio::{self, Analog, OpenDrain, Output, PushPull, SignalEdge}; -#[cfg(any( - feature = "stm32g473", - feature = "stm32g483", - feature = "stm32g474", - feature = "stm32g484" -))] -use crate::gpio::{ - gpioa::{PA10, PA8, PA9}, - gpiob::{PB10, PB11, PB12, PB13}, - gpioc::{PC6, PC7, PC8}, - gpiod::{PD10, PD11, PD12, PD13, PD14, PD15}, - AF7, -}; - -use crate::gpio::gpioc::{PC0, PC1}; -use crate::gpio::gpioe::{PE7, PE8}; -use crate::gpio::gpiof::PF1; use crate::rcc::{Clocks, Rcc}; use crate::stasis; use crate::stm32::{COMP, EXTI}; @@ -161,13 +138,13 @@ pub trait NegativeInput { macro_rules! positive_input_pin { ($COMP:ident, $pin_0:ident, $pin_1:ident) => { - impl PositiveInput<$COMP> for $pin_0 { + impl PositiveInput<$COMP> for gpio::$pin_0 { fn setup(_s: impl stasis::EntitlementLock, comp: &mut $COMP) { comp.csr().modify(|_, w| w.inpsel().bit(false)); } } - impl PositiveInput<$COMP> for $pin_1 { + impl PositiveInput<$COMP> for gpio::$pin_1 { fn setup(_s: impl stasis::EntitlementLock, comp: &mut $COMP) { comp.csr().modify(|_, w| w.inpsel().bit(true)); } @@ -224,10 +201,10 @@ macro_rules! negative_input_pin { } negative_input_pin! { - COMP1: PA4, PA0, - COMP2: PA5, PA2, - COMP3: PF1, PC0, - COMP4: PE8, PB2, + COMP1: gpio::PA4, gpio::PA0, + COMP2: gpio::PA5, gpio::PA2, + COMP3: gpio::PF1, gpio::PC0, + COMP4: gpio::PE8, gpio::PB2, } #[cfg(any( @@ -237,9 +214,9 @@ negative_input_pin! { feature = "stm32g484" ))] negative_input_pin! { - COMP5: PB10, PD13, - COMP6: PD10, PB15, - COMP7: PD15, PB12, + COMP5: gpio::PB10, gpio::PD13, + COMP6: gpio::PD10, gpio::PB15, + COMP7: gpio::PD15, gpio::PB12, } pub mod refint_input { @@ -626,38 +603,38 @@ pub trait OutputPin { #[allow(unused_macros)] // TODO: add support for more devices macro_rules! output_pin { - ($COMP:ident, $pin:ident, $AF:ident, $mode_t:ident, $into:ident) => { - impl OutputPin<$COMP> for $pin> { + ($COMP:ident, $pin:ident, $AF:literal, $mode_t:ident, $into:ident) => { + impl OutputPin<$COMP> for gpio::$pin> { fn setup(self) { self.$into::<$AF>(); } } }; - ($($COMP:ident: $pin:ident, $AF:ident,)+) => {$( + ($($COMP:ident: $pin:ident, $AF:literal,)+) => {$( output_pin!($COMP, $pin, $AF, PushPull, into_alternate); output_pin!($COMP, $pin, $AF, OpenDrain, into_alternate_open_drain); )+}; } output_pin! { - COMP1: PA0, AF8, - COMP1: PA6, AF8, - COMP1: PA11, AF8, - COMP1: PB8, AF8, - COMP1: PF4, AF2, - - COMP2: PA2, AF8, - COMP2: PA7, AF8, - COMP2: PA12, AF8, - COMP2: PB9, AF8, - - COMP3: PB7, AF8, - COMP3: PB15, AF3, - COMP3: PC2, AF3, - - COMP4: PB1, AF8, - COMP4: PB6, AF8, - COMP4: PB14, AF8, + COMP1: PA0, 8, + COMP1: PA6, 8, + COMP1: PA11, 8, + COMP1: PB8, 8, + COMP1: PF4, 2, + + COMP2: PA2, 8, + COMP2: PA7, 8, + COMP2: PA12, 8, + COMP2: PB9, 8, + + COMP3: PB7, 8, + COMP3: PB15, 3, + COMP3: PC2, 3, + + COMP4: PB1, 8, + COMP4: PB6, 8, + COMP4: PB14, 8, } #[cfg(any( @@ -667,12 +644,12 @@ output_pin! { feature = "stm32g484", ))] output_pin! { - COMP5: PA9, AF8, - COMP5: PC7, AF7, + COMP5: PA9, 8, + COMP5: PC7, 7, - COMP6: PA10, AF8, - COMP6: PC6, AF7, + COMP6: PA10, 8, + COMP6: PC6, 7, - COMP7: PA8, AF8, - COMP7: PC8, AF7, + COMP7: PA8, 8, + COMP7: PC8, 7, } diff --git a/src/dac.rs b/src/dac.rs index 9827ccfb..78f6a483 100644 --- a/src/dac.rs +++ b/src/dac.rs @@ -9,8 +9,7 @@ use core::marker::PhantomData; use core::mem::MaybeUninit; use core::ops::Deref; -use crate::gpio::gpioa::{PA4, PA5, PA6}; -use crate::gpio::DefaultMode; +use crate::gpio::{DefaultMode, PA4, PA5, PA6}; use crate::pac; use crate::rcc::{self, *}; use crate::stm32::RCC; diff --git a/src/gpio.rs b/src/gpio.rs index b150b741..dddf0af1 100644 --- a/src/gpio.rs +++ b/src/gpio.rs @@ -22,6 +22,9 @@ pub struct Input { _mode: PhantomData, } +/// Some alternate mode (type state) +pub struct Alternate(PhantomData); + /// Floating input (type state) pub struct Floating; @@ -60,26 +63,33 @@ pub enum SignalEdge { RisingFalling, } -/// Altername Mode (type state) -pub struct Alternate; -pub struct AlternateOD; - -pub const AF0: u8 = 0; -pub const AF1: u8 = 1; -pub const AF2: u8 = 2; -pub const AF3: u8 = 3; -pub const AF4: u8 = 4; -pub const AF5: u8 = 5; -pub const AF6: u8 = 6; -pub const AF7: u8 = 7; -pub const AF8: u8 = 8; -pub const AF9: u8 = 9; -pub const AF10: u8 = 10; -pub const AF11: u8 = 11; -pub const AF12: u8 = 12; -pub const AF13: u8 = 13; -pub const AF14: u8 = 14; -pub const AF15: u8 = 15; +macro_rules! af { + ($($i:literal: $AFi:ident),+) => { + $( + #[doc = concat!("Alternate function ", $i, " (type state)" )] + pub type $AFi = Alternate<$i, Otype>; + )+ + }; +} + +af!( + 0: AF0, + 1: AF1, + 2: AF2, + 3: AF3, + 4: AF4, + 5: AF5, + 6: AF6, + 7: AF7, + 8: AF8, + 9: AF9, + 10: AF10, + 11: AF11, + 12: AF12, + 13: AF13, + 14: AF14, + 15: AF15 +); /// External Interrupt Pin pub trait ExtiPin { @@ -576,7 +586,7 @@ macro_rules! gpio { $PXi { _mode: PhantomData } } - pub fn into_alternate_open_drain(self) -> $PXi> { + pub fn into_alternate_open_drain(self) -> $PXi> { let mode = A as u8; unsafe { let gpio = &(*$GPIOX::ptr()); @@ -753,6 +763,8 @@ macro_rules! gpio { } } } + + pub use $gpiox::{ $($PXi,)+ }; } } diff --git a/src/i2c.rs b/src/i2c.rs index 7132f211..9129679d 100644 --- a/src/i2c.rs +++ b/src/i2c.rs @@ -3,15 +3,7 @@ use crate::stm32::i2c1; use embedded_hal::i2c::{ErrorKind, Operation, SevenBitAddress, TenBitAddress}; use embedded_hal_old::blocking::i2c::{Read, Write, WriteRead}; -use crate::gpio::{gpioa::*, gpiob::*, gpioc::*, gpiof::*}; -#[cfg(any( - feature = "stm32g473", - feature = "stm32g474", - feature = "stm32g483", - feature = "stm32g484" -))] -use crate::gpio::{gpiog::*, AF3}; -use crate::gpio::{AlternateOD, AF2, AF4, AF8}; +use crate::gpio::{self, OpenDrain}; use crate::rcc::{Enable, GetBusFreq, Rcc, RccBus, Reset}; #[cfg(any( feature = "stm32g473", @@ -206,17 +198,17 @@ macro_rules! busy_wait { macro_rules! i2c { ($I2CX:ident, $i2cx:ident, - sda: [ $($( #[ $pmetasda:meta ] )* $PSDA:ty,)+ ], - scl: [ $($( #[ $pmetascl:meta ] )* $PSCL:ty,)+ ], + sda: [ $($( #[ $pmetasda:meta ] )* $PSDA:ident<$AFDA:ident>,)+ ], + scl: [ $($( #[ $pmetascl:meta ] )* $PSCL:ident<$AFCL:ident>,)+ ], ) => { $( $( #[ $pmetasda ] )* - impl SDAPin<$I2CX> for $PSDA {} + impl SDAPin<$I2CX> for gpio::$PSDA> {} )+ $( $( #[ $pmetascl ] )* - impl SCLPin<$I2CX> for $PSCL {} + impl SCLPin<$I2CX> for gpio::$PSCL> {} )+ impl I2cExt<$I2CX> for $I2CX { @@ -463,14 +455,14 @@ i2c!( I2C1, i2c1, sda: [ - PA14>, - PB7>, - PB9>, + PA14, + PB7, + PB9, ], scl: [ - PA13>, - PA15>, - PB8>, + PA13, + PA15, + PB8, ], ); @@ -478,19 +470,19 @@ i2c!( I2C2, i2c2, sda: [ - PA8>, - PF0>, + PA8, + PF0, ], scl: [ - PA9>, - PC4>, + PA9, + PC4, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PF6>, + PF6, ], ); @@ -498,41 +490,41 @@ i2c!( I2C3, i2c3, sda: [ - PB5>, - PC11>, - PC9>, + PB5, + PC11, + PC9, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PF4>, + PF4, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PG8>, + PG8, ], scl: [ - PA8>, - PC8>, + PA8, + PC8, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PF3>, + PF3, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PG7>, + PG7, ], ); @@ -546,15 +538,15 @@ i2c!( I2C4, i2c4, sda: [ - PB7>, - PC7>, - PF15>, - PG4>, + PB7, + PC7, + PF15, + PG4, ], scl: [ - PA13>, - PC6>, - PF14>, - PG3>, + PA13, + PC6, + PF14, + PG3, ], ); diff --git a/src/opamp.rs b/src/opamp.rs index 5679c161..a385b67a 100644 --- a/src/opamp.rs +++ b/src/opamp.rs @@ -61,6 +61,7 @@ use core::marker::PhantomData; +use crate::gpio::{self, Analog}; use crate::stasis; /// PGA Gain @@ -762,108 +763,108 @@ macro_rules! opamps { #[cfg(any(feature = "stm32g431", feature = "stm32g441"))] opamps! { Opamp1 => opamp1: { - vinm0: crate::gpio::gpioa::PA3, - vinm1: crate::gpio::gpioc::PC5, + vinm0: gpio::PA3, + vinm1: gpio::PC5, inverting: { - crate::gpio::gpioa::PA3: Vinm0, - crate::gpio::gpioc::PC5: Vinm1, + gpio::PA3: Vinm0, + gpio::PC5: Vinm1, }, non_inverting: { - crate::gpio::gpioa::PA1: Vinp0, - crate::gpio::gpioa::PA3: Vinp1, - crate::gpio::gpioa::PA7: Vinp2, + gpio::PA1: Vinp0, + gpio::PA3: Vinp1, + gpio::PA7: Vinp2, }, - output: crate::gpio::gpioa::PA2, + output: gpio::PA2, }, Opamp2 => opamp2: { - vinm0: crate::gpio::gpioa::PA5, - vinm1: crate::gpio::gpioc::PC5, + vinm0: gpio::PA5, + vinm1: gpio::PC5, inverting: { - crate::gpio::gpioa::PA5: Vinm0, - crate::gpio::gpioc::PC5: Vinm1, + gpio::PA5: Vinm0, + gpio::PC5: Vinm1, }, non_inverting: { - crate::gpio::gpioa::PA7: Vinp0, - crate::gpio::gpiob::PB14: Vinp1, - crate::gpio::gpiob::PB0: Vinp2, - crate::gpio::gpiod::PD14: Vinp3, + gpio::PA7: Vinp0, + gpio::PB14: Vinp1, + gpio::PB0: Vinp2, + gpio::PD14: Vinp3, }, - output: crate::gpio::gpioa::PA6, + output: gpio::PA6, }, Opamp3 => opamp3: { - vinm0: crate::gpio::gpiob::PB2, - vinm1: crate::gpio::gpiob::PB10, + vinm0: gpio::PB2, + vinm1: gpio::PB10, inverting: { - crate::gpio::gpiob::PB2: Vinm0, - crate::gpio::gpiob::PB10: Vinm1, + gpio::PB2: Vinm0, + gpio::PB10: Vinm1, }, non_inverting: { - crate::gpio::gpiob::PB0: Vinp0, - crate::gpio::gpiob::PB13: Vinp1, - crate::gpio::gpioa::PA1: Vinp2, + gpio::PB0: Vinp0, + gpio::PB13: Vinp1, + gpio::PA1: Vinp2, }, - output: crate::gpio::gpiob::PB1, + output: gpio::PB1, }, } #[cfg(any(feature = "stm32g491", feature = "stm32g4a1"))] opamps! { Opamp1 => opamp1: { - vinm0: crate::gpio::gpioa::PA3, - vinm1: crate::gpio::gpioc::PC5, + vinm0: gpio::PA3, + vinm1: gpio::PC5, inverting: { - crate::gpio::gpioa::PA3: Vinm0, - crate::gpio::gpioc::PC5: Vinm1, + gpio::PA3: Vinm0, + gpio::PC5: Vinm1, }, non_inverting: { - crate::gpio::gpioa::PA1: Vinp0, - crate::gpio::gpioa::PA3: Vinp1, - crate::gpio::gpioa::PA7: Vinp2, + gpio::PA1: Vinp0, + gpio::PA3: Vinp1, + gpio::PA7: Vinp2, }, - output: crate::gpio::gpioa::PA2, + output: gpio::PA2, }, Opamp2 => opamp2: { - vinm0: crate::gpio::gpioa::PA5, - vinm1: crate::gpio::gpioc::PC5, + vinm0: gpio::PA5, + vinm1: gpio::PC5, inverting: { - crate::gpio::gpioa::PA5: Vinm0, - crate::gpio::gpioc::PC5: Vinm1, + gpio::PA5: Vinm0, + gpio::PC5: Vinm1, }, non_inverting: { - crate::gpio::gpioa::PA7: Vinp0, - crate::gpio::gpiob::PB14: Vinp1, - crate::gpio::gpiob::PB0: Vinp2, - crate::gpio::gpiod::PD14: Vinp3, + gpio::PA7: Vinp0, + gpio::PB14: Vinp1, + gpio::PB0: Vinp2, + gpio::PD14: Vinp3, }, - output: crate::gpio::gpioa::PA6, + output: gpio::PA6, }, Opamp3 => opamp3: { - vinm0: crate::gpio::gpiob::PB2, - vinm1: crate::gpio::gpiob::PB10, + vinm0: gpio::PB2, + vinm1: gpio::PB10, inverting: { - crate::gpio::gpiob::PB2: Vinm0, - crate::gpio::gpiob::PB10: Vinm1, + gpio::PB2: Vinm0, + gpio::PB10: Vinm1, }, non_inverting: { - crate::gpio::gpiob::PB0: Vinp0, - crate::gpio::gpiob::PB13: Vinp1, - crate::gpio::gpioa::PA1: Vinp2, + gpio::PB0: Vinp0, + gpio::PB13: Vinp1, + gpio::PA1: Vinp2, }, - output: crate::gpio::gpiob::PB1, + output: gpio::PB1, }, Opamp6 => opamp6: { - vinm0: crate::gpio::gpioa::PA1, - vinm1: crate::gpio::gpiob::PB1, + vinm0: gpio::PA1, + vinm1: gpio::PB1, inverting: { - crate::gpio::gpioa::PA1: Vinm0, - crate::gpio::gpiob::PB1: Vinm1, + gpio::PA1: Vinm0, + gpio::PB1: Vinm1, }, non_inverting: { - crate::gpio::gpiob::PB12: Vinp0, - crate::gpio::gpiod::PD9: Vinp1, - crate::gpio::gpiob::PB13: Vinp2, + gpio::PB12: Vinp0, + gpio::PD9: Vinp1, + gpio::PB13: Vinp2, }, - output: crate::gpio::gpiob::PB11, + output: gpio::PB11, }, } @@ -875,88 +876,88 @@ opamps! { ))] opamps! { Opamp1 => opamp1: { - vinm0: crate::gpio::gpioa::PA3, - vinm1: crate::gpio::gpioc::PC5, + vinm0: gpio::PA3, + vinm1: gpio::PC5, inverting: { - crate::gpio::gpioa::PA3: Vinm0, - crate::gpio::gpioc::PC5: Vinm1, + gpio::PA3: Vinm0, + gpio::PC5: Vinm1, }, non_inverting: { - crate::gpio::gpioa::PA1: Vinp0, - crate::gpio::gpioa::PA3: Vinp1, - crate::gpio::gpioa::PA7: Vinp2, + gpio::PA1: Vinp0, + gpio::PA3: Vinp1, + gpio::PA7: Vinp2, }, - output: crate::gpio::gpioa::PA2, + output: gpio::PA2, }, Opamp2 => opamp2: { - vinm0: crate::gpio::gpioa::PA5, - vinm1: crate::gpio::gpioc::PC5, + vinm0: gpio::PA5, + vinm1: gpio::PC5, inverting: { - crate::gpio::gpioa::PA5: Vinm0, - crate::gpio::gpioc::PC5: Vinm1, + gpio::PA5: Vinm0, + gpio::PC5: Vinm1, }, non_inverting: { - crate::gpio::gpioa::PA7: Vinp0, - crate::gpio::gpiob::PB14: Vinp1, - crate::gpio::gpiob::PB0: Vinp2, - crate::gpio::gpiod::PD14: Vinp3, + gpio::PA7: Vinp0, + gpio::PB14: Vinp1, + gpio::PB0: Vinp2, + gpio::PD14: Vinp3, }, - output: crate::gpio::gpioa::PA6, + output: gpio::PA6, }, Opamp3 => opamp3: { - vinm0: crate::gpio::gpiob::PB2, - vinm1: crate::gpio::gpiob::PB10, + vinm0: gpio::PB2, + vinm1: gpio::PB10, inverting: { - crate::gpio::gpiob::PB2: Vinm0, - crate::gpio::gpiob::PB10: Vinm1, + gpio::PB2: Vinm0, + gpio::PB10: Vinm1, }, non_inverting: { - crate::gpio::gpiob::PB0: Vinp0, - crate::gpio::gpiob::PB13: Vinp1, - crate::gpio::gpioa::PA1: Vinp2, + gpio::PB0: Vinp0, + gpio::PB13: Vinp1, + gpio::PA1: Vinp2, }, - output: crate::gpio::gpiob::PB1, + output: gpio::PB1, }, Opamp4 => opamp4: { - vinm0: crate::gpio::gpiob::PB10, - vinm1: crate::gpio::gpiod::PD8, + vinm0: gpio::PB10, + vinm1: gpio::PD8, inverting: { - crate::gpio::gpiob::PB10: Vinm0, - crate::gpio::gpiod::PD8: Vinm1, + gpio::PB10: Vinm0, + gpio::PD8: Vinm1, }, non_inverting: { - crate::gpio::gpiob::PB13: Vinp0, - crate::gpio::gpiod::PD11: Vinp1, - crate::gpio::gpiob::PB11: Vinp2, + gpio::PB13: Vinp0, + gpio::PD11: Vinp1, + gpio::PB11: Vinp2, }, - output: crate::gpio::gpiob::PB12, + output: gpio::PB12, }, Opamp5 => opamp5: { - vinm0: crate::gpio::gpiob::PB15, - vinm1: crate::gpio::gpioa::PA3, + vinm0: gpio::PB15, + vinm1: gpio::PA3, inverting: { - crate::gpio::gpiob::PB15: Vinm0, - crate::gpio::gpioa::PA3: Vinm1, + gpio::PB15: Vinm0, + gpio::PA3: Vinm1, }, non_inverting: { - crate::gpio::gpiob::PB14: Vinp0, - crate::gpio::gpiod::PD12: Vinp1, - crate::gpio::gpioc::PC3: Vinp2, + gpio::PB14: Vinp0, + gpio::PD12: Vinp1, + gpio::PC3: Vinp2, }, - output: crate::gpio::gpioa::PA8, + output: gpio::PA8, }, Opamp6 => opamp6: { - vinm0: crate::gpio::gpioa::PA1, - vinm1: crate::gpio::gpiob::PB1, + vinm0: gpio::PA1, + vinm1: gpio::PB1, inverting: { - crate::gpio::gpioa::PA1: Vinm0, - crate::gpio::gpiob::PB1: Vinm1, + gpio::PA1: Vinm0, + gpio::PB1: Vinm1, }, non_inverting: { - crate::gpio::gpiob::PB12: Vinp0, - crate::gpio::gpiod::PD9: Vinp1, - crate::gpio::gpiob::PB13: Vinp2, + gpio::PB12: Vinp0, + gpio::PD9: Vinp1, + gpio::PB13: Vinp2, }, - output: crate::gpio::gpiob::PB11, + output: gpio::PB11, }, } diff --git a/src/pwm.rs b/src/pwm.rs index b52d9598..a69c2746 100644 --- a/src/pwm.rs +++ b/src/pwm.rs @@ -195,13 +195,6 @@ use crate::stm32::{TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM8}; use crate::rcc::{Enable, GetBusFreq, Rcc, Reset}; use crate::time::{ExtU32, Hertz, NanoSecond, RateExtU32}; -#[cfg(any( - feature = "stm32g473", - feature = "stm32g474", - feature = "stm32g483", - feature = "stm32g484" -))] -use crate::gpio::gpiog::*; #[cfg(any( feature = "stm32g473", feature = "stm32g474", @@ -209,15 +202,14 @@ use crate::gpio::gpiog::*; feature = "stm32g484" ))] use crate::gpio::AF14; -use crate::gpio::{gpioa::*, gpiob::*, gpioc::*, gpiod::*, gpioe::*, gpiof::*}; -use crate::gpio::{Alternate, AF1, AF10, AF11, AF12, AF2, AF3, AF4, AF5, AF6, AF9}; +use crate::gpio::{self, AF1, AF10, AF11, AF12, AF2, AF3, AF4, AF5, AF6, AF9}; use core::mem::size_of; // This trait marks that a GPIO pin can be used with a specific timer channel // TIM is the timer being used // CHANNEL is a marker struct for the channel (or multi channels for tuples) -// Example: impl Pins for PA8> { type Channel = Pwm; } +// Example: impl Pins for PA8 { type Channel = Pwm; } /// Pins is a trait that marks which GPIO pins may be used as PWM channels; it should not be directly used. /// See the device datasheet 'Pin descriptions' chapter for which pins can be used with which timer PWM channels (or look at Implementors) pub trait Pins { @@ -548,74 +540,74 @@ macro_rules! pins { pins! { LPTIMER1: OUT: [ - PA14>, - PB2>, - PC1> + gpio::PA14, + gpio::PB2, + gpio::PC1 ] } // Dual channel timers pins! { TIM15: CH1(ComplementaryDisabled): [ - PA2>, - PB14>, - PF9> + gpio::PA2, + gpio::PB14, + gpio::PF9 ] CH2(ComplementaryImpossible): [ - PA3>, - PB15>, - PF10> + gpio::PA3, + gpio::PB15, + gpio::PF10 ] CH1N: [ - PA1>, - PB15>, + gpio::PA1, + gpio::PB15, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PG9> + gpio::PG9 ] CH2N: [] BRK: [ - PA9>, - PC5> + gpio::PA9, + gpio::PC5 ] BRK2: [] TIM16: CH1(ComplementaryDisabled): [ - PA6>, - PA12>, - PB4>, - PB8>, - PE0> + gpio::PA6, + gpio::PA12, + gpio::PB4, + gpio::PB8, + gpio::PE0 ] CH2(ComplementaryImpossible): [] CH1N: [ - PA13>, - PB6> + gpio::PA13, + gpio::PB6 ] CH2N: [] BRK: [ - PB5> + gpio::PB5 ] BRK2: [] TIM17: CH1(ComplementaryDisabled): [ - PA7>, - PB5>, - PB9>, - PE1> + gpio::PA7, + gpio::PB5, + gpio::PB9, + gpio::PE1 ] CH2(ComplementaryImpossible): [] CH1N: [ - PB7> + gpio::PB7 ] CH2N: [] BRK: [ - PA10>, - PB4> + gpio::PA10, + gpio::PB4 ] BRK2: [] } @@ -623,87 +615,87 @@ pins! { pins! { TIM1: CH1(ComplementaryDisabled): [ - PA8>, - PC0>, - PE9> + gpio::PA8, + gpio::PC0, + gpio::PE9 ] CH2(ComplementaryDisabled): [ - PA9>, - PC1>, - PE11> + gpio::PA9, + gpio::PC1, + gpio::PE11 ] CH3(ComplementaryDisabled): [ - PA10>, - PC2>, - PE13> + gpio::PA10, + gpio::PC2, + gpio::PE13 ] CH4(ComplementaryDisabled): [ - PA11>, - PC3>, - PE14> + gpio::PA11, + gpio::PC3, + gpio::PE14 ] CH1N: [ - PA7>, - PA11>, - PB13>, - PC13>, - PE8> + gpio::PA7, + gpio::PA11, + gpio::PB13, + gpio::PC13, + gpio::PE8 ] CH2N: [ - PA12>, - PB0>, - PB14>, - PE10> + gpio::PA12, + gpio::PB0, + gpio::PB14, + gpio::PE10 ] CH3N: [ - PB1>, - PB9>, - PB15>, - PE12>, - PF0> + gpio::PB1, + gpio::PB9, + gpio::PB15, + gpio::PE12, + gpio::PF0 ] CH4N: [ - PC5>, - PE15> + gpio::PC5, + gpio::PE15 ] BRK: [ - PA6>, - PA14>, - PA15>, - PB8>, - PB10>, - PB12>, - PC13>, - PE15> + gpio::PA6, + gpio::PA14, + gpio::PA15, + gpio::PB8, + gpio::PB10, + gpio::PB12, + gpio::PC13, + gpio::PE15 ] BRK2: [ - PA11>, - PC3>, - PE14> + gpio::PA11, + gpio::PC3, + gpio::PE14 ] TIM2: CH1(ComplementaryImpossible): [ - PA0>, - PA5>, - PA15>, - PD3> + gpio::PA0, + gpio::PA5, + gpio::PA15, + gpio::PD3 ] CH2(ComplementaryImpossible): [ - PA1>, - PB3>, - PD4> + gpio::PA1, + gpio::PB3, + gpio::PD4 ] CH3(ComplementaryImpossible): [ - PA2>, - PA9>, - PB10>, - PD7> + gpio::PA2, + gpio::PA9, + gpio::PB10, + gpio::PD7 ] CH4(ComplementaryImpossible): [ - PA3>, - PA10>, - PB11>, - PD6> + gpio::PA3, + gpio::PA10, + gpio::PB11, + gpio::PD6 ] CH1N: [] CH2N: [] @@ -713,28 +705,28 @@ pins! { BRK2: [] TIM3: CH1(ComplementaryImpossible): [ - PA6>, - PB4>, - PC6>, - PE2> + gpio::PA6, + gpio::PB4, + gpio::PC6, + gpio::PE2 ] CH2(ComplementaryImpossible): [ - PA4>, - PA7>, - PB5>, - PC7>, - PE3> + gpio::PA4, + gpio::PA7, + gpio::PB5, + gpio::PC7, + gpio::PE3 ] CH3(ComplementaryImpossible): [ - PB0>, - PC8>, - PE4> + gpio::PB0, + gpio::PC8, + gpio::PE4 ] CH4(ComplementaryImpossible): [ - PB1>, - PB7>, - PC9>, - PE5> + gpio::PB1, + gpio::PB7, + gpio::PC9, + gpio::PE5 ] CH1N: [] CH2N: [] @@ -744,30 +736,30 @@ pins! { BRK2: [] TIM4: CH1(ComplementaryImpossible): [ - PA11>, - PB6>, - PD12> + gpio::PA11, + gpio::PB6, + gpio::PD12 ] CH2(ComplementaryImpossible): [ - PA12>, - PB7>, - PD13> + gpio::PA12, + gpio::PB7, + gpio::PD13 ] CH3(ComplementaryImpossible): [ - PA13>, - PB8>, - PD14> + gpio::PA13, + gpio::PB8, + gpio::PD14 ] CH4(ComplementaryImpossible): [ - PB9>, - PD15>, + gpio::PB9, + gpio::PD15, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PF6> + gpio::PF6 ] CH1N: [] CH2N: [] @@ -785,24 +777,24 @@ pins! { pins! { TIM5: CH1(ComplementaryImpossible): [ - PA0>, - PB2>, - PF6> + gpio::PA0, + gpio::PB2, + gpio::PF6 ] CH2(ComplementaryImpossible): [ - PA1>, - PC12>, - PF7> + gpio::PA1, + gpio::PC12, + gpio::PF7 ] CH3(ComplementaryImpossible): [ - PA2>, - PE8>, - PF8> + gpio::PA2, + gpio::PE8, + gpio::PF8 ] CH4(ComplementaryImpossible): [ - PA3>, - PE9>, - PF9> + gpio::PA3, + gpio::PE9, + gpio::PF9 ] CH1N: [] CH2N: [] @@ -814,53 +806,53 @@ pins! { pins! { TIM8: CH1(ComplementaryDisabled): [ - PA15>, - PB6>, - PC6> + gpio::PA15, + gpio::PB6, + gpio::PC6 ] CH2(ComplementaryDisabled): [ - PA14>, - PB8>, - PC7> + gpio::PA14, + gpio::PB8, + gpio::PC7 ] CH3(ComplementaryDisabled): [ - PB9>, - PC8> + gpio::PB9, + gpio::PC8 ] CH4(ComplementaryDisabled): [ - PC9>, - PD1> + gpio::PC9, + gpio::PD1 ] CH1N: [ - PA7>, - PB3>, - PC10> + gpio::PA7, + gpio::PB3, + gpio::PC10 ] CH2N: [ - PB0>, - PB4>, - PC11> + gpio::PB0, + gpio::PB4, + gpio::PC11 ] CH3N: [ - PB1>, - PB5>, - PC12> + gpio::PB1, + gpio::PB5, + gpio::PC12 ] CH4N: [ - PC13>, - PD0> + gpio::PC13, + gpio::PD0 ] BRK: [ - PA0>, - PA6>, - PA10>, - PB7>, - PD2> + gpio::PA0, + gpio::PA6, + gpio::PA10, + gpio::PB7, + gpio::PD2 ] BRK2: [ - PB6>, - PC9>, - PD1> + gpio::PB6, + gpio::PC9, + gpio::PD1 ] } #[cfg(any( @@ -874,108 +866,108 @@ pins! { pins! { TIM20: CH1(ComplementaryDisabled): [ - PB2>, - PE2>, + gpio::PB2, + gpio::PE2, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PF12> + gpio::PF12 ] CH2(ComplementaryDisabled): [ - PC2>, - PE3>, + gpio::PC2, + gpio::PE3, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PF13> + gpio::PF13 ] CH3(ComplementaryDisabled): [ - PC8>, - PF2>, + gpio::PC8, + gpio::PF2, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PF14> + gpio::PF14 ] CH4(ComplementaryDisabled): [ - PE1>, + gpio::PE1, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PF3>, + gpio::PF3, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PF15> + gpio::PF15 ] CH1N: [ - PE4>, + gpio::PE4, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PF4>, + gpio::PF4, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PG0> + gpio::PG0 ] CH2N: [ - PE5>, + gpio::PE5, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PF5>, + gpio::PF5, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PG1> + gpio::PG1 ] CH3N: [ - PE6>, + gpio::PE6, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PG2> + gpio::PG2 ] CH4N: [ - PE0>, + gpio::PE0, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PG3> + gpio::PG3 ] BRK: [ #[cfg(any( @@ -984,22 +976,22 @@ pins! { feature = "stm32g483", feature = "stm32g484", ))] - PF7>, - PF9>, + gpio::PF7, + gpio::PF9, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PG3>, + gpio::PG3, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PG6> + gpio::PG6 ] BRK2: [ #[cfg(any( @@ -1008,15 +1000,15 @@ pins! { feature = "stm32g483", feature = "stm32g484", ))] - PF8>, - PF10>, + gpio::PF8, + gpio::PF10, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484", ))] - PG4> + gpio::PG4 ] } diff --git a/src/rcc/clockout.rs b/src/rcc/clockout.rs index b9f49944..1be1e390 100644 --- a/src/rcc/clockout.rs +++ b/src/rcc/clockout.rs @@ -5,7 +5,7 @@ use crate::stm32::RCC; pub type LscoPin = gpioa::PA2; pub struct Lsco { - pin: gpioa::PA2>, + pin: gpioa::PA2, } impl Lsco { @@ -77,8 +77,8 @@ pub trait MCOExt { macro_rules! mco { ($($PIN:ident),+) => { $( - impl MCOExt<$PIN>> for $PIN { - fn mco(self, src: MCOSrc, psc: Prescaler, rcc: &mut Rcc) -> Mco<$PIN>> { + impl MCOExt> for crate::gpio::$PIN { + fn mco(self, src: MCOSrc, psc: Prescaler, rcc: &mut Rcc) -> Mco> { let psc_bits = match psc { Prescaler::NotDivided => 0b000, Prescaler::Div2 => 0b001, @@ -120,7 +120,4 @@ macro_rules! mco { }; } -use crate::gpio::gpioa::PA8; -use crate::gpio::gpiog::PG10; - mco!(PA8, PG10); diff --git a/src/serial/usart.rs b/src/serial/usart.rs index 09288991..66ab45a6 100644 --- a/src/serial/usart.rs +++ b/src/serial/usart.rs @@ -4,8 +4,7 @@ use core::marker::PhantomData; use crate::dma::{ mux::DmaMuxResources, traits::TargetAddress, MemoryToPeripheral, PeripheralToMemory, }; -use crate::gpio::{gpioa::*, gpiob::*, gpioc::*, gpiod::*, gpioe::*, gpiog::*}; -use crate::gpio::{Alternate, AlternateOD, AF12, AF5, AF7, AF8}; +use crate::gpio::{self, OpenDrain}; use crate::rcc::{Enable, GetBusFreq, Rcc, RccBus, Reset}; use crate::stm32::*; @@ -165,20 +164,21 @@ where macro_rules! uart_shared { ($USARTX:ident, $dmamux_rx:ident, $dmamux_tx:ident, - tx: [ $($( #[ $pmeta1:meta ] )* ($PTX:ident, $TAF:expr),)+ ], - rx: [ $($( #[ $pmeta2:meta ] )* ($PRX:ident, $RAF:expr),)+ ]) => { + tx: [ $($( #[ $pmeta1:meta ] )* ($PTX:ident, $TAF:ident),)+ ], + rx: [ $($( #[ $pmeta2:meta ] )* ($PRX:ident, $RAF:ident),)+ ]) => { $( $( #[ $pmeta1 ] )* - impl TxPin<$USARTX> for $PTX> { + impl TxPin<$USARTX> for gpio::$PTX { } - impl TxPin<$USARTX> for $PTX> { + $( #[ $pmeta1 ] )* + impl TxPin<$USARTX> for gpio::$PTX> { } )+ $( $( #[ $pmeta2 ] )* - impl RxPin<$USARTX> for $PRX> { + impl RxPin<$USARTX> for gpio::$PRX { } )+ diff --git a/src/spi.rs b/src/spi.rs index 19bd2fef..34e98847 100644 --- a/src/spi.rs +++ b/src/spi.rs @@ -1,14 +1,7 @@ use crate::dma::mux::DmaMuxResources; use crate::dma::traits::TargetAddress; use crate::dma::MemoryToPeripheral; -use crate::gpio::{gpioa::*, gpiob::*, gpioc::*, gpiof::*, Alternate, AF5, AF6}; -#[cfg(any( - feature = "stm32g473", - feature = "stm32g474", - feature = "stm32g483", - feature = "stm32g484" -))] -use crate::gpio::{gpioe::*, gpiog::*}; +use crate::gpio; use crate::rcc::{Enable, GetBusFreq, Rcc, RccBus, Reset}; #[cfg(any( feature = "stm32g473", @@ -94,9 +87,9 @@ impl FrameSize for u16 { macro_rules! spi { ($SPIX:ident, $spiX:ident, - sck: [ $($( #[ $pmetasck:meta ] )* $SCK:ty,)+ ], - miso: [ $($( #[ $pmetamiso:meta ] )* $MISO:ty,)+ ], - mosi: [ $($( #[ $pmetamosi:meta ] )* $MOSI:ty,)+ ], + sck: [ $($( #[ $pmetasck:meta ] )* $SCK:ident<$ASCK:ident>,)+ ], + miso: [ $($( #[ $pmetamiso:meta ] )* $MISO:ident<$AMISO:ident>,)+ ], + mosi: [ $($( #[ $pmetamosi:meta ] )* $MOSI:ident<$AMOSI:ident>,)+ ], $mux:expr, ) => { impl PinSck<$SPIX> for NoSck {} @@ -107,15 +100,15 @@ macro_rules! spi { $( $( #[ $pmetasck ] )* - impl PinSck<$SPIX> for $SCK {} + impl PinSck<$SPIX> for gpio::$SCK {} )* $( $( #[ $pmetamiso ] )* - impl PinMiso<$SPIX> for $MISO {} + impl PinMiso<$SPIX> for gpio::$MISO {} )* $( $( #[ $pmetamosi ] )* - impl PinMosi<$SPIX> for $MOSI {} + impl PinMosi<$SPIX> for gpio::$MOSI {} )* impl> Spi<$SPIX, PINS> { @@ -377,37 +370,37 @@ spi!( SPI1, spi1, sck: [ - PA5>, - PB3>, + PA5, + PB3, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PG2>, + PG2, ], miso: [ - PA6>, - PB4>, + PA6, + PB4, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PG3>, + PG3, ], mosi: [ - PA7>, - PB5>, + PA7, + PB5, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PG4>, + PG4, ], DmaMuxResources::SPI1_TX, ); @@ -416,18 +409,18 @@ spi!( SPI2, spi2, sck: [ - PF1>, - PF9>, - PF10>, - PB13>, + PF1, + PF9, + PF10, + PB13, ], miso: [ - PA10>, - PB14>, + PA10, + PB14, ], mosi: [ - PA11>, - PB15>, + PA11, + PB15, ], DmaMuxResources::SPI2_TX, ); @@ -436,23 +429,23 @@ spi!( SPI3, spi3, sck: [ - PB3>, - PC10>, + PB3, + PC10, #[cfg(any( feature = "stm32g473", feature = "stm32g474", feature = "stm32g483", feature = "stm32g484" ))] - PG9>, + PG9, ], miso: [ - PB4>, - PC11>, + PB4, + PC11, ], mosi: [ - PB5>, - PC12>, + PB5, + PC12, ], DmaMuxResources::SPI3_TX, ); @@ -467,16 +460,16 @@ spi!( SPI4, spi4, sck: [ - PE2>, - PE12>, + PE2, + PE12, ], miso: [ - PE5>, - PE13>, + PE5, + PE13, ], mosi: [ - PE6>, - PE14>, + PE6, + PE14, ], DmaMuxResources::SPI4_TX, ); diff --git a/src/usb.rs b/src/usb.rs index 0d9181c8..2af84efe 100644 --- a/src/usb.rs +++ b/src/usb.rs @@ -5,7 +5,6 @@ pub use stm32_usbd::UsbBus; use crate::gpio; -use crate::gpio::gpioa::{PA11, PA12}; use crate::rcc::{Enable, Reset}; use crate::stm32::{RCC, USB}; use core::fmt; @@ -17,8 +16,8 @@ pub trait DmPin: crate::Sealed {} /// Trait implemented by all pins that can be the "D+" pin for the USB peripheral pub trait DpPin: crate::Sealed {} -impl DmPin for PA11> {} -impl DpPin for PA12> {} +impl DmPin for gpio::PA11 {} +impl DpPin for gpio::PA12 {} pub struct Peripheral { /// USB register block diff --git a/tests/nucleo-g474.rs b/tests/nucleo-g474.rs index 5188a6ae..8d142796 100644 --- a/tests/nucleo-g474.rs +++ b/tests/nucleo-g474.rs @@ -45,7 +45,7 @@ mod tests { }, dac::{DacExt, DacOut}, delay::SYSTDelayExt, - gpio::{GpioExt, AF6}, + gpio::{GpioExt, AF6, PA8}, pwm::PwmExt, rcc::RccExt, signature::{VrefCal, VDDA_CALIB}, @@ -135,8 +135,7 @@ mod tests { let gpioa = dp.GPIOA.split(&mut rcc); let _pa1_important_dont_use_as_output = gpioa.pa1.into_floating_input(); - let pin: stm32g4xx_hal::gpio::gpioa::PA8> = - gpioa.pa8.into_alternate(); + let pin: PA8 = gpioa.pa8.into_alternate(); let mut pwm = dp.TIM1.pwm(pin, 1000u32.Hz(), &mut rcc);