Skip to content

Commit 63b039a

Browse files
committed
split peri_address
1 parent 67b9c11 commit 63b039a

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
@@ -934,7 +934,7 @@ pub struct Rx<I2C> {
934934
unsafe impl<I2C: Instance> PeriAddress for Rx<I2C> {
935935
#[inline(always)]
936936
fn address(&self) -> u32 {
937-
unsafe { (*I2C::PTR).dr().as_ptr() as u32 }
937+
I2C::rx_peri_address()
938938
}
939939

940940
type MemSize = u8;
@@ -943,7 +943,7 @@ unsafe impl<I2C: Instance> PeriAddress for Rx<I2C> {
943943
unsafe impl<I2C: Instance> PeriAddress for Tx<I2C> {
944944
#[inline(always)]
945945
fn address(&self) -> u32 {
946-
unsafe { (*I2C::PTR).dr().as_ptr() as u32 }
946+
I2C::tx_peri_address()
947947
}
948948

949949
type MemSize = u8;

src/serial.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,13 @@ pub trait Instance:
138138
{
139139
#[doc(hidden)]
140140
#[inline(always)]
141-
fn peri_address() -> u32 {
142-
unsafe { &*Self::PTR }.peri_address()
141+
fn tx_peri_address() -> u32 {
142+
unsafe { &*Self::ptr() }.tx_peri_address()
143+
}
144+
#[doc(hidden)]
145+
#[inline(always)]
146+
fn rx_peri_address() -> u32 {
147+
unsafe { &*Self::ptr() }.rx_peri_address()
143148
}
144149
}
145150

@@ -726,7 +731,7 @@ impl<UART: Instance, WORD> Serial<UART, WORD> {
726731
unsafe impl<UART: Instance> PeriAddress for Rx<UART, u8> {
727732
#[inline(always)]
728733
fn address(&self) -> u32 {
729-
self.usart.peri_address()
734+
self.usart.rx_peri_address()
730735
}
731736

732737
type MemSize = u8;
@@ -742,7 +747,7 @@ where
742747
unsafe impl<UART: Instance> PeriAddress for Tx<UART, u8> {
743748
#[inline(always)]
744749
fn address(&self) -> u32 {
745-
self.usart.peri_address()
750+
self.usart.tx_peri_address()
746751
}
747752

748753
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
@@ -216,6 +216,16 @@ pub trait Instance:
216216
+ rcc::BusClock
217217
+ gpio::alt::SpiCommon
218218
{
219+
#[doc(hidden)]
220+
#[inline(always)]
221+
fn rx_peri_address() -> u32 {
222+
unsafe { &*Self::ptr() }.dr().as_ptr() as u32
223+
}
224+
#[doc(hidden)]
225+
#[inline(always)]
226+
fn tx_peri_address() -> u32 {
227+
unsafe { &*Self::ptr() }.dr().as_ptr() as u32
228+
}
219229
}
220230

221231
// Implemented by all SPI instances
@@ -957,7 +967,7 @@ impl<SPI: Instance> DmaBuilder<SPI> {
957967
unsafe impl<SPI: Instance> PeriAddress for Rx<SPI> {
958968
#[inline(always)]
959969
fn address(&self) -> u32 {
960-
unsafe { (*SPI::PTR).dr().as_ptr() as u32 }
970+
SPI::rx_peri_address()
961971
}
962972

963973
type MemSize = u8;
@@ -971,7 +981,7 @@ unsafe impl<SPI, STREAM, const CHANNEL: u8> DMASet<STREAM, CHANNEL, PeripheralTo
971981
unsafe impl<SPI: Instance> PeriAddress for Tx<SPI> {
972982
#[inline(always)]
973983
fn address(&self) -> u32 {
974-
unsafe { (*SPI::PTR).dr().as_ptr() as u32 }
984+
SPI::tx_peri_address()
975985
}
976986

977987
type MemSize = u8;

0 commit comments

Comments
 (0)