🧩

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 volatile so 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)