Program Listing for File vreg_and_chip_reset.h#
↰ Return to documentation for file (src/generated/structs/vreg_and_chip_reset.h
)
#pragma once
#include "../ifgen/common.h"
namespace RP2040
{
struct [[gnu::packed]] vreg_and_chip_reset
{
/* Constant attributes. */
static constexpr std::size_t size =
12;
/* Fields. */
uint32_t VREG;
uint32_t BOD;
uint32_t CHIP_RESET;
/* Methods. */
inline bool get_VREG_EN() volatile
{
return VREG & (1u << 0u);
}
inline void set_VREG_EN() volatile
{
VREG |= 1u << 0u;
}
inline void clear_VREG_EN() volatile
{
VREG &= ~(1u << 0u);
}
inline void toggle_VREG_EN() volatile
{
VREG ^= 1u << 0u;
}
inline bool get_VREG_HIZ() volatile
{
return VREG & (1u << 1u);
}
inline void set_VREG_HIZ() volatile
{
VREG |= 1u << 1u;
}
inline void clear_VREG_HIZ() volatile
{
VREG &= ~(1u << 1u);
}
inline void toggle_VREG_HIZ() volatile
{
VREG ^= 1u << 1u;
}
inline uint8_t get_VREG_VSEL() volatile
{
return (VREG >> 4u) & 0b1111u;
}
inline void set_VREG_VSEL(uint8_t value) volatile
{
uint32_t curr = VREG;
curr &= ~(0b1111u << 4u);
curr |= (value & 0b1111u) << 4u;
VREG = curr;
}
inline bool get_VREG_ROK() volatile
{
return VREG & (1u << 12u);
}
inline void get_VREG(bool &EN, bool &HIZ, uint8_t &VSEL,
bool &ROK) volatile
{
uint32_t curr = VREG;
EN = curr & (1u << 0u);
HIZ = curr & (1u << 1u);
VSEL = (curr >> 4u) & 0b1111u;
ROK = curr & (1u << 12u);
}
inline void set_VREG(bool EN, bool HIZ, uint8_t VSEL) volatile
{
uint32_t curr = VREG;
curr &= ~(0b1u << 0u);
curr |= (EN & 0b1u) << 0u;
curr &= ~(0b1u << 1u);
curr |= (HIZ & 0b1u) << 1u;
curr &= ~(0b1111u << 4u);
curr |= (VSEL & 0b1111u) << 4u;
VREG = curr;
}
inline bool get_BOD_EN() volatile
{
return BOD & (1u << 0u);
}
inline void set_BOD_EN() volatile
{
BOD |= 1u << 0u;
}
inline void clear_BOD_EN() volatile
{
BOD &= ~(1u << 0u);
}
inline void toggle_BOD_EN() volatile
{
BOD ^= 1u << 0u;
}
inline uint8_t get_BOD_VSEL() volatile
{
return (BOD >> 4u) & 0b1111u;
}
inline void set_BOD_VSEL(uint8_t value) volatile
{
uint32_t curr = BOD;
curr &= ~(0b1111u << 4u);
curr |= (value & 0b1111u) << 4u;
BOD = curr;
}
inline void get_BOD(bool &EN, uint8_t &VSEL) volatile
{
uint32_t curr = BOD;
EN = curr & (1u << 0u);
VSEL = (curr >> 4u) & 0b1111u;
}
inline void set_BOD(bool EN, uint8_t VSEL) volatile
{
uint32_t curr = BOD;
curr &= ~(0b1u << 0u);
curr |= (EN & 0b1u) << 0u;
curr &= ~(0b1111u << 4u);
curr |= (VSEL & 0b1111u) << 4u;
BOD = curr;
}
inline bool get_CHIP_RESET_HAD_POR() volatile
{
return CHIP_RESET & (1u << 8u);
}
inline bool get_CHIP_RESET_HAD_RUN() volatile
{
return CHIP_RESET & (1u << 16u);
}
inline bool get_CHIP_RESET_HAD_PSM_RESTART() volatile
{
return CHIP_RESET & (1u << 20u);
}
inline bool get_CHIP_RESET_PSM_RESTART_FLAG() volatile
{
return CHIP_RESET & (1u << 24u);
}
inline void set_CHIP_RESET_PSM_RESTART_FLAG() volatile
{
CHIP_RESET |= 1u << 24u;
}
inline void clear_CHIP_RESET_PSM_RESTART_FLAG() volatile
{
CHIP_RESET &= ~(1u << 24u);
}
inline void toggle_CHIP_RESET_PSM_RESTART_FLAG() volatile
{
CHIP_RESET ^= 1u << 24u;
}
inline void get_CHIP_RESET(bool &HAD_POR, bool &HAD_RUN,
bool &HAD_PSM_RESTART,
bool &PSM_RESTART_FLAG) volatile
{
uint32_t curr = CHIP_RESET;
HAD_POR = curr & (1u << 8u);
HAD_RUN = curr & (1u << 16u);
HAD_PSM_RESTART = curr & (1u << 20u);
PSM_RESTART_FLAG = curr & (1u << 24u);
}
};
static_assert(sizeof(vreg_and_chip_reset) == vreg_and_chip_reset::size);
static volatile vreg_and_chip_reset *const VREG_AND_CHIP_RESET =
reinterpret_cast<vreg_and_chip_reset *>(0x40064000);
}; // namespace RP2040