在构建寄存器组的结构体时,会在每个代表寄存器的成员前面加个“__IO”前缀。这个符号我暂且认定为行业内用的,语法上不一定要用这个名字,它的原型是是C语言中的关键字“volatile”,表示变量是易变的,要求编译器不要优化。
这些结构体内的成员,都代表着寄存器,而寄存器很多时候是由外设或STM32 芯片状态修改的,也就是说即使CPU 不执行代码修改这些变量,变量的值也有可能被外设修改、更新,所以每次使用这些变量的时候,我们都要求CPU 去该变量的地址重新访问。若没有这个关键字修饰,在某些情况下,编译器认为没有代码修改该变量,就直接从CPU 的某个缓存获取该变量值,这时可以加快执行速度,但该缓存中的是陈旧数据,与我们要求的寄存器最新状态可能会有出入。