STM32 寄存器库和固件库
寄存器和固件库开发的差别和联系
固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道。向上提供用户函数调用的接口(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 的原理,而这些原理了解了。你在进行固件库开发过程中才可能得心应手游刃
有余。
最新文章
- 【译】Unity3D Shader 新手教程(3/6) —— 更加真实的积雪
- GitLab CI持续集成配置方案
- PHP的日期和时间处理函数
- 【译】Java中的可变参数
- LR之配置端口映射(port mapping)
- ";file:///"; file 协议
- ll 命令不好用了,ls 命令没有颜色了怎么办
- discuz! X3.2 自定义后台门户模块模板里的标签
- sqlserver使用job删除过期备份文件
- 京东分布式缓存redis应用实战
- 深入理解Spring Redis的使用 (六)、用Spring Aop 实现注解Dao层的自动Spring Redis缓存
- 搭建中小规模集群之rsync数据同步备份
- ajax跨域,携带cookie
- 代码改变世界 | 如何封装一个简单的 Koa
- day 57 data 插件 表的增删改查
- Centos 7 下, 安装odoo 10
- (笔记)Linux延时及时间函数总结
- repo sync出现“fatal: '../platform/abi/cpp.git' does not appear to be a git repository”的解决方案
- Weblogic集群配置__部署润乾应用
- JavaScript定义类的几种方式