Register Map → C Generator
Generate a C bitfield struct and SHIFT / MASK macros from register field definitions.
Input
ℹ One field per line, low bits first. Width in bits.
Generated C
Total Width—
—
💡 Usage & Formula
Each field gets NAME_SHIFT (bit offset) and NAME_MASK = ((1<<width)−1)<<offset, plus a packed bitfield struct.
When you need it: Turning a datasheet register table into C — generating #define mask/shift pairs or a bitfield struct so your driver reads and writes peripheral fields by name instead of magic numbers.
Worked example: A field MODE at bits [2:1] generates #define MODE_Pos 1 and #define MODE_Msk (0x3<<1); you set it with reg = (reg & ~MODE_Msk) | ((val<<MODE_Pos) & MODE_Msk).
Tips & gotchas:
- Generated masks survive datasheet revisions far better than hand-typed hex constants.
- Mark the register pointer
volatileso field writes aren't optimised away or reordered. - Use read-modify-write and leave reserved bits as read, never blindly zeroed.
- A packed bitfield struct is convenient but its bit ordering is implementation-defined — masks are more portable across compilers.
📖 References:Bit field (Wikipedia)