From 8659ecea720193ab7e6d760f5948635be5b940d4 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Tue, 25 Apr 2017 14:13:46 -0500 Subject: add a `peripherals!` macro for safe declaration of `Peripheral`s closes #12 --- src/lib.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 1d88330..0b1c1fe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -705,6 +705,24 @@ pub unsafe trait GreaterThanOrEqual {} /// Do not implement this trait yourself. This is an implementation detail. pub unsafe trait LessThanOrEqual {} +/// Assigns ceilings to peripherals +#[macro_export] +macro_rules! peripherals { + ($device:ident, { + $($PERIPHERAL:ident: Peripheral { + register_block: $RegisterBlock:ident, + ceiling: $C:ident, + },)+ + }) => { + $( + #[no_mangle] + static $PERIPHERAL: + $crate::Peripheral<::$device::$RegisterBlock, $crate::$C> = + unsafe { $crate::Peripheral::new(::$device::$PERIPHERAL) }; + )+ + } +} + /// A macro to declare tasks /// /// **NOTE** This macro will expand to a `main` function. -- cgit v1.2.3