Skip to content

Instantly share code, notes, and snippets.

@nickray
Last active September 21, 2019 23:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nickray/c2ca6f15f4c50bc6e5a00055f29f7769 to your computer and use it in GitHub Desktop.
Save nickray/c2ca6f15f4c50bc6e5a00055f29f7769 to your computer and use it in GitHub Desktop.
macro_rules! reg_write {
($peripheral:ident, $register:ident, $field:ident, $value:expr) => {
unsafe { &(*hal::raw::$peripheral::ptr()).$register.write(|w| w.$field().bits($value)) }
};
}
macro_rules! reg_modify {
($peripheral:ident, $register:ident, $field:ident, $what:ident) => {
unsafe { &(*hal::raw::$peripheral::ptr()) }.$register.modify(|_, w| w.$field().$what())
};
}
macro_rules! reg_modify_bits {
($peripheral:ident, $register:ident, $field:ident, $value:expr) => {
unsafe { &(*hal::raw::$peripheral::ptr()).$register.modify(|_, w| w.$field().bits($value)) }
};
}
macro_rules! reg_read {
($peripheral:ident, $register:ident, $field:ident, $what:ident) => {
unsafe { &(*hal::raw::$peripheral::ptr()) }.$register.read().$field().$what()
};
}
macro_rules! reg_read_bits {
($peripheral:ident, $register:ident, $field:ident) => {
unsafe { &(*hal::raw::$peripheral::ptr()) }.$register.read().$field().bits()
};
}
macro_rules! reg_read_bit {
($peripheral:ident, $register:ident, $field:ident) => {
unsafe { &(*hal::raw::$peripheral::ptr()) }.$register.read().$field().bit()
};
}
macro_rules! dbg_reg_modify {
($peripheral:ident, $register:ident, $field:ident, $what:ident, $is_what:ident) => {
dbg!(reg_read!($peripheral, $register, $field, $is_what));
reg_modify!($peripheral, $register, $field, $what);
dbg!(reg_read!($peripheral, $register, $field, $is_what));
};
}
macro_rules! dbg_reg_modify_bits {
($peripheral:ident, $register:ident, $field:ident, $value:expr) => {
dbg!(reg_read_bits!($peripheral, $register, $field));
reg_modify_bits!($peripheral, $register, $field, $value);
dbg!(reg_read_bits!($peripheral, $register, $field));
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment