Skip to content

Commit 2b3b248

Browse files
committed
Add RTC mapping for STM32F405 targets.
1 parent 95290a2 commit 2b3b248

File tree

4 files changed

+153
-30
lines changed

4 files changed

+153
-30
lines changed

README.md

+45-30
Original file line numberDiff line numberDiff line change
@@ -18,40 +18,55 @@ drop-in replacement for it.
1818

1919
## Supported Devices
2020

21-
| `stm32_mcu` | Core name | Reference manual | Available features |
22-
|-------------|-----------------------|--------------------------------------------------------------------------|----------------------------------------------------------|
23-
| `stm32f100` | ARM® Cortex®-M3 r1p1 | [RM0041](https://www.st.com/resource/en/reference_manual/cd00246267.pdf) | `dma` `gpio` `spi` `tim` |
24-
| `stm32f101` | ARM® Cortex®-M3 r1p1 | [RM0008](https://www.st.com/resource/en/reference_manual/cd00171190.pdf) | `dma` `gpio` `spi` `tim` |
25-
| `stm32f102` | ARM® Cortex®-M3 r1p1 | [RM0008](https://www.st.com/resource/en/reference_manual/cd00171190.pdf) | `dma` `gpio` `spi` `tim` |
26-
| `stm32f103` | ARM® Cortex®-M3 r1p1 | [RM0008](https://www.st.com/resource/en/reference_manual/cd00171190.pdf) | `dma` `gpio` `spi` `tim` |
27-
| `stm32f107` | ARM® Cortex®-M3 r1p1 | [RM0008](https://www.st.com/resource/en/reference_manual/cd00171190.pdf) | `dma` `gpio` `spi` `tim` |
28-
| `stm32f303` | ARM® Cortex®-M4F r0p1 | [RM0316](https://www.st.com/resource/en/reference_manual/dm00043574.pdf) | `adc` `dma` `exti` `gpio` `i2c` `tim` |
29-
| `stm32f401` | ARM® Cortex®-M4F r0p1 | [RM0368](https://www.st.com/resource/en/reference_manual/dm00096844.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
30-
| `stm32f405` | ARM® Cortex®-M4F r0p1 | [RM0090](https://www.st.com/resource/en/reference_manual/dm00031020.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
31-
| `stm32f407` | ARM® Cortex®-M4F r0p1 | [RM0090](https://www.st.com/resource/en/reference_manual/dm00031020.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
32-
| `stm32f410` | ARM® Cortex®-M4F r0p1 | [RM0401](https://www.st.com/resource/en/reference_manual/dm00180366.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
33-
| `stm32f411` | ARM® Cortex®-M4F r0p1 | [RM0383](https://www.st.com/resource/en/reference_manual/dm00119316.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
34-
| `stm32f412` | ARM® Cortex®-M4F r0p1 | [RM0402](https://www.st.com/resource/en/reference_manual/dm00180369.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
35-
| `stm32f413` | ARM® Cortex®-M4F r0p1 | [RM0430](https://www.st.com/resource/en/reference_manual/dm00305666.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
36-
| `stm32f427` | ARM® Cortex®-M4F r0p1 | [RM0090](https://www.st.com/resource/en/reference_manual/dm00031020.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
37-
| `stm32f429` | ARM® Cortex®-M4F r0p1 | [RM0090](https://www.st.com/resource/en/reference_manual/dm00031020.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
38-
| `stm32f446` | ARM® Cortex®-M4F r0p1 | [RM0390](https://www.st.com/resource/en/reference_manual/dm00135183.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
39-
| `stm32f469` | ARM® Cortex®-M4F r0p1 | [RM0386](https://www.st.com/resource/en/reference_manual/dm00127514.pdf) | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
40-
| `stm32l4x1` | ARM® Cortex®-M4F r0p1 | [RM0394](https://www.st.com/resource/en/reference_manual/dm00151940.pdf) | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
41-
| `stm32l4x2` | ARM® Cortex®-M4F r0p1 | [RM0394](https://www.st.com/resource/en/reference_manual/dm00151940.pdf) | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
42-
| `stm32l4x3` | ARM® Cortex®-M4F r0p1 | [RM0394](https://www.st.com/resource/en/reference_manual/dm00151940.pdf) | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
43-
| `stm32l4x5` | ARM® Cortex®-M4F r0p1 | [RM0351](https://www.st.com/resource/en/reference_manual/dm00083560.pdf) | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
44-
| `stm32l4x6` | ARM® Cortex®-M4F r0p1 | [RM0351](https://www.st.com/resource/en/reference_manual/dm00083560.pdf) | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
45-
| `stm32l4r5` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
46-
| `stm32l4s5` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
47-
| `stm32l4r7` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
48-
| `stm32l4s7` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
49-
| `stm32l4r9` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
50-
| `stm32l4s9` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
21+
| `stm32_mcu` | Core name | Reference manual | Available features |
22+
|-------------|-----------------------|------------------|----------------------------------------------------------|
23+
| `stm32f100` | ARM® Cortex®-M3 r1p1 | [RM0041][RM0041] | `dma` `gpio` `spi` `tim` |
24+
| `stm32f101` | ARM® Cortex®-M3 r1p1 | [RM0008][RM0008] | `dma` `gpio` `spi` `tim` |
25+
| `stm32f102` | ARM® Cortex®-M3 r1p1 | [RM0008][RM0008] | `dma` `gpio` `spi` `tim` |
26+
| `stm32f103` | ARM® Cortex®-M3 r1p1 | [RM0008][RM0008] | `dma` `gpio` `spi` `tim` |
27+
| `stm32f107` | ARM® Cortex®-M3 r1p1 | [RM0008][RM0008] | `dma` `gpio` `spi` `tim` |
28+
| `stm32f303` | ARM® Cortex®-M4F r0p1 | [RM0316][RM0316] | `adc` `dma` `exti` `gpio` `i2c` `tim` |
29+
| `stm32f401` | ARM® Cortex®-M4F r0p1 | [RM0368][RM0368] | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
30+
| `stm32f405` | ARM® Cortex®-M4F r0p1 | [RM0090][RM0090] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
31+
| `stm32f407` | ARM® Cortex®-M4F r0p1 | [RM0090][RM0090] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
32+
| `stm32f410` | ARM® Cortex®-M4F r0p1 | [RM0401][RM0401] | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
33+
| `stm32f411` | ARM® Cortex®-M4F r0p1 | [RM0383][RM0383] | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
34+
| `stm32f412` | ARM® Cortex®-M4F r0p1 | [RM0402][RM0402] | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
35+
| `stm32f413` | ARM® Cortex®-M4F r0p1 | [RM0430][RM0430] | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
36+
| `stm32f427` | ARM® Cortex®-M4F r0p1 | [RM0090][RM0090] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
37+
| `stm32f429` | ARM® Cortex®-M4F r0p1 | [RM0090][RM0090] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
38+
| `stm32f446` | ARM® Cortex®-M4F r0p1 | [RM0390][RM0390] | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
39+
| `stm32f469` | ARM® Cortex®-M4F r0p1 | [RM0386][RM0386] | `adc` `dma` `exti` `gpio` `i2c` `spi` `tim` `uart` |
40+
| `stm32l4x1` | ARM® Cortex®-M4F r0p1 | [RM0394][RM0394] | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
41+
| `stm32l4x2` | ARM® Cortex®-M4F r0p1 | [RM0394][RM0394] | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
42+
| `stm32l4x3` | ARM® Cortex®-M4F r0p1 | [RM0394][RM0394] | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
43+
| `stm32l4x5` | ARM® Cortex®-M4F r0p1 | [RM0351][RM0351] | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
44+
| `stm32l4x6` | ARM® Cortex®-M4F r0p1 | [RM0351][RM0351] | `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
45+
| `stm32l4r5` | ARM® Cortex®-M4F r0p1 | [RM0432][RM0432] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
46+
| `stm32l4s5` | ARM® Cortex®-M4F r0p1 | [RM0432][RM0432] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
47+
| `stm32l4r7` | ARM® Cortex®-M4F r0p1 | [RM0432][RM0432] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
48+
| `stm32l4s7` | ARM® Cortex®-M4F r0p1 | [RM0432][RM0432] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
49+
| `stm32l4r9` | ARM® Cortex®-M4F r0p1 | [RM0432][RM0432] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
50+
| `stm32l4s9` | ARM® Cortex®-M4F r0p1 | [RM0432][RM0432] | `adc` `dma` `exti` `gpio` `i2c` `rtc` `spi` `tim` `uart` |
5151

5252
`stm32_mcu` config flag should be set at the application level according to
5353
this table.
5454

55+
[RM0008]: https://www.st.com/resource/en/reference_manual/cd00171190.pdf
56+
[RM0041]: https://www.st.com/resource/en/reference_manual/cd00246267.pdf
57+
[RM0090]: https://www.st.com/resource/en/reference_manual/dm00031020.pdf
58+
[RM0316]: https://www.st.com/resource/en/reference_manual/dm00043574.pdf
59+
[RM0351]: https://www.st.com/resource/en/reference_manual/dm00083560.pdf
60+
[RM0368]: https://www.st.com/resource/en/reference_manual/dm00096844.pdf
61+
[RM0383]: https://www.st.com/resource/en/reference_manual/dm00119316.pdf
62+
[RM0386]: https://www.st.com/resource/en/reference_manual/dm00127514.pdf
63+
[RM0390]: https://www.st.com/resource/en/reference_manual/dm00135183.pdf
64+
[RM0394]: https://www.st.com/resource/en/reference_manual/dm00151940.pdf
65+
[RM0401]: https://www.st.com/resource/en/reference_manual/dm00180366.pdf
66+
[RM0402]: https://www.st.com/resource/en/reference_manual/dm00180369.pdf
67+
[RM0430]: https://www.st.com/resource/en/reference_manual/dm00305666.pdf
68+
[RM0432]: https://www.st.com/resource/en/reference_manual/dm00310109.pdf
69+
5570
## Documentation
5671

5772
- [Drone Book](https://book.drone-os.com/)

src/periph/rtc/f4.rs

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
//! Real-time clock.
2+
//!
3+
//! For STM32F4 series of high-performance MCUs with DSP and FPU instructions.
4+
5+
use drone_core::periph;
6+
7+
periph::singular! {
8+
/// Extracts RTC register tokens.
9+
pub macro periph_rtc;
10+
11+
/// RTC peripheral.
12+
pub struct RtcPeriph;
13+
14+
drone_stm32_map_pieces::reg;
15+
crate;
16+
17+
PWR {
18+
CR {
19+
DBP;
20+
}
21+
}
22+
23+
RCC {
24+
APB1ENR {
25+
PWREN;
26+
}
27+
BDCR {
28+
BDRST;
29+
RTCEN;
30+
RTCSEL1;
31+
RTCSEL0;
32+
}
33+
}
34+
35+
RTC {
36+
TR;
37+
DR;
38+
CR;
39+
ISR;
40+
PRER;
41+
WUTR;
42+
CALIBR;
43+
ALRMBR;
44+
ALRMAR;
45+
WPR;
46+
SSR;
47+
SHIFTR;
48+
TSTR;
49+
TSDR;
50+
TSSSR;
51+
CALR;
52+
TAFCR;
53+
ALRMASSR;
54+
ALRMBSSR;
55+
BKP0R;
56+
BKP1R;
57+
BKP2R;
58+
BKP3R;
59+
BKP4R;
60+
BKP5R;
61+
BKP6R;
62+
BKP7R;
63+
BKP8R;
64+
BKP9R;
65+
BKP10R;
66+
BKP11R;
67+
BKP12R;
68+
BKP13R;
69+
BKP14R;
70+
BKP15R;
71+
BKP16R;
72+
BKP17R;
73+
BKP18R;
74+
BKP19R;
75+
}
76+
}

src/periph/rtc/lib.rs

+24
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,27 @@ mod l4_all;
3535
stm32_mcu = "stm32l4s9"
3636
))]
3737
pub use self::l4_all::*;
38+
39+
#[cfg(any(
40+
stm32_mcu = "stm32f405",
41+
stm32_mcu = "stm32f407",
42+
stm32_mcu = "stm32f415",
43+
stm32_mcu = "stm32f417",
44+
stm32_mcu = "stm32f427",
45+
stm32_mcu = "stm32f429",
46+
stm32_mcu = "stm32f437",
47+
stm32_mcu = "stm32f439",
48+
))]
49+
mod f4;
50+
51+
#[cfg(any(
52+
stm32_mcu = "stm32f405",
53+
stm32_mcu = "stm32f407",
54+
stm32_mcu = "stm32f415",
55+
stm32_mcu = "stm32f417",
56+
stm32_mcu = "stm32f427",
57+
stm32_mcu = "stm32f429",
58+
stm32_mcu = "stm32f437",
59+
stm32_mcu = "stm32f439",
60+
))]
61+
pub use self::f4::*;

tests/periph_macros.rs

+8
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,14 @@ fn periph_macros1() {
722722
stm32_mcu = "stm32l4x3",
723723
stm32_mcu = "stm32l4x5",
724724
stm32_mcu = "stm32l4x6",
725+
stm32_mcu = "stm32f405",
726+
stm32_mcu = "stm32f407",
727+
stm32_mcu = "stm32f415",
728+
stm32_mcu = "stm32f417",
729+
stm32_mcu = "stm32f427",
730+
stm32_mcu = "stm32f429",
731+
stm32_mcu = "stm32f437",
732+
stm32_mcu = "stm32f439",
725733
)
726734
))]
727735
{

0 commit comments

Comments
 (0)