什么是固件库
固件库是指“STM32标准函数库”,即API(Application Program Interface)。
库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。
步骤
封装寄存器
这段代码在每个结构体成员前增加了一个“__IO”前缀,它的原型在这段代码的第一行,代表了C语言中的关键字“volatile”,在C语言中该关键字用于表示变量是易变的,要求编译器不要优化。加上这个关键字就意味着每次使用这些变量的时候都要去寄存器重新访问。若没有这个关键字修饰,在某些情况下,编译器认为没有代码修改该变量,就直接从 CPU 的某个缓存获取该变量值,这时可以加快执行速度,但该缓存中的是陈旧数据,与我们要求的寄存器最新状态可能会有出入。
外设存储器映射
外设寄存器结构体已经定义了,但是要想将这个结构体赋值就达到操作寄存器的效果,所以我们还要找到这个寄存器的地址,就把寄存器地址跟结构体的地址对应起来。所以我们要再找到外设的地址。