aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jorge Aparicio <jorge@japaric.io> 2017-04-25 14:13:46 -0500
committerGravatar Jorge Aparicio <jorge@japaric.io> 2017-04-25 14:13:46 -0500
commit8659ecea720193ab7e6d760f5948635be5b940d4 (patch)
tree0e2abb3041db252842283c1a965eec638aac147f /src
parente72687a36635ccfce494f8807269bf897b3b6d7b (diff)
downloadrtic-8659ecea720193ab7e6d760f5948635be5b940d4.tar.gz
rtic-8659ecea720193ab7e6d760f5948635be5b940d4.tar.zst
rtic-8659ecea720193ab7e6d760f5948635be5b940d4.zip
add a `peripherals!` macro
for safe declaration of `Peripheral`s closes #12
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 1d883301..0b1c1fe9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -705,6 +705,24 @@ pub unsafe trait GreaterThanOrEqual<RHS> {}
/// Do not implement this trait yourself. This is an implementation detail.
pub unsafe trait LessThanOrEqual<RHS> {}
+/// 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.