Skip to content

Commit b8753bc

Browse files
committed
Allow using Input<PullUp> and Input<PullDown> for all alternate function inputs
1 parent 89524b9 commit b8753bc

File tree

4 files changed

+27
-26
lines changed

4 files changed

+27
-26
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
2828
- Added DMA receive support for `SPI`
2929
- Added `release` functions to SPI DMA
3030
- Add GPIOF/GPIOG support for high/xl density lines
31-
- Allow using `Input<PullUp>` and `Input<PullDown>` for timers' pwm and qei inputs.
31+
- Allow using `Input<PullUp>` and `Input<PullDown>` for all alternate
32+
function inputs.
3233

3334
### Fixed
3435
- Fix > 2 byte i2c reads

src/can.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//! ## Alternate function remapping
44
//!
55
//! TX: Alternate Push-Pull Output
6-
//! RX: Input Floating Input
6+
//! RX: Input
77
//!
88
//! ### CAN1
99
//!
@@ -25,7 +25,7 @@ use crate::gpio::gpiob::{PB12, PB13, PB5, PB6};
2525
use crate::gpio::{
2626
gpioa::{PA11, PA12},
2727
gpiob::{PB8, PB9},
28-
Alternate, Floating, Input, PushPull,
28+
Alternate, Input, PushPull,
2929
};
3030
#[cfg(feature = "connectivity")]
3131
use crate::pac::CAN2;
@@ -38,8 +38,8 @@ pub trait Pins: crate::Sealed {
3838
fn remap(mapr: &mut MAPR);
3939
}
4040

41-
impl crate::Sealed for (PA12<Alternate<PushPull>>, PA11<Input<Floating>>) {}
42-
impl Pins for (PA12<Alternate<PushPull>>, PA11<Input<Floating>>) {
41+
impl<MODE> crate::Sealed for (PA12<Alternate<PushPull>>, PA11<Input<MODE>>) {}
42+
impl<MODE> Pins for (PA12<Alternate<PushPull>>, PA11<Input<MODE>>) {
4343
type Instance = CAN1;
4444

4545
fn remap(mapr: &mut MAPR) {
@@ -50,8 +50,8 @@ impl Pins for (PA12<Alternate<PushPull>>, PA11<Input<Floating>>) {
5050
}
5151
}
5252

53-
impl crate::Sealed for (PB9<Alternate<PushPull>>, PB8<Input<Floating>>) {}
54-
impl Pins for (PB9<Alternate<PushPull>>, PB8<Input<Floating>>) {
53+
impl<MODE> crate::Sealed for (PB9<Alternate<PushPull>>, PB8<Input<MODE>>) {}
54+
impl<MODE> Pins for (PB9<Alternate<PushPull>>, PB8<Input<MODE>>) {
5555
type Instance = CAN1;
5656

5757
fn remap(mapr: &mut MAPR) {
@@ -63,9 +63,9 @@ impl Pins for (PB9<Alternate<PushPull>>, PB8<Input<Floating>>) {
6363
}
6464

6565
#[cfg(feature = "connectivity")]
66-
impl crate::Sealed for (PB13<Alternate<PushPull>>, PB12<Input<Floating>>) {}
66+
impl<MODE> crate::Sealed for (PB13<Alternate<PushPull>>, PB12<Input<MODE>>) {}
6767
#[cfg(feature = "connectivity")]
68-
impl Pins for (PB13<Alternate<PushPull>>, PB12<Input<Floating>>) {
68+
impl<MODE> Pins for (PB13<Alternate<PushPull>>, PB12<Input<MODE>>) {
6969
type Instance = CAN2;
7070

7171
fn remap(mapr: &mut MAPR) {
@@ -74,9 +74,9 @@ impl Pins for (PB13<Alternate<PushPull>>, PB12<Input<Floating>>) {
7474
}
7575

7676
#[cfg(feature = "connectivity")]
77-
impl crate::Sealed for (PB6<Alternate<PushPull>>, PB5<Input<Floating>>) {}
77+
impl<MODE> crate::Sealed for (PB6<Alternate<PushPull>>, PB5<Input<MODE>>) {}
7878
#[cfg(feature = "connectivity")]
79-
impl Pins for (PB6<Alternate<PushPull>>, PB5<Input<Floating>>) {
79+
impl<MODE> Pins for (PB6<Alternate<PushPull>>, PB5<Input<MODE>>) {
8080
type Instance = CAN2;
8181

8282
fn remap(mapr: &mut MAPR) {

src/serial.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ use crate::gpio::gpioa::{PA10, PA2, PA3, PA9};
5353
use crate::gpio::gpiob::{PB10, PB11, PB6, PB7};
5454
use crate::gpio::gpioc::{PC10, PC11};
5555
use crate::gpio::gpiod::{PD5, PD6, PD8, PD9};
56-
use crate::gpio::{Alternate, Floating, Input, PushPull};
56+
use crate::gpio::{Alternate, Input, PushPull};
5757
use crate::rcc::{Clocks, Enable, GetBusFreq, Reset};
5858
use crate::time::{Bps, U32Ext};
5959

@@ -87,31 +87,31 @@ pub trait Pins<USART> {
8787
const REMAP: u8;
8888
}
8989

90-
impl Pins<USART1> for (PA9<Alternate<PushPull>>, PA10<Input<Floating>>) {
90+
impl<MODE> Pins<USART1> for (PA9<Alternate<PushPull>>, PA10<Input<MODE>>) {
9191
const REMAP: u8 = 0;
9292
}
9393

94-
impl Pins<USART1> for (PB6<Alternate<PushPull>>, PB7<Input<Floating>>) {
94+
impl<MODE> Pins<USART1> for (PB6<Alternate<PushPull>>, PB7<Input<MODE>>) {
9595
const REMAP: u8 = 1;
9696
}
9797

98-
impl Pins<USART2> for (PA2<Alternate<PushPull>>, PA3<Input<Floating>>) {
98+
impl<MODE> Pins<USART2> for (PA2<Alternate<PushPull>>, PA3<Input<MODE>>) {
9999
const REMAP: u8 = 0;
100100
}
101101

102-
impl Pins<USART2> for (PD5<Alternate<PushPull>>, PD6<Input<Floating>>) {
102+
impl<MODE> Pins<USART2> for (PD5<Alternate<PushPull>>, PD6<Input<MODE>>) {
103103
const REMAP: u8 = 0;
104104
}
105105

106-
impl Pins<USART3> for (PB10<Alternate<PushPull>>, PB11<Input<Floating>>) {
106+
impl<MODE> Pins<USART3> for (PB10<Alternate<PushPull>>, PB11<Input<MODE>>) {
107107
const REMAP: u8 = 0;
108108
}
109109

110-
impl Pins<USART3> for (PC10<Alternate<PushPull>>, PC11<Input<Floating>>) {
110+
impl<MODE> Pins<USART3> for (PC10<Alternate<PushPull>>, PC11<Input<MODE>>) {
111111
const REMAP: u8 = 1;
112112
}
113113

114-
impl Pins<USART3> for (PD8<Alternate<PushPull>>, PD9<Input<Floating>>) {
114+
impl<MODE> Pins<USART3> for (PD8<Alternate<PushPull>>, PD9<Input<MODE>>) {
115115
const REMAP: u8 = 0b11;
116116
}
117117

src/spi.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Serial Peripheral Interface
33
To construct the SPI instances, use the `Spi::spiX` functions.
44
5-
The pin parameter is a tuple containing `(sck, miso, mosi)` which should be configured as `(Alternate<PushPull>, Input<Floating>, Alternate<PushPull>)`.
5+
The pin parameter is a tuple containing `(sck, miso, mosi)` which should be configured as `(Alternate<...>, Input<...>, Alternate<...>)`.
66
As some STM32F1xx chips have 5V tolerant SPI pins, it is also possible to configure Sck and Mosi outputs as `Alternate<PushPull>`. Then
77
a simple Pull-Up to 5V can be used to use SPI on a 5V bus without a level shifter.
88
@@ -50,7 +50,7 @@ use crate::gpio::gpioa::{PA5, PA6, PA7};
5050
use crate::gpio::gpiob::{PB13, PB14, PB15, PB3, PB4, PB5};
5151
#[cfg(feature = "connectivity")]
5252
use crate::gpio::gpioc::{PC10, PC11, PC12};
53-
use crate::gpio::{Alternate, Floating, Input, OpenDrain, PushPull};
53+
use crate::gpio::{Alternate, Input, OpenDrain, PushPull};
5454
use crate::rcc::{Clocks, Enable, GetBusFreq, Reset};
5555
use crate::time::Hertz;
5656

@@ -129,7 +129,7 @@ macro_rules! remap {
129129
}
130130
impl Sck<$name> for $SCK<Alternate<PushPull>> {}
131131
impl Sck<$name> for $SCK<Alternate<OpenDrain>> {}
132-
impl Miso<$name> for $MISO<Input<Floating>> {}
132+
impl<MODE> Miso<$name> for $MISO<Input<MODE>> {}
133133
impl Mosi<$name> for $MOSI<Alternate<PushPull>> {}
134134
impl Mosi<$name> for $MOSI<Alternate<OpenDrain>> {}
135135
};
@@ -157,7 +157,7 @@ impl<REMAP, PINS> Spi<SPI1, REMAP, PINS, u8> {
157157
/**
158158
Constructs an SPI instance using SPI1 in 8bit dataframe mode.
159159
160-
The pin parameter tuple (sck, miso, mosi) should be `(PA5, PA6, PA7)` or `(PB3, PB4, PB5)` configured as `(Alternate<PushPull>, Input<Floating>, Alternate<PushPull>)`.
160+
The pin parameter tuple (sck, miso, mosi) should be `(PA5, PA6, PA7)` or `(PB3, PB4, PB5)` configured as `(Alternate<...>, Input<...>, Alternate<...>)`.
161161
162162
You can also use `NoSck`, `NoMiso` or `NoMosi` if you don't want to use the pins
163163
*/
@@ -183,7 +183,7 @@ impl<REMAP, PINS> Spi<SPI2, REMAP, PINS, u8> {
183183
/**
184184
Constructs an SPI instance using SPI2 in 8bit dataframe mode.
185185
186-
The pin parameter tuple (sck, miso, mosi) should be `(PB13, PB14, PB15)` configured as `(Alternate<PushPull>, Input<Floating>, Alternate<PushPull>)`.
186+
The pin parameter tuple (sck, miso, mosi) should be `(PB13, PB14, PB15)` configured as `(Alternate<...>, Input<...>, Alternate<...>)`.
187187
188188
You can also use `NoSck`, `NoMiso` or `NoMosi` if you don't want to use the pins
189189
*/
@@ -202,7 +202,7 @@ impl<REMAP, PINS> Spi<SPI3, REMAP, PINS, u8> {
202202
/**
203203
Constructs an SPI instance using SPI3 in 8bit dataframe mode.
204204
205-
The pin parameter tuple (sck, miso, mosi) should be `(PB3, PB4, PB5)` configured as `(Alternate<PushPull>, Input<Floating>, Alternate<PushPull>)`.
205+
The pin parameter tuple (sck, miso, mosi) should be `(PB3, PB4, PB5)` configured as `(Alternate<...>, Input<...>, Alternate<...>)`.
206206
207207
You can also use `NoSck`, `NoMiso` or `NoMosi` if you don't want to use the pins
208208
*/
@@ -219,7 +219,7 @@ impl<REMAP, PINS> Spi<SPI3, REMAP, PINS, u8> {
219219
/**
220220
Constructs an SPI instance using SPI3 in 8bit dataframe mode.
221221
222-
The pin parameter tuple (sck, miso, mosi) should be `(PB3, PB4, PB5)` or `(PC10, PC11, PC12)` configured as `(Alternate<PushPull>, Input<Floating>, Alternate<PushPull>)`.
222+
The pin parameter tuple (sck, miso, mosi) should be `(PB3, PB4, PB5)` or `(PC10, PC11, PC12)` configured as `(Alternate<...>, Input<...>, Alternate<...>)`.
223223
224224
You can also use `NoSck`, `NoMiso` or `NoMosi` if you don't want to use the pins
225225
*/

0 commit comments

Comments
 (0)