寄存器和固件库开发的差别和联系
固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道。向上提供用户函数调用的接口(API)。
在 51 的开发中我们经常的作法是直接操作寄存器,比方要控制某些 IO 口的状态,我们直 接操作寄存器: P0=0x11; 而在 STM32 的开发中,我们相同能够操作寄存器: GPIOx->BRR = 0x0011;
这样的方法当然能够,可是这样的方法的劣势是你须要去掌握每一个寄存器的使用方法。你才干正确使用 STM32,而对于 STM32 这样的级别的 MCU,数百个寄存器记起来又是谈何easy。于是 ST(意法 半导体)推出了官方固件库。固件库将这些寄存器底层操作都封装起来,提供一整套接口(API) 供开发人员调用,大多数场合下,你不须要去知道操作的是哪个寄存器,你仅仅须要知道调用哪些 函数就可以。
比方上面的控制 BRR 寄存器实现电平控制,官方库封装了一个函数: void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) { ALIENTEK 战舰STM32开发板 www.openedv.com 37 GPIOx->BRR = GPIO_Pin; }
这个时候你不须要再直接去操作 BRR 寄存器了。你仅仅须要知道怎么使用 GPIO_ResetBits()这个 函数就能够了。在你对外设的工作原理有一定的了解之后。你再去看固件库函数,基本上函数 名字能告诉你这个函数的功能是什么,该怎么使用,这样是不是开发会方便非常多? 不论什么处理器。无论它有多么的高级,归根结底都是要对处理器的寄存器进行操作。可是固 件库不是万能的,您假设想要把 STM32 学透。光读 STM32 固件库是远远不够的。你还是要了 解一下 STM32 的原理,而这些原理了解了。你在进行固件库开发过程中才可能得心应手游刃 有余。