Program Listing for File ppb.h#
↰ Return to documentation for file (src/generated/structs/ppb.h
)
#pragma once
#include "../ifgen/common.h"
namespace RP2040
{
struct [[gnu::packed]] ppb
{
/* Constant attributes. */
static constexpr std::size_t size = 60836;
/* Fields. */
static constexpr std::size_t reserved_padding0_length = 14340;
const uint32_t reserved_padding0[reserved_padding0_length] = {};
uint32_t SYST_CSR;
uint32_t SYST_RVR;
uint32_t SYST_CVR;
const uint32_t SYST_CALIB =
{};
static constexpr std::size_t reserved_padding1_length = 56;
const uint32_t reserved_padding1[reserved_padding1_length] = {};
uint32_t NVIC_ISER;
static constexpr std::size_t reserved_padding2_length = 31;
const uint32_t reserved_padding2[reserved_padding2_length] = {};
uint32_t NVIC_ICER;
static constexpr std::size_t reserved_padding3_length = 31;
const uint32_t reserved_padding3[reserved_padding3_length] = {};
uint32_t
NVIC_ISPR;
static constexpr std::size_t reserved_padding4_length = 31;
const uint32_t reserved_padding4[reserved_padding4_length] = {};
uint32_t NVIC_ICPR;
static constexpr std::size_t reserved_padding5_length = 95;
const uint32_t reserved_padding5[reserved_padding5_length] = {};
uint32_t NVIC_IPR0;
uint32_t NVIC_IPR1;
uint32_t NVIC_IPR2;
uint32_t NVIC_IPR3;
uint32_t NVIC_IPR4;
uint32_t NVIC_IPR5;
uint32_t NVIC_IPR6;
uint32_t NVIC_IPR7;
static constexpr std::size_t reserved_padding6_length = 568;
const uint32_t reserved_padding6[reserved_padding6_length] = {};
const uint32_t CPUID =
{};
uint32_t ICSR;
uint32_t VTOR;
uint32_t AIRCR;
uint32_t
SCR;
const uint32_t CCR =
{};
const uint32_t reserved_padding7 = {};
uint32_t SHPR2;
uint32_t
SHPR3;
uint32_t SHCSR;
static constexpr std::size_t reserved_padding8_length = 26;
const uint32_t reserved_padding8[reserved_padding8_length] = {};
const uint32_t MPU_TYPE =
{};
uint32_t MPU_CTRL;
uint32_t
MPU_RNR;
uint32_t MPU_RBAR;
uint32_t MPU_RASR;
/* Methods. */
inline bool get_SYST_CSR_ENABLE() volatile
{
return SYST_CSR & (1u << 0u);
}
inline void set_SYST_CSR_ENABLE() volatile
{
SYST_CSR |= 1u << 0u;
}
inline void clear_SYST_CSR_ENABLE() volatile
{
SYST_CSR &= ~(1u << 0u);
}
inline void toggle_SYST_CSR_ENABLE() volatile
{
SYST_CSR ^= 1u << 0u;
}
inline bool get_SYST_CSR_TICKINT() volatile
{
return SYST_CSR & (1u << 1u);
}
inline void set_SYST_CSR_TICKINT() volatile
{
SYST_CSR |= 1u << 1u;
}
inline void clear_SYST_CSR_TICKINT() volatile
{
SYST_CSR &= ~(1u << 1u);
}
inline void toggle_SYST_CSR_TICKINT() volatile
{
SYST_CSR ^= 1u << 1u;
}
inline bool get_SYST_CSR_CLKSOURCE() volatile
{
return SYST_CSR & (1u << 2u);
}
inline void set_SYST_CSR_CLKSOURCE() volatile
{
SYST_CSR |= 1u << 2u;
}
inline void clear_SYST_CSR_CLKSOURCE() volatile
{
SYST_CSR &= ~(1u << 2u);
}
inline void toggle_SYST_CSR_CLKSOURCE() volatile
{
SYST_CSR ^= 1u << 2u;
}
inline bool get_SYST_CSR_COUNTFLAG() volatile
{
return SYST_CSR & (1u << 16u);
}
inline void get_SYST_CSR(bool &ENABLE, bool &TICKINT, bool &CLKSOURCE,
bool &COUNTFLAG) volatile
{
uint32_t curr = SYST_CSR;
ENABLE = curr & (1u << 0u);
TICKINT = curr & (1u << 1u);
CLKSOURCE = curr & (1u << 2u);
COUNTFLAG = curr & (1u << 16u);
}
inline void set_SYST_CSR(bool ENABLE, bool TICKINT,
bool CLKSOURCE) volatile
{
uint32_t curr = SYST_CSR;
curr &= ~(0b1u << 0u);
curr |= (ENABLE & 0b1u) << 0u;
curr &= ~(0b1u << 1u);
curr |= (TICKINT & 0b1u) << 1u;
curr &= ~(0b1u << 2u);
curr |= (CLKSOURCE & 0b1u) << 2u;
SYST_CSR = curr;
}
inline uint32_t get_SYST_RVR_RELOAD() volatile
{
return (SYST_RVR >> 0u) & 0b111111111111111111111111u;
}
inline void set_SYST_RVR_RELOAD(uint32_t value) volatile
{
uint32_t curr = SYST_RVR;
curr &= ~(0b111111111111111111111111u << 0u);
curr |= (value & 0b111111111111111111111111u) << 0u;
SYST_RVR = curr;
}
inline uint32_t get_SYST_CVR_CURRENT() volatile
{
return (SYST_CVR >> 0u) & 0b111111111111111111111111u;
}
inline void set_SYST_CVR_CURRENT(uint32_t value) volatile
{
uint32_t curr = SYST_CVR;
curr &= ~(0b111111111111111111111111u << 0u);
curr |= (value & 0b111111111111111111111111u) << 0u;
SYST_CVR = curr;
}
inline uint32_t get_SYST_CALIB_TENMS() volatile
{
return (SYST_CALIB >> 0u) & 0b111111111111111111111111u;
}
inline bool get_SYST_CALIB_SKEW() volatile
{
return SYST_CALIB & (1u << 30u);
}
inline bool get_SYST_CALIB_NOREF() volatile
{
return SYST_CALIB & (1u << 31u);
}
inline void get_SYST_CALIB(uint32_t &TENMS, bool &SKEW,
bool &NOREF) volatile
{
uint32_t curr = SYST_CALIB;
TENMS = (curr >> 0u) & 0b111111111111111111111111u;
SKEW = curr & (1u << 30u);
NOREF = curr & (1u << 31u);
}
inline uint32_t get_NVIC_ISER_SETENA() volatile
{
return (NVIC_ISER >> 0u) & 0b11111111111111111111111111111111u;
}
inline void set_NVIC_ISER_SETENA(uint32_t value) volatile
{
uint32_t curr = NVIC_ISER;
curr &= ~(0b11111111111111111111111111111111u << 0u);
curr |= (value & 0b11111111111111111111111111111111u) << 0u;
NVIC_ISER = curr;
}
inline uint32_t get_NVIC_ICER_CLRENA() volatile
{
return (NVIC_ICER >> 0u) & 0b11111111111111111111111111111111u;
}
inline void set_NVIC_ICER_CLRENA(uint32_t value) volatile
{
uint32_t curr = NVIC_ICER;
curr &= ~(0b11111111111111111111111111111111u << 0u);
curr |= (value & 0b11111111111111111111111111111111u) << 0u;
NVIC_ICER = curr;
}
inline uint32_t get_NVIC_ISPR_SETPEND() volatile
{
return (NVIC_ISPR >> 0u) & 0b11111111111111111111111111111111u;
}
inline void set_NVIC_ISPR_SETPEND(uint32_t value) volatile
{
uint32_t curr = NVIC_ISPR;
curr &= ~(0b11111111111111111111111111111111u << 0u);
curr |= (value & 0b11111111111111111111111111111111u) << 0u;
NVIC_ISPR = curr;
}
inline uint32_t get_NVIC_ICPR_CLRPEND() volatile
{
return (NVIC_ICPR >> 0u) & 0b11111111111111111111111111111111u;
}
inline void set_NVIC_ICPR_CLRPEND(uint32_t value) volatile
{
uint32_t curr = NVIC_ICPR;
curr &= ~(0b11111111111111111111111111111111u << 0u);
curr |= (value & 0b11111111111111111111111111111111u) << 0u;
NVIC_ICPR = curr;
}
inline uint8_t get_NVIC_IPR0_IP_0() volatile
{
return (NVIC_IPR0 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR0_IP_0(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR0;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR0 = curr;
}
inline uint8_t get_NVIC_IPR0_IP_1() volatile
{
return (NVIC_IPR0 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR0_IP_1(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR0;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR0 = curr;
}
inline uint8_t get_NVIC_IPR0_IP_2() volatile
{
return (NVIC_IPR0 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR0_IP_2(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR0;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR0 = curr;
}
inline uint8_t get_NVIC_IPR0_IP_3() volatile
{
return (NVIC_IPR0 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR0_IP_3(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR0;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR0 = curr;
}
inline void get_NVIC_IPR0(uint8_t &IP_0, uint8_t &IP_1, uint8_t &IP_2,
uint8_t &IP_3) volatile
{
uint32_t curr = NVIC_IPR0;
IP_0 = (curr >> 6u) & 0b11u;
IP_1 = (curr >> 14u) & 0b11u;
IP_2 = (curr >> 22u) & 0b11u;
IP_3 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR0(uint8_t IP_0, uint8_t IP_1, uint8_t IP_2,
uint8_t IP_3) volatile
{
uint32_t curr = NVIC_IPR0;
curr &= ~(0b11u << 6u);
curr |= (IP_0 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_1 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_2 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_3 & 0b11u) << 30u;
NVIC_IPR0 = curr;
}
inline uint8_t get_NVIC_IPR1_IP_4() volatile
{
return (NVIC_IPR1 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR1_IP_4(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR1;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR1 = curr;
}
inline uint8_t get_NVIC_IPR1_IP_5() volatile
{
return (NVIC_IPR1 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR1_IP_5(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR1;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR1 = curr;
}
inline uint8_t get_NVIC_IPR1_IP_6() volatile
{
return (NVIC_IPR1 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR1_IP_6(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR1;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR1 = curr;
}
inline uint8_t get_NVIC_IPR1_IP_7() volatile
{
return (NVIC_IPR1 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR1_IP_7(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR1;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR1 = curr;
}
inline void get_NVIC_IPR1(uint8_t &IP_4, uint8_t &IP_5, uint8_t &IP_6,
uint8_t &IP_7) volatile
{
uint32_t curr = NVIC_IPR1;
IP_4 = (curr >> 6u) & 0b11u;
IP_5 = (curr >> 14u) & 0b11u;
IP_6 = (curr >> 22u) & 0b11u;
IP_7 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR1(uint8_t IP_4, uint8_t IP_5, uint8_t IP_6,
uint8_t IP_7) volatile
{
uint32_t curr = NVIC_IPR1;
curr &= ~(0b11u << 6u);
curr |= (IP_4 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_5 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_6 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_7 & 0b11u) << 30u;
NVIC_IPR1 = curr;
}
inline uint8_t get_NVIC_IPR2_IP_8() volatile
{
return (NVIC_IPR2 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR2_IP_8(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR2;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR2 = curr;
}
inline uint8_t get_NVIC_IPR2_IP_9() volatile
{
return (NVIC_IPR2 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR2_IP_9(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR2;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR2 = curr;
}
inline uint8_t get_NVIC_IPR2_IP_10() volatile
{
return (NVIC_IPR2 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR2_IP_10(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR2;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR2 = curr;
}
inline uint8_t get_NVIC_IPR2_IP_11() volatile
{
return (NVIC_IPR2 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR2_IP_11(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR2;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR2 = curr;
}
inline void get_NVIC_IPR2(uint8_t &IP_8, uint8_t &IP_9, uint8_t &IP_10,
uint8_t &IP_11) volatile
{
uint32_t curr = NVIC_IPR2;
IP_8 = (curr >> 6u) & 0b11u;
IP_9 = (curr >> 14u) & 0b11u;
IP_10 = (curr >> 22u) & 0b11u;
IP_11 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR2(uint8_t IP_8, uint8_t IP_9, uint8_t IP_10,
uint8_t IP_11) volatile
{
uint32_t curr = NVIC_IPR2;
curr &= ~(0b11u << 6u);
curr |= (IP_8 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_9 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_10 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_11 & 0b11u) << 30u;
NVIC_IPR2 = curr;
}
inline uint8_t get_NVIC_IPR3_IP_12() volatile
{
return (NVIC_IPR3 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR3_IP_12(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR3;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR3 = curr;
}
inline uint8_t get_NVIC_IPR3_IP_13() volatile
{
return (NVIC_IPR3 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR3_IP_13(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR3;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR3 = curr;
}
inline uint8_t get_NVIC_IPR3_IP_14() volatile
{
return (NVIC_IPR3 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR3_IP_14(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR3;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR3 = curr;
}
inline uint8_t get_NVIC_IPR3_IP_15() volatile
{
return (NVIC_IPR3 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR3_IP_15(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR3;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR3 = curr;
}
inline void get_NVIC_IPR3(uint8_t &IP_12, uint8_t &IP_13, uint8_t &IP_14,
uint8_t &IP_15) volatile
{
uint32_t curr = NVIC_IPR3;
IP_12 = (curr >> 6u) & 0b11u;
IP_13 = (curr >> 14u) & 0b11u;
IP_14 = (curr >> 22u) & 0b11u;
IP_15 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR3(uint8_t IP_12, uint8_t IP_13, uint8_t IP_14,
uint8_t IP_15) volatile
{
uint32_t curr = NVIC_IPR3;
curr &= ~(0b11u << 6u);
curr |= (IP_12 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_13 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_14 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_15 & 0b11u) << 30u;
NVIC_IPR3 = curr;
}
inline uint8_t get_NVIC_IPR4_IP_16() volatile
{
return (NVIC_IPR4 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR4_IP_16(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR4;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR4 = curr;
}
inline uint8_t get_NVIC_IPR4_IP_17() volatile
{
return (NVIC_IPR4 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR4_IP_17(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR4;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR4 = curr;
}
inline uint8_t get_NVIC_IPR4_IP_18() volatile
{
return (NVIC_IPR4 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR4_IP_18(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR4;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR4 = curr;
}
inline uint8_t get_NVIC_IPR4_IP_19() volatile
{
return (NVIC_IPR4 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR4_IP_19(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR4;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR4 = curr;
}
inline void get_NVIC_IPR4(uint8_t &IP_16, uint8_t &IP_17, uint8_t &IP_18,
uint8_t &IP_19) volatile
{
uint32_t curr = NVIC_IPR4;
IP_16 = (curr >> 6u) & 0b11u;
IP_17 = (curr >> 14u) & 0b11u;
IP_18 = (curr >> 22u) & 0b11u;
IP_19 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR4(uint8_t IP_16, uint8_t IP_17, uint8_t IP_18,
uint8_t IP_19) volatile
{
uint32_t curr = NVIC_IPR4;
curr &= ~(0b11u << 6u);
curr |= (IP_16 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_17 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_18 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_19 & 0b11u) << 30u;
NVIC_IPR4 = curr;
}
inline uint8_t get_NVIC_IPR5_IP_20() volatile
{
return (NVIC_IPR5 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR5_IP_20(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR5;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR5 = curr;
}
inline uint8_t get_NVIC_IPR5_IP_21() volatile
{
return (NVIC_IPR5 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR5_IP_21(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR5;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR5 = curr;
}
inline uint8_t get_NVIC_IPR5_IP_22() volatile
{
return (NVIC_IPR5 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR5_IP_22(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR5;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR5 = curr;
}
inline uint8_t get_NVIC_IPR5_IP_23() volatile
{
return (NVIC_IPR5 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR5_IP_23(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR5;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR5 = curr;
}
inline void get_NVIC_IPR5(uint8_t &IP_20, uint8_t &IP_21, uint8_t &IP_22,
uint8_t &IP_23) volatile
{
uint32_t curr = NVIC_IPR5;
IP_20 = (curr >> 6u) & 0b11u;
IP_21 = (curr >> 14u) & 0b11u;
IP_22 = (curr >> 22u) & 0b11u;
IP_23 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR5(uint8_t IP_20, uint8_t IP_21, uint8_t IP_22,
uint8_t IP_23) volatile
{
uint32_t curr = NVIC_IPR5;
curr &= ~(0b11u << 6u);
curr |= (IP_20 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_21 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_22 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_23 & 0b11u) << 30u;
NVIC_IPR5 = curr;
}
inline uint8_t get_NVIC_IPR6_IP_24() volatile
{
return (NVIC_IPR6 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR6_IP_24(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR6;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR6 = curr;
}
inline uint8_t get_NVIC_IPR6_IP_25() volatile
{
return (NVIC_IPR6 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR6_IP_25(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR6;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR6 = curr;
}
inline uint8_t get_NVIC_IPR6_IP_26() volatile
{
return (NVIC_IPR6 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR6_IP_26(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR6;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR6 = curr;
}
inline uint8_t get_NVIC_IPR6_IP_27() volatile
{
return (NVIC_IPR6 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR6_IP_27(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR6;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR6 = curr;
}
inline void get_NVIC_IPR6(uint8_t &IP_24, uint8_t &IP_25, uint8_t &IP_26,
uint8_t &IP_27) volatile
{
uint32_t curr = NVIC_IPR6;
IP_24 = (curr >> 6u) & 0b11u;
IP_25 = (curr >> 14u) & 0b11u;
IP_26 = (curr >> 22u) & 0b11u;
IP_27 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR6(uint8_t IP_24, uint8_t IP_25, uint8_t IP_26,
uint8_t IP_27) volatile
{
uint32_t curr = NVIC_IPR6;
curr &= ~(0b11u << 6u);
curr |= (IP_24 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_25 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_26 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_27 & 0b11u) << 30u;
NVIC_IPR6 = curr;
}
inline uint8_t get_NVIC_IPR7_IP_28() volatile
{
return (NVIC_IPR7 >> 6u) & 0b11u;
}
inline void set_NVIC_IPR7_IP_28(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR7;
curr &= ~(0b11u << 6u);
curr |= (value & 0b11u) << 6u;
NVIC_IPR7 = curr;
}
inline uint8_t get_NVIC_IPR7_IP_29() volatile
{
return (NVIC_IPR7 >> 14u) & 0b11u;
}
inline void set_NVIC_IPR7_IP_29(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR7;
curr &= ~(0b11u << 14u);
curr |= (value & 0b11u) << 14u;
NVIC_IPR7 = curr;
}
inline uint8_t get_NVIC_IPR7_IP_30() volatile
{
return (NVIC_IPR7 >> 22u) & 0b11u;
}
inline void set_NVIC_IPR7_IP_30(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR7;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
NVIC_IPR7 = curr;
}
inline uint8_t get_NVIC_IPR7_IP_31() volatile
{
return (NVIC_IPR7 >> 30u) & 0b11u;
}
inline void set_NVIC_IPR7_IP_31(uint8_t value) volatile
{
uint32_t curr = NVIC_IPR7;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
NVIC_IPR7 = curr;
}
inline void get_NVIC_IPR7(uint8_t &IP_28, uint8_t &IP_29, uint8_t &IP_30,
uint8_t &IP_31) volatile
{
uint32_t curr = NVIC_IPR7;
IP_28 = (curr >> 6u) & 0b11u;
IP_29 = (curr >> 14u) & 0b11u;
IP_30 = (curr >> 22u) & 0b11u;
IP_31 = (curr >> 30u) & 0b11u;
}
inline void set_NVIC_IPR7(uint8_t IP_28, uint8_t IP_29, uint8_t IP_30,
uint8_t IP_31) volatile
{
uint32_t curr = NVIC_IPR7;
curr &= ~(0b11u << 6u);
curr |= (IP_28 & 0b11u) << 6u;
curr &= ~(0b11u << 14u);
curr |= (IP_29 & 0b11u) << 14u;
curr &= ~(0b11u << 22u);
curr |= (IP_30 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (IP_31 & 0b11u) << 30u;
NVIC_IPR7 = curr;
}
inline uint8_t get_CPUID_REVISION() volatile
{
return (CPUID >> 0u) & 0b1111u;
}
inline uint16_t get_CPUID_PARTNO() volatile
{
return (CPUID >> 4u) & 0b111111111111u;
}
inline uint8_t get_CPUID_ARCHITECTURE() volatile
{
return (CPUID >> 16u) & 0b1111u;
}
inline uint8_t get_CPUID_VARIANT() volatile
{
return (CPUID >> 20u) & 0b1111u;
}
inline uint8_t get_CPUID_IMPLEMENTER() volatile
{
return (CPUID >> 24u) & 0b11111111u;
}
inline void get_CPUID(uint8_t &REVISION, uint16_t &PARTNO,
uint8_t &ARCHITECTURE, uint8_t &VARIANT,
uint8_t &IMPLEMENTER) volatile
{
uint32_t curr = CPUID;
REVISION = (curr >> 0u) & 0b1111u;
PARTNO = (curr >> 4u) & 0b111111111111u;
ARCHITECTURE = (curr >> 16u) & 0b1111u;
VARIANT = (curr >> 20u) & 0b1111u;
IMPLEMENTER = (curr >> 24u) & 0b11111111u;
}
inline uint16_t get_ICSR_VECTACTIVE() volatile
{
return (ICSR >> 0u) & 0b111111111u;
}
inline uint16_t get_ICSR_VECTPENDING() volatile
{
return (ICSR >> 12u) & 0b111111111u;
}
inline bool get_ICSR_ISRPENDING() volatile
{
return ICSR & (1u << 22u);
}
inline bool get_ICSR_ISRPREEMPT() volatile
{
return ICSR & (1u << 23u);
}
inline bool get_ICSR_PENDSTCLR() volatile
{
return ICSR & (1u << 25u);
}
inline void set_ICSR_PENDSTCLR() volatile
{
ICSR |= 1u << 25u;
}
inline void clear_ICSR_PENDSTCLR() volatile
{
ICSR &= ~(1u << 25u);
}
inline void toggle_ICSR_PENDSTCLR() volatile
{
ICSR ^= 1u << 25u;
}
inline bool get_ICSR_PENDSTSET() volatile
{
return ICSR & (1u << 26u);
}
inline void set_ICSR_PENDSTSET() volatile
{
ICSR |= 1u << 26u;
}
inline void clear_ICSR_PENDSTSET() volatile
{
ICSR &= ~(1u << 26u);
}
inline void toggle_ICSR_PENDSTSET() volatile
{
ICSR ^= 1u << 26u;
}
inline bool get_ICSR_PENDSVCLR() volatile
{
return ICSR & (1u << 27u);
}
inline void set_ICSR_PENDSVCLR() volatile
{
ICSR |= 1u << 27u;
}
inline void clear_ICSR_PENDSVCLR() volatile
{
ICSR &= ~(1u << 27u);
}
inline void toggle_ICSR_PENDSVCLR() volatile
{
ICSR ^= 1u << 27u;
}
inline bool get_ICSR_PENDSVSET() volatile
{
return ICSR & (1u << 28u);
}
inline void set_ICSR_PENDSVSET() volatile
{
ICSR |= 1u << 28u;
}
inline void clear_ICSR_PENDSVSET() volatile
{
ICSR &= ~(1u << 28u);
}
inline void toggle_ICSR_PENDSVSET() volatile
{
ICSR ^= 1u << 28u;
}
inline bool get_ICSR_NMIPENDSET() volatile
{
return ICSR & (1u << 31u);
}
inline void set_ICSR_NMIPENDSET() volatile
{
ICSR |= 1u << 31u;
}
inline void clear_ICSR_NMIPENDSET() volatile
{
ICSR &= ~(1u << 31u);
}
inline void toggle_ICSR_NMIPENDSET() volatile
{
ICSR ^= 1u << 31u;
}
inline void get_ICSR(uint16_t &VECTACTIVE, uint16_t &VECTPENDING,
bool &ISRPENDING, bool &ISRPREEMPT, bool &PENDSTCLR,
bool &PENDSTSET, bool &PENDSVCLR, bool &PENDSVSET,
bool &NMIPENDSET) volatile
{
uint32_t curr = ICSR;
VECTACTIVE = (curr >> 0u) & 0b111111111u;
VECTPENDING = (curr >> 12u) & 0b111111111u;
ISRPENDING = curr & (1u << 22u);
ISRPREEMPT = curr & (1u << 23u);
PENDSTCLR = curr & (1u << 25u);
PENDSTSET = curr & (1u << 26u);
PENDSVCLR = curr & (1u << 27u);
PENDSVSET = curr & (1u << 28u);
NMIPENDSET = curr & (1u << 31u);
}
inline void set_ICSR(bool PENDSTCLR, bool PENDSTSET, bool PENDSVCLR,
bool PENDSVSET, bool NMIPENDSET) volatile
{
uint32_t curr = ICSR;
curr &= ~(0b1u << 25u);
curr |= (PENDSTCLR & 0b1u) << 25u;
curr &= ~(0b1u << 26u);
curr |= (PENDSTSET & 0b1u) << 26u;
curr &= ~(0b1u << 27u);
curr |= (PENDSVCLR & 0b1u) << 27u;
curr &= ~(0b1u << 28u);
curr |= (PENDSVSET & 0b1u) << 28u;
curr &= ~(0b1u << 31u);
curr |= (NMIPENDSET & 0b1u) << 31u;
ICSR = curr;
}
inline uint32_t get_VTOR_TBLOFF() volatile
{
return (VTOR >> 8u) & 0b111111111111111111111111u;
}
inline void set_VTOR_TBLOFF(uint32_t value) volatile
{
uint32_t curr = VTOR;
curr &= ~(0b111111111111111111111111u << 8u);
curr |= (value & 0b111111111111111111111111u) << 8u;
VTOR = curr;
}
inline bool get_AIRCR_VECTCLRACTIVE() volatile
{
return AIRCR & (1u << 1u);
}
inline void set_AIRCR_VECTCLRACTIVE() volatile
{
AIRCR |= 1u << 1u;
}
inline void clear_AIRCR_VECTCLRACTIVE() volatile
{
AIRCR &= ~(1u << 1u);
}
inline void toggle_AIRCR_VECTCLRACTIVE() volatile
{
AIRCR ^= 1u << 1u;
}
inline bool get_AIRCR_SYSRESETREQ() volatile
{
return AIRCR & (1u << 2u);
}
inline void set_AIRCR_SYSRESETREQ() volatile
{
AIRCR |= 1u << 2u;
}
inline void clear_AIRCR_SYSRESETREQ() volatile
{
AIRCR &= ~(1u << 2u);
}
inline void toggle_AIRCR_SYSRESETREQ() volatile
{
AIRCR ^= 1u << 2u;
}
inline bool get_AIRCR_ENDIANESS() volatile
{
return AIRCR & (1u << 15u);
}
inline uint16_t get_AIRCR_VECTKEY() volatile
{
return (AIRCR >> 16u) & 0b1111111111111111u;
}
inline void set_AIRCR_VECTKEY(uint16_t value) volatile
{
uint32_t curr = AIRCR;
curr &= ~(0b1111111111111111u << 16u);
curr |= (value & 0b1111111111111111u) << 16u;
AIRCR = curr;
}
inline void get_AIRCR(bool &VECTCLRACTIVE, bool &SYSRESETREQ,
bool &ENDIANESS, uint16_t &VECTKEY) volatile
{
uint32_t curr = AIRCR;
VECTCLRACTIVE = curr & (1u << 1u);
SYSRESETREQ = curr & (1u << 2u);
ENDIANESS = curr & (1u << 15u);
VECTKEY = (curr >> 16u) & 0b1111111111111111u;
}
inline void set_AIRCR(bool VECTCLRACTIVE, bool SYSRESETREQ,
uint16_t VECTKEY) volatile
{
uint32_t curr = AIRCR;
curr &= ~(0b1u << 1u);
curr |= (VECTCLRACTIVE & 0b1u) << 1u;
curr &= ~(0b1u << 2u);
curr |= (SYSRESETREQ & 0b1u) << 2u;
curr &= ~(0b1111111111111111u << 16u);
curr |= (VECTKEY & 0b1111111111111111u) << 16u;
AIRCR = curr;
}
inline bool get_SCR_SLEEPONEXIT() volatile
{
return SCR & (1u << 1u);
}
inline void set_SCR_SLEEPONEXIT() volatile
{
SCR |= 1u << 1u;
}
inline void clear_SCR_SLEEPONEXIT() volatile
{
SCR &= ~(1u << 1u);
}
inline void toggle_SCR_SLEEPONEXIT() volatile
{
SCR ^= 1u << 1u;
}
inline bool get_SCR_SLEEPDEEP() volatile
{
return SCR & (1u << 2u);
}
inline void set_SCR_SLEEPDEEP() volatile
{
SCR |= 1u << 2u;
}
inline void clear_SCR_SLEEPDEEP() volatile
{
SCR &= ~(1u << 2u);
}
inline void toggle_SCR_SLEEPDEEP() volatile
{
SCR ^= 1u << 2u;
}
inline bool get_SCR_SEVONPEND() volatile
{
return SCR & (1u << 4u);
}
inline void set_SCR_SEVONPEND() volatile
{
SCR |= 1u << 4u;
}
inline void clear_SCR_SEVONPEND() volatile
{
SCR &= ~(1u << 4u);
}
inline void toggle_SCR_SEVONPEND() volatile
{
SCR ^= 1u << 4u;
}
inline void get_SCR(bool &SLEEPONEXIT, bool &SLEEPDEEP,
bool &SEVONPEND) volatile
{
uint32_t curr = SCR;
SLEEPONEXIT = curr & (1u << 1u);
SLEEPDEEP = curr & (1u << 2u);
SEVONPEND = curr & (1u << 4u);
}
inline void set_SCR(bool SLEEPONEXIT, bool SLEEPDEEP,
bool SEVONPEND) volatile
{
uint32_t curr = SCR;
curr &= ~(0b1u << 1u);
curr |= (SLEEPONEXIT & 0b1u) << 1u;
curr &= ~(0b1u << 2u);
curr |= (SLEEPDEEP & 0b1u) << 2u;
curr &= ~(0b1u << 4u);
curr |= (SEVONPEND & 0b1u) << 4u;
SCR = curr;
}
inline bool get_CCR_UNALIGN_TRP() volatile
{
return CCR & (1u << 3u);
}
inline bool get_CCR_STKALIGN() volatile
{
return CCR & (1u << 9u);
}
inline void get_CCR(bool &UNALIGN_TRP, bool &STKALIGN) volatile
{
uint32_t curr = CCR;
UNALIGN_TRP = curr & (1u << 3u);
STKALIGN = curr & (1u << 9u);
}
inline uint8_t get_SHPR2_PRI_11() volatile
{
return (SHPR2 >> 30u) & 0b11u;
}
inline void set_SHPR2_PRI_11(uint8_t value) volatile
{
uint32_t curr = SHPR2;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
SHPR2 = curr;
}
inline uint8_t get_SHPR3_PRI_14() volatile
{
return (SHPR3 >> 22u) & 0b11u;
}
inline void set_SHPR3_PRI_14(uint8_t value) volatile
{
uint32_t curr = SHPR3;
curr &= ~(0b11u << 22u);
curr |= (value & 0b11u) << 22u;
SHPR3 = curr;
}
inline uint8_t get_SHPR3_PRI_15() volatile
{
return (SHPR3 >> 30u) & 0b11u;
}
inline void set_SHPR3_PRI_15(uint8_t value) volatile
{
uint32_t curr = SHPR3;
curr &= ~(0b11u << 30u);
curr |= (value & 0b11u) << 30u;
SHPR3 = curr;
}
inline void get_SHPR3(uint8_t &PRI_14, uint8_t &PRI_15) volatile
{
uint32_t curr = SHPR3;
PRI_14 = (curr >> 22u) & 0b11u;
PRI_15 = (curr >> 30u) & 0b11u;
}
inline void set_SHPR3(uint8_t PRI_14, uint8_t PRI_15) volatile
{
uint32_t curr = SHPR3;
curr &= ~(0b11u << 22u);
curr |= (PRI_14 & 0b11u) << 22u;
curr &= ~(0b11u << 30u);
curr |= (PRI_15 & 0b11u) << 30u;
SHPR3 = curr;
}
inline bool get_SHCSR_SVCALLPENDED() volatile
{
return SHCSR & (1u << 15u);
}
inline void set_SHCSR_SVCALLPENDED() volatile
{
SHCSR |= 1u << 15u;
}
inline void clear_SHCSR_SVCALLPENDED() volatile
{
SHCSR &= ~(1u << 15u);
}
inline void toggle_SHCSR_SVCALLPENDED() volatile
{
SHCSR ^= 1u << 15u;
}
inline bool get_MPU_TYPE_SEPARATE() volatile
{
return MPU_TYPE & (1u << 0u);
}
inline uint8_t get_MPU_TYPE_DREGION() volatile
{
return (MPU_TYPE >> 8u) & 0b11111111u;
}
inline uint8_t get_MPU_TYPE_IREGION() volatile
{
return (MPU_TYPE >> 16u) & 0b11111111u;
}
inline void get_MPU_TYPE(bool &SEPARATE, uint8_t &DREGION,
uint8_t &IREGION) volatile
{
uint32_t curr = MPU_TYPE;
SEPARATE = curr & (1u << 0u);
DREGION = (curr >> 8u) & 0b11111111u;
IREGION = (curr >> 16u) & 0b11111111u;
}
inline bool get_MPU_CTRL_ENABLE() volatile
{
return MPU_CTRL & (1u << 0u);
}
inline void set_MPU_CTRL_ENABLE() volatile
{
MPU_CTRL |= 1u << 0u;
}
inline void clear_MPU_CTRL_ENABLE() volatile
{
MPU_CTRL &= ~(1u << 0u);
}
inline void toggle_MPU_CTRL_ENABLE() volatile
{
MPU_CTRL ^= 1u << 0u;
}
inline bool get_MPU_CTRL_HFNMIENA() volatile
{
return MPU_CTRL & (1u << 1u);
}
inline void set_MPU_CTRL_HFNMIENA() volatile
{
MPU_CTRL |= 1u << 1u;
}
inline void clear_MPU_CTRL_HFNMIENA() volatile
{
MPU_CTRL &= ~(1u << 1u);
}
inline void toggle_MPU_CTRL_HFNMIENA() volatile
{
MPU_CTRL ^= 1u << 1u;
}
inline bool get_MPU_CTRL_PRIVDEFENA() volatile
{
return MPU_CTRL & (1u << 2u);
}
inline void set_MPU_CTRL_PRIVDEFENA() volatile
{
MPU_CTRL |= 1u << 2u;
}
inline void clear_MPU_CTRL_PRIVDEFENA() volatile
{
MPU_CTRL &= ~(1u << 2u);
}
inline void toggle_MPU_CTRL_PRIVDEFENA() volatile
{
MPU_CTRL ^= 1u << 2u;
}
inline void get_MPU_CTRL(bool &ENABLE, bool &HFNMIENA,
bool &PRIVDEFENA) volatile
{
uint32_t curr = MPU_CTRL;
ENABLE = curr & (1u << 0u);
HFNMIENA = curr & (1u << 1u);
PRIVDEFENA = curr & (1u << 2u);
}
inline void set_MPU_CTRL(bool ENABLE, bool HFNMIENA,
bool PRIVDEFENA) volatile
{
uint32_t curr = MPU_CTRL;
curr &= ~(0b1u << 0u);
curr |= (ENABLE & 0b1u) << 0u;
curr &= ~(0b1u << 1u);
curr |= (HFNMIENA & 0b1u) << 1u;
curr &= ~(0b1u << 2u);
curr |= (PRIVDEFENA & 0b1u) << 2u;
MPU_CTRL = curr;
}
inline uint8_t get_MPU_RNR_REGION() volatile
{
return (MPU_RNR >> 0u) & 0b1111u;
}
inline void set_MPU_RNR_REGION(uint8_t value) volatile
{
uint32_t curr = MPU_RNR;
curr &= ~(0b1111u << 0u);
curr |= (value & 0b1111u) << 0u;
MPU_RNR = curr;
}
inline uint8_t get_MPU_RBAR_REGION() volatile
{
return (MPU_RBAR >> 0u) & 0b1111u;
}
inline void set_MPU_RBAR_REGION(uint8_t value) volatile
{
uint32_t curr = MPU_RBAR;
curr &= ~(0b1111u << 0u);
curr |= (value & 0b1111u) << 0u;
MPU_RBAR = curr;
}
inline bool get_MPU_RBAR_VALID() volatile
{
return MPU_RBAR & (1u << 4u);
}
inline void set_MPU_RBAR_VALID() volatile
{
MPU_RBAR |= 1u << 4u;
}
inline void clear_MPU_RBAR_VALID() volatile
{
MPU_RBAR &= ~(1u << 4u);
}
inline void toggle_MPU_RBAR_VALID() volatile
{
MPU_RBAR ^= 1u << 4u;
}
inline uint32_t get_MPU_RBAR_ADDR() volatile
{
return (MPU_RBAR >> 8u) & 0b111111111111111111111111u;
}
inline void set_MPU_RBAR_ADDR(uint32_t value) volatile
{
uint32_t curr = MPU_RBAR;
curr &= ~(0b111111111111111111111111u << 8u);
curr |= (value & 0b111111111111111111111111u) << 8u;
MPU_RBAR = curr;
}
inline void get_MPU_RBAR(uint8_t ®ION, bool &VALID,
uint32_t &ADDR) volatile
{
uint32_t curr = MPU_RBAR;
REGION = (curr >> 0u) & 0b1111u;
VALID = curr & (1u << 4u);
ADDR = (curr >> 8u) & 0b111111111111111111111111u;
}
inline void set_MPU_RBAR(uint8_t REGION, bool VALID,
uint32_t ADDR) volatile
{
uint32_t curr = MPU_RBAR;
curr &= ~(0b1111u << 0u);
curr |= (REGION & 0b1111u) << 0u;
curr &= ~(0b1u << 4u);
curr |= (VALID & 0b1u) << 4u;
curr &= ~(0b111111111111111111111111u << 8u);
curr |= (ADDR & 0b111111111111111111111111u) << 8u;
MPU_RBAR = curr;
}
inline bool get_MPU_RASR_ENABLE() volatile
{
return MPU_RASR & (1u << 0u);
}
inline void set_MPU_RASR_ENABLE() volatile
{
MPU_RASR |= 1u << 0u;
}
inline void clear_MPU_RASR_ENABLE() volatile
{
MPU_RASR &= ~(1u << 0u);
}
inline void toggle_MPU_RASR_ENABLE() volatile
{
MPU_RASR ^= 1u << 0u;
}
inline uint8_t get_MPU_RASR_SIZE() volatile
{
return (MPU_RASR >> 1u) & 0b11111u;
}
inline void set_MPU_RASR_SIZE(uint8_t value) volatile
{
uint32_t curr = MPU_RASR;
curr &= ~(0b11111u << 1u);
curr |= (value & 0b11111u) << 1u;
MPU_RASR = curr;
}
inline uint8_t get_MPU_RASR_SRD() volatile
{
return (MPU_RASR >> 8u) & 0b11111111u;
}
inline void set_MPU_RASR_SRD(uint8_t value) volatile
{
uint32_t curr = MPU_RASR;
curr &= ~(0b11111111u << 8u);
curr |= (value & 0b11111111u) << 8u;
MPU_RASR = curr;
}
inline uint16_t get_MPU_RASR_ATTRS() volatile
{
return (MPU_RASR >> 16u) & 0b1111111111111111u;
}
inline void set_MPU_RASR_ATTRS(uint16_t value) volatile
{
uint32_t curr = MPU_RASR;
curr &= ~(0b1111111111111111u << 16u);
curr |= (value & 0b1111111111111111u) << 16u;
MPU_RASR = curr;
}
inline void get_MPU_RASR(bool &ENABLE, uint8_t &SIZE, uint8_t &SRD,
uint16_t &ATTRS) volatile
{
uint32_t curr = MPU_RASR;
ENABLE = curr & (1u << 0u);
SIZE = (curr >> 1u) & 0b11111u;
SRD = (curr >> 8u) & 0b11111111u;
ATTRS = (curr >> 16u) & 0b1111111111111111u;
}
inline void set_MPU_RASR(bool ENABLE, uint8_t SIZE, uint8_t SRD,
uint16_t ATTRS) volatile
{
uint32_t curr = MPU_RASR;
curr &= ~(0b1u << 0u);
curr |= (ENABLE & 0b1u) << 0u;
curr &= ~(0b11111u << 1u);
curr |= (SIZE & 0b11111u) << 1u;
curr &= ~(0b11111111u << 8u);
curr |= (SRD & 0b11111111u) << 8u;
curr &= ~(0b1111111111111111u << 16u);
curr |= (ATTRS & 0b1111111111111111u) << 16u;
MPU_RASR = curr;
}
};
static_assert(sizeof(ppb) == ppb::size);
static volatile ppb *const PPB = reinterpret_cast<ppb *>(0xe0000000);
}; // namespace RP2040