Crate atsamd_hal_macros

source ·
Expand description

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").

Attribute Macros§

  • Attribute macro which expands to a suitable #[cfg(...)] expression.
  • Helper macro to make conditional docs work nicer
  • Helper macro to allow using #[hal_cfg(..)] macro in more places
  • Macro which expands to a mod foo; item with different paths for each device.