Register map using C for a MAX30001 analog front end
In the general case, where you have memory mapped registers, you should always avoid bitfield structs. This is because those are very poorly specified by the C standard. Fundamental things that you may assume are specified, are not. This includes bit order, byte order, padding &amp; alignment. 

In addition, uint8_t among other types, is not even an allowed type in bitfields! You can only use int types, though if int counts as signed or unsigned is not specified either...

To sum it up, bitfields are horribly unreliable and you are left at the mercy of the compiler implementation (if any) when you use them.

What you should do instead, is to always use address and bit mask macros, together with the bit-wise operators. Those are 100% well-defined and portable.