1 unstable release

0.1.0 May 3, 2024

#126 in #peripheral

Download history 134/week @ 2024-04-29 22/week @ 2024-05-06 15/week @ 2024-05-13 52/week @ 2024-05-20 27/week @ 2024-05-27 24/week @ 2024-06-03 34/week @ 2024-06-10 30/week @ 2024-06-17 19/week @ 2024-06-24

107 downloads per month
Used in 7 crates (via atsamd-hal)


657 lines

This crate contains proc-macros to be used by the atsamd-hal crate. It is not intended to be used outside this crate, and no stability guarantees are made.

The main purpose of this crate is to separate the task of writing the code to support peripherals of the atsamd families from the task of figuring out which specific devices has those peripherals.

The actual mapping of devices to peripherals is specified in the devices.yaml file. In the atsamd-hal crate you then only need to care about the peripherals themselves (and their different variants).

To use the macros in this crate, you need to specify a peripheral expression, which can be one of the following:

  • A peripheral from devices.yaml in the form of a string. Examples: "serial-numbers" or "sercom3".
  • A peripheral from devices.yaml suffixed with the device family. Examples: "serial-numbers-d11" or "sercom3-d5x"
  • A pin from devices.yaml. Examples: "pb22".
  • An expression of the form any([peripheral expression], ...). Example: any("pm-d11", "pm-d21", "rstc-d5x").
  • An expression of the form all([peripheral expression], ...). Example: all("tc4", "tc5").


~13K SLoC