Skip to content

Commit 45a7c56

Browse files
committed
split peri_address
1 parent eca5943 commit 45a7c56

File tree

5 files changed

+45
-13
lines changed

5 files changed

+45
-13
lines changed

src/i2c.rs

+10
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,16 @@ pub trait Instance:
8282
+ Reset
8383
+ gpio::alt::I2cCommon
8484
{
85+
#[doc(hidden)]
86+
#[inline(always)]
87+
fn tx_peri_address() -> u32 {
88+
unsafe { (*Self::ptr()).dr().as_ptr() as u32 }
89+
}
90+
#[doc(hidden)]
91+
#[inline(always)]
92+
fn rx_peri_address() -> u32 {
93+
unsafe { (*Self::ptr()).dr().as_ptr() as u32 }
94+
}
8595
}
8696

8797
// Implemented by all I2C instances

src/i2c/dma.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -902,7 +902,7 @@ pub struct Rx<I2C> {
902902
unsafe impl<I2C: Instance> PeriAddress for Rx<I2C> {
903903
#[inline(always)]
904904
fn address(&self) -> u32 {
905-
unsafe { (*I2C::ptr()).dr().as_ptr() as u32 }
905+
I2C::rx_peri_address()
906906
}
907907

908908
type MemSize = u8;
@@ -911,7 +911,7 @@ unsafe impl<I2C: Instance> PeriAddress for Rx<I2C> {
911911
unsafe impl<I2C: Instance> PeriAddress for Tx<I2C> {
912912
#[inline(always)]
913913
fn address(&self) -> u32 {
914-
unsafe { (*I2C::ptr()).dr().as_ptr() as u32 }
914+
I2C::tx_peri_address()
915915
}
916916

917917
type MemSize = u8;

src/serial/dma.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ where
594594
{
595595
#[inline(always)]
596596
fn address(&self) -> u32 {
597-
<Serial_ as Instance>::peri_address()
597+
<Serial_ as Instance>::rx_peri_address()
598598
}
599599

600600
type MemSize = u8;
@@ -606,7 +606,7 @@ where
606606
{
607607
#[inline(always)]
608608
fn address(&self) -> u32 {
609-
<Serial_ as Instance>::peri_address()
609+
<Serial_ as Instance>::tx_peri_address()
610610
}
611611

612612
type MemSize = u8;

src/serial/uart_impls.rs

+19-7
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,13 @@ pub trait Instance:
3636
fn set_stopbits(&self, bits: config::StopBits);
3737
#[doc(hidden)]
3838
#[inline(always)]
39-
fn peri_address() -> u32 {
40-
unsafe { &*Self::ptr() }.peri_address()
39+
fn tx_peri_address() -> u32 {
40+
unsafe { &*Self::ptr() }.tx_peri_address()
41+
}
42+
#[doc(hidden)]
43+
#[inline(always)]
44+
fn rx_peri_address() -> u32 {
45+
unsafe { &*Self::ptr() }.rx_peri_address()
4146
}
4247
}
4348

@@ -143,8 +148,11 @@ pub trait RegisterBlockImpl: crate::Sealed {
143148
self.listen_event(Some(Event::TxEmpty.into()), None)
144149
}
145150

146-
// PeriAddress
147-
fn peri_address(&self) -> u32;
151+
// PeriAddress for transfer data
152+
fn tx_peri_address(&self) -> u32;
153+
154+
// PeriAddress for receive data
155+
fn rx_peri_address(&self) -> u32;
148156

149157
fn enable_dma(&self, dc: config::DmaConfig);
150158

@@ -260,7 +268,11 @@ macro_rules! uartCommon {
260268
});
261269
}
262270

263-
fn peri_address(&self) -> u32 {
271+
fn tx_peri_address(&self) -> u32 {
272+
self.dr().as_ptr() as u32
273+
}
274+
275+
fn rx_peri_address(&self) -> u32 {
264276
self.dr().as_ptr() as u32
265277
}
266278

@@ -636,7 +648,7 @@ impl<UART: Instance, WORD> Serial<UART, WORD> {
636648
unsafe impl<UART: Instance> PeriAddress for Rx<UART, u8> {
637649
#[inline(always)]
638650
fn address(&self) -> u32 {
639-
self.usart.peri_address()
651+
self.usart.rx_peri_address()
640652
}
641653

642654
type MemSize = u8;
@@ -652,7 +664,7 @@ where
652664
unsafe impl<UART: Instance> PeriAddress for Tx<UART, u8> {
653665
#[inline(always)]
654666
fn address(&self) -> u32 {
655-
self.usart.peri_address()
667+
self.usart.tx_peri_address()
656668
}
657669

658670
type MemSize = u8;

src/spi.rs

+12-2
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,16 @@ pub trait Instance:
203203
+ rcc::BusClock
204204
+ gpio::alt::SpiCommon
205205
{
206+
#[doc(hidden)]
207+
#[inline(always)]
208+
fn rx_peri_address() -> u32 {
209+
unsafe { &*Self::ptr() }.dr().as_ptr() as u32
210+
}
211+
#[doc(hidden)]
212+
#[inline(always)]
213+
fn tx_peri_address() -> u32 {
214+
unsafe { &*Self::ptr() }.dr().as_ptr() as u32
215+
}
206216
}
207217

208218
// Implemented by all SPI instances
@@ -922,7 +932,7 @@ impl<SPI: Instance> DmaBuilder<SPI> {
922932
unsafe impl<SPI: Instance> PeriAddress for Rx<SPI> {
923933
#[inline(always)]
924934
fn address(&self) -> u32 {
925-
unsafe { (*SPI::ptr()).dr().as_ptr() as u32 }
935+
SPI::rx_peri_address()
926936
}
927937

928938
type MemSize = u8;
@@ -936,7 +946,7 @@ unsafe impl<SPI, STREAM, const CHANNEL: u8> DMASet<STREAM, CHANNEL, PeripheralTo
936946
unsafe impl<SPI: Instance> PeriAddress for Tx<SPI> {
937947
#[inline(always)]
938948
fn address(&self) -> u32 {
939-
unsafe { (*SPI::ptr()).dr().as_ptr() as u32 }
949+
SPI::tx_peri_address()
940950
}
941951

942952
type MemSize = u8;

0 commit comments

Comments
 (0)