寄存器和固件库开发的差别和联系

固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道。向上提供用户函数调用的接口(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 的原理,而这些原理了解了。你在进行固件库开发过程中才可能得心应手游刃

有余。

最新文章

  1. 【译】Unity3D Shader 新手教程(3/6) —— 更加真实的积雪
  2. GitLab CI持续集成配置方案
  3. PHP的日期和时间处理函数
  4. 【译】Java中的可变参数
  5. LR之配置端口映射(port mapping)
  6. "file:///" file 协议
  7. ll 命令不好用了,ls 命令没有颜色了怎么办
  8. discuz! X3.2 自定义后台门户模块模板里的标签
  9. sqlserver使用job删除过期备份文件
  10. 京东分布式缓存redis应用实战
  11. 深入理解Spring Redis的使用 (六)、用Spring Aop 实现注解Dao层的自动Spring Redis缓存
  12. 搭建中小规模集群之rsync数据同步备份
  13. ajax跨域,携带cookie
  14. 代码改变世界 | 如何封装一个简单的 Koa
  15. day 57 data 插件 表的增删改查
  16. Centos 7 下, 安装odoo 10
  17. (笔记)Linux延时及时间函数总结
  18. repo sync出现“fatal: '../platform/abi/cpp.git' does not appear to be a git repository”的解决方案
  19. Weblogic集群配置__部署润乾应用
  20. JavaScript定义类的几种方式

热门文章

  1. EntityFramework之一对多关系(三)
  2. HDU 2546.饭卡-动态规划0-1背包
  3. HDU 2063.过山车-Hungary(匈牙利算法)
  4. android 错误
  5. mysql里的知识
  6. Entity Framework贪婪加载筛选问题
  7. iOS import framework头文件时报错could not build module xxx
  8. Linux下查看某个进程的网络带宽占用情况
  9. 【Java】java注解@Transient的作用, 配合JPA中时间段的查询
  10. 愤怒的TryCatch