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