[HAL] for the py32f0xx family of microcontrollers
py32f0xx-hal contains a hardware abstraction on top of the peripheral access API for the puyasemi PY32F0xx family of microcontrollers.
Collaboration on this crate is highly welcome, as are pull requests!
- py32f030 (py32f030xx4, py32f030xx6, py32f030xx7, py32f030xx8)
- py32f003 (py32f003xx4, py32f003xx6, py32f030xx8)
- py32f002a (py32f002ax5)
- py32f002b (py32f002bx5)
Family | F002A | F002A | F030/F003 |
---|---|---|---|
RCC | ✅ | ✅ | ✅ |
GPIO | ✅ | ✅ | ✅ |
INTERRUPT | ✅ | ✅ | ✅ |
DMA | N/A | N/A | ✅ |
EXTI | ✅ | ✅ | ✅ |
USART | ✅ | ✅ | ✅ |
I2C | ❓ | ❓ | ❓ |
SPI | ✅ | ✅ | ✅ |
ADC | ✅ | ✅ | ✅ |
RTC | ✅ | ✅ | ✅ |
FLASH | |||
COMP | |||
Timer(PWM) | ✅ | ✅ | ✅ |
Watchdog | ❓ | ❓ | ❓ |
LED | N/A | N/A |
- ✅ : Implemented
- Blank : Not implemented
- ❓ : Requires demo verification
+
: Async support- N/A : Not available
-
LSE/LSI test and examples
-
Other chips
The examples
folder contains several example programs. To compile them, one must specify the target device as cargo feature:
$ cargo build --features=py32f030 --example=blinky
To use py32f0xx-hal as a dependency in a standalone project the target device feature must be specified in the Cargo.toml
file:
[dependencies]
embedded-hal = "1"
nb = "1"
cortex-m = "0.7.7"
cortex-m-rt = "0.7.3"
# Panic behaviour, see https://crates.io/keywords/panic-impl for alternatives
panic-halt = "0.2.0"
py32f0xx-hal = { version = "0.3.0", features = ["py32f030"] }
- rtic this feature includes a
monotonic
timer module for use with that crate - defmt Adds
derive(defmt::Format)
toError
types in this crate - rt Enables the
rt
feature in thepy32f0
crate
If you are unfamiliar with embedded development using Rust, there are a number of fantastic resources available to help.
- Embedded Rust Documentation
- The Embedded Rust Book
- Rust Embedded FAQ
- rust-embedded/awesome-embedded-rust
The minimum supported Rust version is the latest stable release. Older versions may compile, especially when some features are not used in your application.
See CHANGELOG.md.
This repo was inspired by stm32f0xx-hal and stm32f1xx-hal
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.