Compare commits
13 Commits
vorago-reb
...
67af1bb9b5
Author | SHA1 | Date | |
---|---|---|---|
67af1bb9b5 | |||
1a83f932b5 | |||
cdc4807686 | |||
62a4123f82 | |||
17f13fc4dc
|
|||
b4f1512463 | |||
e9ec01fc60 | |||
d57cd383cd | |||
df4e943f48 | |||
93b67a4795
|
|||
a9f2e6dcee
|
|||
271c853df1 | |||
107189b166 |
@ -4,10 +4,9 @@
|
|||||||
# runner = "arm-none-eabi-gdb -q -x openocd.gdb"
|
# runner = "arm-none-eabi-gdb -q -x openocd.gdb"
|
||||||
# runner = "gdb-multiarch -q -x openocd.gdb"
|
# runner = "gdb-multiarch -q -x openocd.gdb"
|
||||||
# runner = "gdb -q -x openocd.gdb"
|
# runner = "gdb -q -x openocd.gdb"
|
||||||
runner = "gdb-multiarch -q -x jlink.gdb"
|
# runner = "gdb-multiarch -q -x jlink.gdb"
|
||||||
|
|
||||||
# Probe-rs is currently problematic: https://github.com/probe-rs/probe-rs/issues/2567
|
runner = "probe-rs run --chip VA108xx_RAM --protocol jtag"
|
||||||
# runner = "probe-rs run --chip VA108xx --chip-description-path ./scripts/VA108xx_Series.yaml"
|
|
||||||
# runner = ["probe-rs", "run", "--chip", "$CHIP", "--log-format", "{L} {s}"]
|
# runner = ["probe-rs", "run", "--chip", "$CHIP", "--log-format", "{L} {s}"]
|
||||||
|
|
||||||
rustflags = [
|
rustflags = [
|
||||||
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -12,6 +12,8 @@ jobs:
|
|||||||
targets: "thumbv6m-none-eabi"
|
targets: "thumbv6m-none-eabi"
|
||||||
- run: cargo check --target thumbv6m-none-eabi
|
- run: cargo check --target thumbv6m-none-eabi
|
||||||
- run: cargo check --target thumbv6m-none-eabi --examples
|
- run: cargo check --target thumbv6m-none-eabi --examples
|
||||||
|
- run: cargo check -p va108xx --target thumbv6m-none-eabi --all-features
|
||||||
|
- run: cargo check -p va108xx-hal --target thumbv6m-none-eabi --features "defmt"
|
||||||
|
|
||||||
test:
|
test:
|
||||||
name: Run Tests
|
name: Run Tests
|
||||||
|
75
README.md
75
README.md
@ -14,6 +14,8 @@ This workspace contains the following released crates:
|
|||||||
crate containing basic low-level register definition.
|
crate containing basic low-level register definition.
|
||||||
- The [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs/src/branch/main/va108xx-hal)
|
- The [`va108xx-hal`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs/src/branch/main/va108xx-hal)
|
||||||
HAL crate containing higher-level abstractions on top of the PAC register crate.
|
HAL crate containing higher-level abstractions on top of the PAC register crate.
|
||||||
|
- The [`va108xx-embassy`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs/src/branch/main/va108xx-embassy)
|
||||||
|
crate containing support for running the embassy-rs RTOS.
|
||||||
- The [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs/src/branch/main/vorago-reb1)
|
- The [`vorago-reb1`](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs/src/branch/main/vorago-reb1)
|
||||||
BSP crate containing support for the REB1 development board.
|
BSP crate containing support for the REB1 development board.
|
||||||
|
|
||||||
@ -58,14 +60,56 @@ You can then adapt the files in `.vscode` to your needs.
|
|||||||
You can use CLI or VS Code for flashing, running and debugging. In any case, take
|
You can use CLI or VS Code for flashing, running and debugging. In any case, take
|
||||||
care of installing the pre-requisites first.
|
care of installing the pre-requisites first.
|
||||||
|
|
||||||
### Pre-Requisites
|
### Using CLI with probe-rs
|
||||||
|
|
||||||
|
Install [probe-rs](https://probe.rs/docs/getting-started/installation/) first.
|
||||||
|
|
||||||
|
You can use `probe-rs` to run the software and display RTT log output. However, debugging does not
|
||||||
|
work yet.
|
||||||
|
|
||||||
|
After installation, you can run the following command
|
||||||
|
|
||||||
|
```sh
|
||||||
|
probe-rs run --chip VA108xx_RAM --protocol jtag target/thumbv6m-none-eabi/debug/examples/blinky
|
||||||
|
```
|
||||||
|
|
||||||
|
to flash and run the blinky program on the RAM. There is also a `VA108xx` chip target
|
||||||
|
available for persistent flashing.
|
||||||
|
|
||||||
|
Runner configuration avilable in the `.cargo/def-config.toml` file to use `probe-rs` for
|
||||||
|
convenience.
|
||||||
|
|
||||||
|
### Using VS Code
|
||||||
|
|
||||||
|
Assuming a working debug connection to your VA108xx board, you can debug using VS Code with
|
||||||
|
the [`Cortex-Debug` plugin](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug).
|
||||||
|
Please make sure that [`objdump-multiarch` and `nm-multiarch`](https://forums.raspberrypi.com/viewtopic.php?t=333146)
|
||||||
|
are installed as well.
|
||||||
|
|
||||||
|
Some sample configuration files for VS code were provided and can be used by running
|
||||||
|
`cp -rT vscode .vscode` like specified above. After that, you can use `Run and Debug`
|
||||||
|
to automatically rebuild and flash your application.
|
||||||
|
|
||||||
|
If you would like to use a custom GDB application, you can specify the gdb binary in the following
|
||||||
|
configuration variables in your `settings.json`:
|
||||||
|
|
||||||
|
- `"cortex-debug.gdbPath"`
|
||||||
|
- `"cortex-debug.gdbPath.linux"`
|
||||||
|
- `"cortex-debug.gdbPath.windows"`
|
||||||
|
- `"cortex-debug.gdbPath.osx"`
|
||||||
|
|
||||||
|
The provided VS Code configurations also provide an integrated RTT logger, which you can access
|
||||||
|
via the terminal at `RTT Ch:0 console`. In order for the RTT block address detection to
|
||||||
|
work properly, `objdump-multiarch` and `nm-multiarch` need to be installed.
|
||||||
|
|
||||||
|
### Using CLI with GDB and Segger J-Link Tools
|
||||||
|
|
||||||
|
Install the following two tools first:
|
||||||
|
|
||||||
1. [SEGGER J-Link tools](https://www.segger.com/downloads/jlink/) installed
|
1. [SEGGER J-Link tools](https://www.segger.com/downloads/jlink/) installed
|
||||||
2. [gdb-multiarch](https://packages.debian.org/sid/gdb-multiarch) or similar
|
2. [gdb-multiarch](https://packages.debian.org/sid/gdb-multiarch) or similar
|
||||||
cross-architecture debugger installed. All commands here assume `gdb-multiarch`.
|
cross-architecture debugger installed. All commands here assume `gdb-multiarch`.
|
||||||
|
|
||||||
### Using CLI
|
|
||||||
|
|
||||||
You can build the blinky example application with the following command
|
You can build the blinky example application with the following command
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -99,25 +143,8 @@ runner = "gdb-multiarch -q -x jlink/jlink.gdb"
|
|||||||
After that, you can simply use `cargo run --example blinky` to flash the blinky
|
After that, you can simply use `cargo run --example blinky` to flash the blinky
|
||||||
example.
|
example.
|
||||||
|
|
||||||
### Using VS Code
|
### Using the RTT Viewer
|
||||||
|
|
||||||
Assuming a working debug connection to your VA108xx board, you can debug using VS Code with
|
The Segger RTT viewer can be used to display log messages received from the target. The base
|
||||||
the [`Cortex-Debug` plugin](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug).
|
address for the RTT block placement is 0x10000000. It is recommended to use a search range of
|
||||||
Please make sure that [`objdump-multiarch` and `nm-multiarch`](https://forums.raspberrypi.com/viewtopic.php?t=333146)
|
0x1000 around that base address when using the RTT viewer.
|
||||||
are installed as well.
|
|
||||||
|
|
||||||
Some sample configuration files for VS code were provided and can be used by running
|
|
||||||
`cp -rT vscode .vscode` like specified above. After that, you can use `Run and Debug`
|
|
||||||
to automatically rebuild and flash your application.
|
|
||||||
|
|
||||||
If you would like to use a custom GDB application, you can specify the gdb binary in the following
|
|
||||||
configuration variables in your `settings.json`:
|
|
||||||
|
|
||||||
- `"cortex-debug.gdbPath"`
|
|
||||||
- `"cortex-debug.gdbPath.linux"`
|
|
||||||
- `"cortex-debug.gdbPath.windows"`
|
|
||||||
- `"cortex-debug.gdbPath.osx"`
|
|
||||||
|
|
||||||
The provided VS Code configurations also provide an integrated RTT logger, which you can access
|
|
||||||
via the terminal at `RTT Ch:0 console`. In order for the RTT block address detection to
|
|
||||||
work properly, `objdump-multiarch` and `nm-multiarch` need to be installed.
|
|
||||||
|
@ -15,10 +15,12 @@ num_enum = { version = "0.7", default-features = false }
|
|||||||
static_assertions = "1"
|
static_assertions = "1"
|
||||||
|
|
||||||
[dependencies.va108xx-hal]
|
[dependencies.va108xx-hal]
|
||||||
path = "../va108xx-hal"
|
version = "0.9"
|
||||||
|
# path = "../va108xx-hal"
|
||||||
|
|
||||||
[dependencies.vorago-reb1]
|
[dependencies.vorago-reb1]
|
||||||
path = "../vorago-reb1"
|
version = "0.7"
|
||||||
|
# path = "../vorago-reb1"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
|
@ -28,7 +28,7 @@ embassy-executor = { version = "0.7", features = [
|
|||||||
]}
|
]}
|
||||||
|
|
||||||
va108xx-hal = "0.9"
|
va108xx-hal = "0.9"
|
||||||
va108xx-embassy = { path = "../../va108xx-embassy", default-features = false }
|
va108xx-embassy = "0.1"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["ticks-hz-1_000", "va108xx-embassy/irq-oc30-oc31"]
|
default = ["ticks-hz-1_000", "va108xx-embassy/irq-oc30-oc31"]
|
||||||
|
@ -23,4 +23,4 @@ once_cell = {version = "1", default-features = false, features = ["critical-sect
|
|||||||
ringbuf = { version = "0.4.7", default-features = false, features = ["portable-atomic"] }
|
ringbuf = { version = "0.4.7", default-features = false, features = ["portable-atomic"] }
|
||||||
|
|
||||||
va108xx-hal = "0.9"
|
va108xx-hal = "0.9"
|
||||||
vorago-reb1 = { path = "../../vorago-reb1" }
|
vorago-reb1 = "0.7"
|
||||||
|
@ -20,4 +20,4 @@ version = "0.9"
|
|||||||
features = ["rt", "defmt"]
|
features = ["rt", "defmt"]
|
||||||
|
|
||||||
[dependencies.vorago-reb1]
|
[dependencies.vorago-reb1]
|
||||||
path = "../../vorago-reb1"
|
version = "0.7"
|
||||||
|
@ -29,7 +29,9 @@ rtic-monotonics = { version = "2", features = ["cortex-m-systick"] }
|
|||||||
rtic-sync = {version = "1", features = ["defmt-03"]}
|
rtic-sync = {version = "1", features = ["defmt-03"]}
|
||||||
|
|
||||||
[dependencies.va108xx-hal]
|
[dependencies.va108xx-hal]
|
||||||
path = "../va108xx-hal"
|
version = "0.9"
|
||||||
|
# path = "../va108xx-hal"
|
||||||
|
|
||||||
[dependencies.vorago-reb1]
|
[dependencies.vorago-reb1]
|
||||||
path = "../vorago-reb1"
|
version = "0.7"
|
||||||
|
# path = "../vorago-reb1"
|
||||||
|
17
va108xx-embassy/CHANGELOG.md
Normal file
17
va108xx-embassy/CHANGELOG.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Change Log
|
||||||
|
=======
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||||
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## [unreleased]
|
||||||
|
|
||||||
|
## [v0.1.2] and [v0.1.1] 2025-02-13
|
||||||
|
|
||||||
|
Docs patch
|
||||||
|
|
||||||
|
## [v0.1.0] 2025-02-13
|
||||||
|
|
||||||
|
Initial release
|
@ -1,11 +1,17 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "va108xx-embassy"
|
name = "va108xx-embassy"
|
||||||
version = "0.1.0"
|
version = "0.1.2"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
||||||
|
description = "Embassy-rs support for the Vorago VA108xx family of microcontrollers"
|
||||||
|
homepage = "https://egit.irs.uni-stuttgart.de/rust/va108xx-rs"
|
||||||
|
repository = "https://egit.irs.uni-stuttgart.de/rust/va108xx-rs"
|
||||||
|
license = "Apache-2.0"
|
||||||
|
keywords = ["no-std", "hal", "cortex-m", "vorago", "va108xx"]
|
||||||
|
categories = ["aerospace", "embedded", "no-std", "hardware-support"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
critical-section = "1"
|
critical-section = "1"
|
||||||
portable-atomic = { version = "1", features = ["unsafe-assume-single-core"]}
|
|
||||||
|
|
||||||
embassy-sync = "0.6"
|
embassy-sync = "0.6"
|
||||||
embassy-executor = "0.7"
|
embassy-executor = "0.7"
|
||||||
@ -14,8 +20,12 @@ embassy-time-queue-utils = "0.1"
|
|||||||
|
|
||||||
once_cell = { version = "1", default-features = false, features = ["critical-section"] }
|
once_cell = { version = "1", default-features = false, features = ["critical-section"] }
|
||||||
|
|
||||||
[dependencies.va108xx-hal]
|
va108xx-hal = "0.9"
|
||||||
path = "../va108xx-hal"
|
|
||||||
|
[target.'cfg(all(target_arch = "arm", target_os = "none"))'.dependencies]
|
||||||
|
portable-atomic = { version = "1", features = ["unsafe-assume-single-core"] }
|
||||||
|
[target.'cfg(not(all(target_arch = "arm", target_os = "none")))'.dependencies]
|
||||||
|
portable-atomic = "1"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["irq-oc30-oc31"]
|
default = ["irq-oc30-oc31"]
|
||||||
@ -25,3 +35,6 @@ irqs-in-lib = []
|
|||||||
irq-oc28-oc29 = ["irqs-in-lib"]
|
irq-oc28-oc29 = ["irqs-in-lib"]
|
||||||
irq-oc29-oc30 = ["irqs-in-lib"]
|
irq-oc29-oc30 = ["irqs-in-lib"]
|
||||||
irq-oc30-oc31 = ["irqs-in-lib"]
|
irq-oc30-oc31 = ["irqs-in-lib"]
|
||||||
|
|
||||||
|
[package.metadata.docs.rs]
|
||||||
|
rustdoc-args = ["--generate-link-to-definition"]
|
||||||
|
3
va108xx-embassy/docs.sh
Executable file
3
va108xx-embassy/docs.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export RUSTDOCFLAGS="--cfg docsrs --generate-link-to-definition -Z unstable-options"
|
||||||
|
cargo +nightly doc --open
|
@ -23,17 +23,17 @@
|
|||||||
//!
|
//!
|
||||||
//! You can disable the default features and then specify one of the features above to use the
|
//! You can disable the default features and then specify one of the features above to use the
|
||||||
//! documented combination of IRQs. It is also possible to specify custom IRQs by importing and
|
//! documented combination of IRQs. It is also possible to specify custom IRQs by importing and
|
||||||
//! using the [embassy::embassy_time_driver_irqs] macro to declare the IRQ handlers in the
|
//! using the [embassy_time_driver_irqs] macro to declare the IRQ handlers in the
|
||||||
//! application code. If this is done, [embassy::init_with_custom_irqs] must be used
|
//! application code. If this is done, [embassy::init_with_custom_irqs] must be used
|
||||||
//! method to pass the IRQ numbers to the library.
|
//! method to pass the IRQ numbers to the library.
|
||||||
//!
|
//!
|
||||||
//! ## Examples
|
//! ## Examples
|
||||||
//!
|
//!
|
||||||
//! [embassy example project](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs/src/branch/main/examples/embassy)
|
//! [embassy example projects](https://egit.irs.uni-stuttgart.de/rust/va108xx-rs/src/branch/main/examples/embassy)
|
||||||
#![no_std]
|
#![no_std]
|
||||||
|
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
||||||
use core::cell::{Cell, RefCell};
|
use core::cell::{Cell, RefCell};
|
||||||
use critical_section::CriticalSection;
|
use critical_section::{CriticalSection, Mutex};
|
||||||
use embassy_sync::blocking_mutex::CriticalSectionMutex as Mutex;
|
|
||||||
use portable_atomic::{AtomicU32, Ordering};
|
use portable_atomic::{AtomicU32, Ordering};
|
||||||
|
|
||||||
use embassy_time_driver::{time_driver_impl, Driver, TICK_HZ};
|
use embassy_time_driver::{time_driver_impl, Driver, TICK_HZ};
|
||||||
@ -45,7 +45,7 @@ use va108xx_hal::{
|
|||||||
clock::enable_peripheral_clock,
|
clock::enable_peripheral_clock,
|
||||||
enable_nvic_interrupt, pac,
|
enable_nvic_interrupt, pac,
|
||||||
prelude::*,
|
prelude::*,
|
||||||
timer::{enable_tim_clk, get_tim_raw, TimRegInterface},
|
timer::{enable_tim_clk, get_tim_raw, TimRegInterface, ValidTim},
|
||||||
PeripheralSelect,
|
PeripheralSelect,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ time_driver_impl!(
|
|||||||
/// the feature flags specified. However, the macro is exported to allow users to specify the
|
/// the feature flags specified. However, the macro is exported to allow users to specify the
|
||||||
/// interrupt handlers themselves.
|
/// interrupt handlers themselves.
|
||||||
///
|
///
|
||||||
/// Please note that you have to explicitely import the [va108xx_hal::pac::interrupt]
|
/// Please note that you have to explicitely import the [macro@va108xx_hal::pac::interrupt]
|
||||||
/// macro in the application code in case this macro is used there.
|
/// macro in the application code in case this macro is used there.
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! embassy_time_driver_irqs {
|
macro_rules! embassy_time_driver_irqs {
|
||||||
@ -115,12 +115,15 @@ pub mod embassy {
|
|||||||
/// This has to be called once at initialization time to initiate the time driver for
|
/// This has to be called once at initialization time to initiate the time driver for
|
||||||
/// embassy.
|
/// embassy.
|
||||||
#[cfg(feature = "irqs-in-lib")]
|
#[cfg(feature = "irqs-in-lib")]
|
||||||
pub unsafe fn init(
|
pub unsafe fn init<
|
||||||
|
TimekeeperTim: TimRegInterface + ValidTim,
|
||||||
|
AlarmTim: TimRegInterface + ValidTim,
|
||||||
|
>(
|
||||||
syscfg: &mut pac::Sysconfig,
|
syscfg: &mut pac::Sysconfig,
|
||||||
irqsel: &pac::Irqsel,
|
irqsel: &pac::Irqsel,
|
||||||
sysclk: impl Into<Hertz>,
|
sysclk: impl Into<Hertz>,
|
||||||
timekeeper_tim: impl TimRegInterface,
|
timekeeper_tim: TimekeeperTim,
|
||||||
alarm_tim: impl TimRegInterface,
|
alarm_tim: AlarmTim,
|
||||||
) {
|
) {
|
||||||
TIME_DRIVER.init(
|
TIME_DRIVER.init(
|
||||||
syscfg,
|
syscfg,
|
||||||
@ -139,12 +142,15 @@ pub mod embassy {
|
|||||||
///
|
///
|
||||||
/// This has to be called once at initialization time to initiate the time driver for
|
/// This has to be called once at initialization time to initiate the time driver for
|
||||||
/// embassy.
|
/// embassy.
|
||||||
pub unsafe fn init_with_custom_irqs(
|
pub unsafe fn init_with_custom_irqs<
|
||||||
|
TimekeeperTim: TimRegInterface + ValidTim,
|
||||||
|
AlarmTim: TimRegInterface + ValidTim,
|
||||||
|
>(
|
||||||
syscfg: &mut pac::Sysconfig,
|
syscfg: &mut pac::Sysconfig,
|
||||||
irqsel: &pac::Irqsel,
|
irqsel: &pac::Irqsel,
|
||||||
sysclk: impl Into<Hertz>,
|
sysclk: impl Into<Hertz>,
|
||||||
timekeeper_tim: impl TimRegInterface,
|
timekeeper_tim: TimekeeperTim,
|
||||||
alarm_tim: impl TimRegInterface,
|
alarm_tim: AlarmTim,
|
||||||
timekeeper_irq: pac::Interrupt,
|
timekeeper_irq: pac::Interrupt,
|
||||||
alarm_irq: pac::Interrupt,
|
alarm_irq: pac::Interrupt,
|
||||||
) {
|
) {
|
||||||
@ -187,21 +193,21 @@ pub struct TimerDriver {
|
|||||||
|
|
||||||
impl TimerDriver {
|
impl TimerDriver {
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
fn init(
|
fn init<TimekeeperTim: TimRegInterface + ValidTim, AlarmTim: TimRegInterface + ValidTim>(
|
||||||
&self,
|
&self,
|
||||||
syscfg: &mut pac::Sysconfig,
|
syscfg: &mut pac::Sysconfig,
|
||||||
irqsel: &pac::Irqsel,
|
irqsel: &pac::Irqsel,
|
||||||
sysclk: impl Into<Hertz>,
|
sysclk: impl Into<Hertz>,
|
||||||
timekeeper_tim: impl TimRegInterface,
|
timekeeper_tim: TimekeeperTim,
|
||||||
alarm_tim: impl TimRegInterface,
|
alarm_tim: AlarmTim,
|
||||||
timekeeper_irq: pac::Interrupt,
|
timekeeper_irq: pac::Interrupt,
|
||||||
alarm_irq: pac::Interrupt,
|
alarm_irq: pac::Interrupt,
|
||||||
) {
|
) {
|
||||||
if ALARM_TIM.get().is_some() {
|
if ALARM_TIM.get().is_some() || TIMEKEEPER_TIM.get().is_some() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ALARM_TIM.set(alarm_tim.tim_id()).ok();
|
ALARM_TIM.set(AlarmTim::TIM_ID).ok();
|
||||||
TIMEKEEPER_TIM.set(timekeeper_tim.tim_id()).ok();
|
TIMEKEEPER_TIM.set(TimekeeperTim::TIM_ID).ok();
|
||||||
enable_peripheral_clock(syscfg, PeripheralSelect::Irqsel);
|
enable_peripheral_clock(syscfg, PeripheralSelect::Irqsel);
|
||||||
enable_tim_clk(syscfg, timekeeper_tim.tim_id());
|
enable_tim_clk(syscfg, timekeeper_tim.tim_id());
|
||||||
let timekeeper_reg_block = timekeeper_tim.reg_block();
|
let timekeeper_reg_block = timekeeper_tim.reg_block();
|
||||||
|
@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
|
|
||||||
## [unreleased]
|
## [unreleased]
|
||||||
|
|
||||||
|
## [v0.5.0] 2025-02-14
|
||||||
|
|
||||||
|
- Re-generated PAC with `svd2rust` v0.35.0 and added optional `defmt` and `Debug` implementations
|
||||||
|
|
||||||
## [v0.4.0] 2025-02-12
|
## [v0.4.0] 2025-02-12
|
||||||
|
|
||||||
- Re-generated PAC with `svd2rust` v0.35.0
|
- Re-generated PAC with `svd2rust` v0.35.0
|
||||||
|
@ -13,6 +13,7 @@ categories = ["embedded", "no-std", "hardware-support"]
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
cortex-m = "0.7"
|
cortex-m = "0.7"
|
||||||
vcell = "0.1.3"
|
vcell = "0.1.3"
|
||||||
|
defmt = "0.3"
|
||||||
critical-section = { version = "1", optional = true }
|
critical-section = { version = "1", optional = true }
|
||||||
|
|
||||||
[dependencies.cortex-m-rt]
|
[dependencies.cortex-m-rt]
|
||||||
@ -21,6 +22,10 @@ version = ">=0.6.15,<0.8"
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
rt = ["cortex-m-rt/device"]
|
rt = ["cortex-m-rt/device"]
|
||||||
|
# Adds defmt support
|
||||||
|
defmt = []
|
||||||
|
# Adds Debug implementation
|
||||||
|
debug = []
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
all-features = true
|
all-features = true
|
||||||
|
@ -26,6 +26,12 @@ The `rt` feature is optional and recommended. It brings in support for `cortex-m
|
|||||||
For full details on the autgenerated API, please see the
|
For full details on the autgenerated API, please see the
|
||||||
[svd2rust documentation](https://docs.rs/svd2rust/latest/svd2rust/#peripheral-api).
|
[svd2rust documentation](https://docs.rs/svd2rust/latest/svd2rust/#peripheral-api).
|
||||||
|
|
||||||
|
## Optional Features
|
||||||
|
|
||||||
|
- [`defmt`](https://defmt.ferrous-systems.com/): Add support for `defmt` by adding the
|
||||||
|
[`defmt::Format`](https://defmt.ferrous-systems.com/format) derive on many types.
|
||||||
|
- [`debug`]: Add `Debug` derives for various structures
|
||||||
|
|
||||||
## Regenerating the PAC
|
## Regenerating the PAC
|
||||||
|
|
||||||
If you want to re-generate the PAC, for example if the register file `va416xx.svd` changes
|
If you want to re-generate the PAC, for example if the register file `va416xx.svd` changes
|
||||||
|
@ -30,7 +30,7 @@ fi
|
|||||||
|
|
||||||
svdtools patch svd/va108xx-patch.yml
|
svdtools patch svd/va108xx-patch.yml
|
||||||
# See https://github.com/rust-embedded/svd2rust/issues/830 for required re-export.
|
# See https://github.com/rust-embedded/svd2rust/issues/830 for required re-export.
|
||||||
${svd2rust_bin} --reexport-interrupt -i svd/va108xx.svd.patched
|
${svd2rust_bin} --reexport-interrupt --impl-defmt defmt --impl-debug-feature debug -i svd/va108xx.svd.patched
|
||||||
|
|
||||||
result=$?
|
result=$?
|
||||||
if [ $result -ne 0 ]; then
|
if [ $result -ne 0 ]; then
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<AddressSpec>;
|
pub type R = crate::R<AddressSpec>;
|
||||||
#[doc = "Register `ADDRESS` writer"]
|
#[doc = "Register `ADDRESS` writer"]
|
||||||
pub type W = crate::W<AddressSpec>;
|
pub type W = crate::W<AddressSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<ClktolimitSpec>;
|
pub type R = crate::R<ClktolimitSpec>;
|
||||||
#[doc = "Register `CLKTOLIMIT` writer"]
|
#[doc = "Register `CLKTOLIMIT` writer"]
|
||||||
pub type W = crate::W<ClktolimitSpec>;
|
pub type W = crate::W<ClktolimitSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<CmdSpec>;
|
pub type R = crate::R<CmdSpec>;
|
||||||
#[doc = "Register `CMD` writer"]
|
#[doc = "Register `CMD` writer"]
|
||||||
pub type W = crate::W<CmdSpec>;
|
pub type W = crate::W<CmdSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<DataSpec>;
|
pub type R = crate::R<DataSpec>;
|
||||||
#[doc = "Register `DATA` writer"]
|
#[doc = "Register `DATA` writer"]
|
||||||
pub type W = crate::W<DataSpec>;
|
pub type W = crate::W<DataSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `RXCOUNT` reader"]
|
#[doc = "Register `RXCOUNT` reader"]
|
||||||
pub type R = crate::R<RxcountSpec>;
|
pub type R = crate::R<RxcountSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<RxfifoirqtrgSpec>;
|
pub type R = crate::R<RxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `RXFIFOIRQTRG` writer"]
|
#[doc = "Register `RXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<RxfifoirqtrgSpec>;
|
pub type W = crate::W<RxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0AddressSpec>;
|
pub type R = crate::R<S0AddressSpec>;
|
||||||
#[doc = "Register `S0_ADDRESS` writer"]
|
#[doc = "Register `S0_ADDRESS` writer"]
|
||||||
pub type W = crate::W<S0AddressSpec>;
|
pub type W = crate::W<S0AddressSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0AddressbSpec>;
|
pub type R = crate::R<S0AddressbSpec>;
|
||||||
#[doc = "Register `S0_ADDRESSB` writer"]
|
#[doc = "Register `S0_ADDRESSB` writer"]
|
||||||
pub type W = crate::W<S0AddressbSpec>;
|
pub type W = crate::W<S0AddressbSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0AddressmaskSpec>;
|
pub type R = crate::R<S0AddressmaskSpec>;
|
||||||
#[doc = "Register `S0_ADDRESSMASK` writer"]
|
#[doc = "Register `S0_ADDRESSMASK` writer"]
|
||||||
pub type W = crate::W<S0AddressmaskSpec>;
|
pub type W = crate::W<S0AddressmaskSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0AddressmaskbSpec>;
|
pub type R = crate::R<S0AddressmaskbSpec>;
|
||||||
#[doc = "Register `S0_ADDRESSMASKB` writer"]
|
#[doc = "Register `S0_ADDRESSMASKB` writer"]
|
||||||
pub type W = crate::W<S0AddressmaskbSpec>;
|
pub type W = crate::W<S0AddressmaskbSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0DataSpec>;
|
pub type R = crate::R<S0DataSpec>;
|
||||||
#[doc = "Register `S0_DATA` writer"]
|
#[doc = "Register `S0_DATA` writer"]
|
||||||
pub type W = crate::W<S0DataSpec>;
|
pub type W = crate::W<S0DataSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `S0_LASTADDRESS` reader"]
|
#[doc = "Register `S0_LASTADDRESS` reader"]
|
||||||
pub type R = crate::R<S0LastaddressSpec>;
|
pub type R = crate::R<S0LastaddressSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0MaxwordsSpec>;
|
pub type R = crate::R<S0MaxwordsSpec>;
|
||||||
#[doc = "Register `S0_MAXWORDS` writer"]
|
#[doc = "Register `S0_MAXWORDS` writer"]
|
||||||
pub type W = crate::W<S0MaxwordsSpec>;
|
pub type W = crate::W<S0MaxwordsSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `S0_RXCOUNT` reader"]
|
#[doc = "Register `S0_RXCOUNT` reader"]
|
||||||
pub type R = crate::R<S0RxcountSpec>;
|
pub type R = crate::R<S0RxcountSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0RxfifoirqtrgSpec>;
|
pub type R = crate::R<S0RxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `S0_RXFIFOIRQTRG` writer"]
|
#[doc = "Register `S0_RXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<S0RxfifoirqtrgSpec>;
|
pub type W = crate::W<S0RxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `S0_STATE` reader"]
|
#[doc = "Register `S0_STATE` reader"]
|
||||||
pub type R = crate::R<S0StateSpec>;
|
pub type R = crate::R<S0StateSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `S0_TXCOUNT` reader"]
|
#[doc = "Register `S0_TXCOUNT` reader"]
|
||||||
pub type R = crate::R<S0TxcountSpec>;
|
pub type R = crate::R<S0TxcountSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<S0TxfifoirqtrgSpec>;
|
pub type R = crate::R<S0TxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `S0_TXFIFOIRQTRG` writer"]
|
#[doc = "Register `S0_TXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<S0TxfifoirqtrgSpec>;
|
pub type W = crate::W<S0TxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `STATE` reader"]
|
#[doc = "Register `STATE` reader"]
|
||||||
pub type R = crate::R<StateSpec>;
|
pub type R = crate::R<StateSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<TmconfigSpec>;
|
pub type R = crate::R<TmconfigSpec>;
|
||||||
#[doc = "Register `TMCONFIG` writer"]
|
#[doc = "Register `TMCONFIG` writer"]
|
||||||
pub type W = crate::W<TmconfigSpec>;
|
pub type W = crate::W<TmconfigSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `TXCOUNT` reader"]
|
#[doc = "Register `TXCOUNT` reader"]
|
||||||
pub type R = crate::R<TxcountSpec>;
|
pub type R = crate::R<TxcountSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<TxfifoirqtrgSpec>;
|
pub type R = crate::R<TxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `TXFIFOIRQTRG` writer"]
|
#[doc = "Register `TXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<TxfifoirqtrgSpec>;
|
pub type W = crate::W<TxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<WordsSpec>;
|
pub type R = crate::R<WordsSpec>;
|
||||||
#[doc = "Register `WORDS` writer"]
|
#[doc = "Register `WORDS` writer"]
|
||||||
pub type W = crate::W<WordsSpec>;
|
pub type W = crate::W<WordsSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -3,6 +3,7 @@ pub type R = crate::R<PortaSpec>;
|
|||||||
#[doc = "Register `PORTA[%s]` writer"]
|
#[doc = "Register `PORTA[%s]` writer"]
|
||||||
pub type W = crate::W<PortaSpec>;
|
pub type W = crate::W<PortaSpec>;
|
||||||
#[doc = "Input Filter Selectoin\n\nValue on reset: 0"]
|
#[doc = "Input Filter Selectoin\n\nValue on reset: 0"]
|
||||||
|
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum Flttype {
|
pub enum Flttype {
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<IntRamSbeSpec>;
|
pub type R = crate::R<IntRamSbeSpec>;
|
||||||
#[doc = "Register `INT_RAM_SBE` writer"]
|
#[doc = "Register `INT_RAM_SBE` writer"]
|
||||||
pub type W = crate::W<IntRamSbeSpec>;
|
pub type W = crate::W<IntRamSbeSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -97,6 +97,7 @@ pub static __INTERRUPTS: [Vector; 32] = [
|
|||||||
Vector { _handler: OC31 },
|
Vector { _handler: OC31 },
|
||||||
];
|
];
|
||||||
#[doc = r"Enumeration of all the interrupts."]
|
#[doc = r"Enumeration of all the interrupts."]
|
||||||
|
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||||
#[repr(u16)]
|
#[repr(u16)]
|
||||||
pub enum Interrupt {
|
pub enum Interrupt {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `DATAIN` reader"]
|
#[doc = "Register `DATAIN` reader"]
|
||||||
pub type R = crate::R<DatainSpec>;
|
pub type R = crate::R<DatainSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `DATAINBYTE[%s]` reader"]
|
#[doc = "Register `DATAINBYTE[%s]` reader"]
|
||||||
pub type R = crate::R<DatainbyteSpec>;
|
pub type R = crate::R<DatainbyteSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<DatamaskSpec>;
|
pub type R = crate::R<DatamaskSpec>;
|
||||||
#[doc = "Register `DATAMASK` writer"]
|
#[doc = "Register `DATAMASK` writer"]
|
||||||
pub type W = crate::W<DatamaskSpec>;
|
pub type W = crate::W<DatamaskSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<DatamaskbyteSpec>;
|
pub type R = crate::R<DatamaskbyteSpec>;
|
||||||
#[doc = "Register `DATAMASKBYTE[%s]` writer"]
|
#[doc = "Register `DATAMASKBYTE[%s]` writer"]
|
||||||
pub type W = crate::W<DatamaskbyteSpec>;
|
pub type W = crate::W<DatamaskbyteSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `DATAOUT` writer"]
|
#[doc = "Register `DATAOUT` writer"]
|
||||||
pub type W = crate::W<DataoutSpec>;
|
pub type W = crate::W<DataoutSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for crate::generic::Reg<DataoutSpec> {
|
impl core::fmt::Debug for crate::generic::Reg<DataoutSpec> {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||||
write!(f, "(not readable)")
|
write!(f, "(not readable)")
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `DATAOUTBYTE[%s]` writer"]
|
#[doc = "Register `DATAOUTBYTE[%s]` writer"]
|
||||||
pub type W = crate::W<DataoutbyteSpec>;
|
pub type W = crate::W<DataoutbyteSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for crate::generic::Reg<DataoutbyteSpec> {
|
impl core::fmt::Debug for crate::generic::Reg<DataoutbyteSpec> {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||||
write!(f, "(not readable)")
|
write!(f, "(not readable)")
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<EdgeStatusSpec>;
|
pub type R = crate::R<EdgeStatusSpec>;
|
||||||
#[doc = "Register `EDGE_STATUS` writer"]
|
#[doc = "Register `EDGE_STATUS` writer"]
|
||||||
pub type W = crate::W<EdgeStatusSpec>;
|
pub type W = crate::W<EdgeStatusSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<IrqEdgeSpec>;
|
pub type R = crate::R<IrqEdgeSpec>;
|
||||||
#[doc = "Register `IRQ_EDGE` writer"]
|
#[doc = "Register `IRQ_EDGE` writer"]
|
||||||
pub type W = crate::W<IrqEdgeSpec>;
|
pub type W = crate::W<IrqEdgeSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<IrqEnbSpec>;
|
pub type R = crate::R<IrqEnbSpec>;
|
||||||
#[doc = "Register `IRQ_ENB` writer"]
|
#[doc = "Register `IRQ_ENB` writer"]
|
||||||
pub type W = crate::W<IrqEnbSpec>;
|
pub type W = crate::W<IrqEnbSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `IRQ_END` reader"]
|
#[doc = "Register `IRQ_END` reader"]
|
||||||
pub type R = crate::R<IrqEndSpec>;
|
pub type R = crate::R<IrqEndSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<IrqEvtSpec>;
|
pub type R = crate::R<IrqEvtSpec>;
|
||||||
#[doc = "Register `IRQ_EVT` writer"]
|
#[doc = "Register `IRQ_EVT` writer"]
|
||||||
pub type W = crate::W<IrqEvtSpec>;
|
pub type W = crate::W<IrqEvtSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `IRQ_RAW` reader"]
|
#[doc = "Register `IRQ_RAW` reader"]
|
||||||
pub type R = crate::R<IrqRawSpec>;
|
pub type R = crate::R<IrqRawSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<IrqSenSpec>;
|
pub type R = crate::R<IrqSenSpec>;
|
||||||
#[doc = "Register `IRQ_SEN` writer"]
|
#[doc = "Register `IRQ_SEN` writer"]
|
||||||
pub type W = crate::W<IrqSenSpec>;
|
pub type W = crate::W<IrqSenSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<ClkprescaleSpec>;
|
pub type R = crate::R<ClkprescaleSpec>;
|
||||||
#[doc = "Register `CLKPRESCALE` writer"]
|
#[doc = "Register `CLKPRESCALE` writer"]
|
||||||
pub type W = crate::W<ClkprescaleSpec>;
|
pub type W = crate::W<ClkprescaleSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<DataSpec>;
|
pub type R = crate::R<DataSpec>;
|
||||||
#[doc = "Register `DATA` writer"]
|
#[doc = "Register `DATA` writer"]
|
||||||
pub type W = crate::W<DataSpec>;
|
pub type W = crate::W<DataSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<RxfifoirqtrgSpec>;
|
pub type R = crate::R<RxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `RXFIFOIRQTRG` writer"]
|
#[doc = "Register `RXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<RxfifoirqtrgSpec>;
|
pub type W = crate::W<RxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `STATE` reader"]
|
#[doc = "Register `STATE` reader"]
|
||||||
pub type R = crate::R<StateSpec>;
|
pub type R = crate::R<StateSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<TxfifoirqtrgSpec>;
|
pub type R = crate::R<TxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `TXFIFOIRQTRG` writer"]
|
#[doc = "Register `TXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<TxfifoirqtrgSpec>;
|
pub type W = crate::W<TxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `EF_CONFIG` reader"]
|
#[doc = "Register `EF_CONFIG` reader"]
|
||||||
pub type R = crate::R<EfConfigSpec>;
|
pub type R = crate::R<EfConfigSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `EF_ID` reader"]
|
#[doc = "Register `EF_ID` reader"]
|
||||||
pub type R = crate::R<EfIdSpec>;
|
pub type R = crate::R<EfIdSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<IoconfigClkdivSpec>;
|
pub type R = crate::R<IoconfigClkdivSpec>;
|
||||||
#[doc = "Register `IOCONFIG_CLKDIV%s` writer"]
|
#[doc = "Register `IOCONFIG_CLKDIV%s` writer"]
|
||||||
pub type W = crate::W<IoconfigClkdivSpec>;
|
pub type W = crate::W<IoconfigClkdivSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `IOCONFIG_CLKDIV0` reader"]
|
#[doc = "Register `IOCONFIG_CLKDIV0` reader"]
|
||||||
pub type R = crate::R<IoconfigClkdiv0Spec>;
|
pub type R = crate::R<IoconfigClkdiv0Spec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PROCID` reader"]
|
#[doc = "Register `PROCID` reader"]
|
||||||
pub type R = crate::R<ProcidSpec>;
|
pub type R = crate::R<ProcidSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<RamSbeSpec>;
|
pub type R = crate::R<RamSbeSpec>;
|
||||||
#[doc = "Register `RAM_SBE` writer"]
|
#[doc = "Register `RAM_SBE` writer"]
|
||||||
pub type W = crate::W<RamSbeSpec>;
|
pub type W = crate::W<RamSbeSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<RefreshConfigSpec>;
|
pub type R = crate::R<RefreshConfigSpec>;
|
||||||
#[doc = "Register `REFRESH_CONFIG` writer"]
|
#[doc = "Register `REFRESH_CONFIG` writer"]
|
||||||
pub type W = crate::W<RefreshConfigSpec>;
|
pub type W = crate::W<RefreshConfigSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `ROM_RETRIES` reader"]
|
#[doc = "Register `ROM_RETRIES` reader"]
|
||||||
pub type R = crate::R<RomRetriesSpec>;
|
pub type R = crate::R<RomRetriesSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<TimClkEnableSpec>;
|
pub type R = crate::R<TimClkEnableSpec>;
|
||||||
#[doc = "Register `TIM_CLK_ENABLE` writer"]
|
#[doc = "Register `TIM_CLK_ENABLE` writer"]
|
||||||
pub type W = crate::W<TimClkEnableSpec>;
|
pub type W = crate::W<TimClkEnableSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<TimResetSpec>;
|
pub type R = crate::R<TimResetSpec>;
|
||||||
#[doc = "Register `TIM_RESET` writer"]
|
#[doc = "Register `TIM_RESET` writer"]
|
||||||
pub type W = crate::W<TimResetSpec>;
|
pub type W = crate::W<TimResetSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<CntValueSpec>;
|
pub type R = crate::R<CntValueSpec>;
|
||||||
#[doc = "Register `CNT_VALUE` writer"]
|
#[doc = "Register `CNT_VALUE` writer"]
|
||||||
pub type W = crate::W<CntValueSpec>;
|
pub type W = crate::W<CntValueSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -21,6 +21,7 @@ pub type IrqEnbR = crate::BitReader;
|
|||||||
#[doc = "Field `IRQ_ENB` writer - Interrupt Enable"]
|
#[doc = "Field `IRQ_ENB` writer - Interrupt Enable"]
|
||||||
pub type IrqEnbW<'a, REG> = crate::BitWriter<'a, REG>;
|
pub type IrqEnbW<'a, REG> = crate::BitWriter<'a, REG>;
|
||||||
#[doc = "Counter Status Selection\n\nValue on reset: 0"]
|
#[doc = "Counter Status Selection\n\nValue on reset: 0"]
|
||||||
|
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum StatusSel {
|
pub enum StatusSel {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<PwmValueSpec>;
|
pub type R = crate::R<PwmValueSpec>;
|
||||||
#[doc = "Register `PWM_VALUE` writer"]
|
#[doc = "Register `PWM_VALUE` writer"]
|
||||||
pub type W = crate::W<PwmValueSpec>;
|
pub type W = crate::W<PwmValueSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<PwmaValueSpec>;
|
pub type R = crate::R<PwmaValueSpec>;
|
||||||
#[doc = "Register `PWMA_VALUE` writer"]
|
#[doc = "Register `PWMA_VALUE` writer"]
|
||||||
pub type W = crate::W<PwmaValueSpec>;
|
pub type W = crate::W<PwmaValueSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<PwmbValueSpec>;
|
pub type R = crate::R<PwmbValueSpec>;
|
||||||
#[doc = "Register `PWMB_VALUE` writer"]
|
#[doc = "Register `PWMB_VALUE` writer"]
|
||||||
pub type W = crate::W<PwmbValueSpec>;
|
pub type W = crate::W<PwmbValueSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<RstValueSpec>;
|
pub type R = crate::R<RstValueSpec>;
|
||||||
#[doc = "Register `RST_VALUE` writer"]
|
#[doc = "Register `RST_VALUE` writer"]
|
||||||
pub type W = crate::W<RstValueSpec>;
|
pub type W = crate::W<RstValueSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<Addr9Spec>;
|
pub type R = crate::R<Addr9Spec>;
|
||||||
#[doc = "Register `ADDR9` writer"]
|
#[doc = "Register `ADDR9` writer"]
|
||||||
pub type W = crate::W<Addr9Spec>;
|
pub type W = crate::W<Addr9Spec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<Addr9maskSpec>;
|
pub type R = crate::R<Addr9maskSpec>;
|
||||||
#[doc = "Register `ADDR9MASK` writer"]
|
#[doc = "Register `ADDR9MASK` writer"]
|
||||||
pub type W = crate::W<Addr9maskSpec>;
|
pub type W = crate::W<Addr9maskSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<DataSpec>;
|
pub type R = crate::R<DataSpec>;
|
||||||
#[doc = "Register `DATA` writer"]
|
#[doc = "Register `DATA` writer"]
|
||||||
pub type W = crate::W<DataSpec>;
|
pub type W = crate::W<DataSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<RxfifoirqtrgSpec>;
|
pub type R = crate::R<RxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `RXFIFOIRQTRG` writer"]
|
#[doc = "Register `RXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<RxfifoirqtrgSpec>;
|
pub type W = crate::W<RxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<RxfifortstrgSpec>;
|
pub type R = crate::R<RxfifortstrgSpec>;
|
||||||
#[doc = "Register `RXFIFORTSTRG` writer"]
|
#[doc = "Register `RXFIFORTSTRG` writer"]
|
||||||
pub type W = crate::W<RxfifortstrgSpec>;
|
pub type W = crate::W<RxfifortstrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `STATE` reader"]
|
#[doc = "Register `STATE` reader"]
|
||||||
pub type R = crate::R<StateSpec>;
|
pub type R = crate::R<StateSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `TXBREAK` writer"]
|
#[doc = "Register `TXBREAK` writer"]
|
||||||
pub type W = crate::W<TxbreakSpec>;
|
pub type W = crate::W<TxbreakSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for crate::generic::Reg<TxbreakSpec> {
|
impl core::fmt::Debug for crate::generic::Reg<TxbreakSpec> {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||||
write!(f, "(not readable)")
|
write!(f, "(not readable)")
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
pub type R = crate::R<TxfifoirqtrgSpec>;
|
pub type R = crate::R<TxfifoirqtrgSpec>;
|
||||||
#[doc = "Register `TXFIFOIRQTRG` writer"]
|
#[doc = "Register `TXFIFOIRQTRG` writer"]
|
||||||
pub type W = crate::W<TxfifoirqtrgSpec>;
|
pub type W = crate::W<TxfifoirqtrgSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `PERID` reader"]
|
#[doc = "Register `PERID` reader"]
|
||||||
pub type R = crate::R<PeridSpec>;
|
pub type R = crate::R<PeridSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `SYND_CHECK_32_52_DATA` reader"]
|
#[doc = "Register `SYND_CHECK_32_52_DATA` reader"]
|
||||||
pub type R = crate::R<SyndCheck32_52DataSpec>;
|
pub type R = crate::R<SyndCheck32_52DataSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `SYND_CHECK_32_52_SYND` reader"]
|
#[doc = "Register `SYND_CHECK_32_52_SYND` reader"]
|
||||||
pub type R = crate::R<SyndCheck32_52SyndSpec>;
|
pub type R = crate::R<SyndCheck32_52SyndSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `SYND_CHECK_32_DATA` reader"]
|
#[doc = "Register `SYND_CHECK_32_DATA` reader"]
|
||||||
pub type R = crate::R<SyndCheck32DataSpec>;
|
pub type R = crate::R<SyndCheck32DataSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `SYND_CHECK_32_SYND` reader"]
|
#[doc = "Register `SYND_CHECK_32_SYND` reader"]
|
||||||
pub type R = crate::R<SyndCheck32SyndSpec>;
|
pub type R = crate::R<SyndCheck32SyndSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `SYND_CHECK_64_DATA0` reader"]
|
#[doc = "Register `SYND_CHECK_64_DATA0` reader"]
|
||||||
pub type R = crate::R<SyndCheck64Data0Spec>;
|
pub type R = crate::R<SyndCheck64Data0Spec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `SYND_CHECK_64_DATA1` reader"]
|
#[doc = "Register `SYND_CHECK_64_DATA1` reader"]
|
||||||
pub type R = crate::R<SyndCheck64Data1Spec>;
|
pub type R = crate::R<SyndCheck64Data1Spec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#[doc = "Register `SYND_CHECK_64_SYND` reader"]
|
#[doc = "Register `SYND_CHECK_64_SYND` reader"]
|
||||||
pub type R = crate::R<SyndCheck64SyndSpec>;
|
pub type R = crate::R<SyndCheck64SyndSpec>;
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
impl core::fmt::Debug for R {
|
impl core::fmt::Debug for R {
|
||||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||||
write!(f, "{}", self.bits())
|
write!(f, "{}", self.bits())
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user