CMSIS - Peripheral Definitions - Structs With Unions Syntax?
They use unions so that you can either access the register through a 32 bit access or through individual bits. This is unfortunately a very common way to declare register maps. Unfortunate because it relies on tons of poorly-specified behavior. 

To begin with, unions and structs may contain padding anywhere, making them unsuitable for direct memory mapping. When using unions/structs for such purposes, you must always guard against accidental padding. Different systems have different alignment requirements and therefore different padding.

Then there is bit-fields, which is in itself is a language mechanism with little to no support by the C standard. Whenever using bit-fields, you rely on poorly-defined behavior or non-standard extensions. 

All of this is very bad. You should never write code like the one posted. Preferably, bit mask macros and bit-wise operators should be used instead, as those are 100% standard, deterministic and portable.