Skip to content

Commit 184832e

Browse files
committed
split peri_address
1 parent dbe8543 commit 184832e

File tree

6 files changed

+44
-12
lines changed

6 files changed

+44
-12
lines changed

src/i2c.rs

Lines changed: 10 additions & 0 deletions
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

Lines changed: 2 additions & 2 deletions
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.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,13 @@ pub trait Instance:
143143
{
144144
#[doc(hidden)]
145145
#[inline(always)]
146-
fn peri_address() -> u32 {
147-
unsafe { &*Self::ptr() }.peri_address()
146+
fn tx_peri_address() -> u32 {
147+
unsafe { &*Self::ptr() }.tx_peri_address()
148+
}
149+
#[doc(hidden)]
150+
#[inline(always)]
151+
fn rx_peri_address() -> u32 {
152+
unsafe { &*Self::ptr() }.rx_peri_address()
148153
}
149154
}
150155

@@ -707,7 +712,7 @@ impl<UART: Instance, WORD> Serial<UART, WORD> {
707712
unsafe impl<UART: Instance> PeriAddress for Rx<UART, u8> {
708713
#[inline(always)]
709714
fn address(&self) -> u32 {
710-
self.usart.peri_address()
715+
self.usart.rx_peri_address()
711716
}
712717

713718
type MemSize = u8;
@@ -723,7 +728,7 @@ where
723728
unsafe impl<UART: Instance> PeriAddress for Tx<UART, u8> {
724729
#[inline(always)]
725730
fn address(&self) -> u32 {
726-
self.usart.peri_address()
731+
self.usart.tx_peri_address()
727732
}
728733

729734
type MemSize = u8;

src/serial/dma.rs

Lines changed: 2 additions & 2 deletions
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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,15 @@ pub trait RegisterBlockImpl: UartRB {
196196
self.listen_event(Some(Event::TxEmpty.into()), None)
197197
}
198198

199-
// PeriAddress
200-
fn peri_address(&self) -> u32 {
199+
// PeriAddress for transfer data
200+
#[inline(always)]
201+
fn tx_peri_address(&self) -> u32 {
202+
self.dr().as_ptr() as u32
203+
}
204+
205+
// PeriAddress for receive data
206+
#[inline(always)]
207+
fn rx_peri_address(&self) -> u32 {
201208
self.dr().as_ptr() as u32
202209
}
203210

src/spi.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,16 @@ pub trait Instance:
219219
+ rcc::BusClock
220220
+ gpio::alt::SpiCommon
221221
{
222+
#[doc(hidden)]
223+
#[inline(always)]
224+
fn rx_peri_address() -> u32 {
225+
unsafe { &*Self::ptr() }.dr().as_ptr() as u32
226+
}
227+
#[doc(hidden)]
228+
#[inline(always)]
229+
fn tx_peri_address() -> u32 {
230+
unsafe { &*Self::ptr() }.dr().as_ptr() as u32
231+
}
222232
}
223233

224234
// Implemented by all SPI instances
@@ -926,7 +936,7 @@ impl<SPI: Instance> DmaBuilder<SPI> {
926936
unsafe impl<SPI: Instance> PeriAddress for Rx<SPI> {
927937
#[inline(always)]
928938
fn address(&self) -> u32 {
929-
unsafe { (*SPI::ptr()).dr().as_ptr() as u32 }
939+
SPI::rx_peri_address()
930940
}
931941

932942
type MemSize = u8;
@@ -940,7 +950,7 @@ unsafe impl<SPI, STREAM, const CHANNEL: u8> DMASet<STREAM, CHANNEL, PeripheralTo
940950
unsafe impl<SPI: Instance> PeriAddress for Tx<SPI> {
941951
#[inline(always)]
942952
fn address(&self) -> u32 {
943-
unsafe { (*SPI::ptr()).dr().as_ptr() as u32 }
953+
SPI::tx_peri_address()
944954
}
945955

946956
type MemSize = u8;

0 commit comments

Comments
 (0)