相关推荐STM32新建一个工程

STM32的开发有三种方式

1.寄存器版本 2.库函数版本 3.HAL库版本

一、库函数开发与寄存器开发的关系

很多人都是从学51单片机转而想进一步学习STM32,他们习惯了51单片机的寄存器开发方式,ST官方库摆在面前会不知道从何下手。其实简单来说,固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口。
举一个例子来解释 STM32 固件库到底是什么,和寄存器开发有什么关系。
在51的开发中我们常常是直接操作寄存器,比如要控制某些 IO 口的状态,我们直接操作寄存器:
P0=0x11;
而在 STM32 的开发中,我们同样可以操作寄存器:
GPIOx->BRR = 0x0011;
这种方法当然可以,但是这种方法的劣势是你需要去掌握每个寄存器的用法才能正确使用,而STM32有着数百个寄存器记起来很是困难。于是 ST(意法半导体)推出了官方固件库,固件库将这些寄存器底层操作都封装起来,提供一整套接口供开发者调用,大多数场合下,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些函数即可。
比如上面的控制 BRR 寄存器实现电平控制,官方库封装了一个函数:
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
GPIOx->BRR = GPIO_Pin;
}
这个时候你不需要再直接去操作BRR寄存器了,你只需要知道怎么使用 GPIO_ResetBits()这个函数就可以了。在你对外设的工作原理有一定的了解之后,你再去看固件库函数,基本上函数名字能告诉你这个函数的功能是什么,该怎么使用,这样开发会方便很多。

二、库函数开发与HAL库开发的关系

HAL库封装的比较好,移植性比较强,不过效率比较低;标准库就是将寄存器封装好,移植性没有HAL好,但是效率高。
标准库是STM32最早推出的库,应用非常广泛,但是比较新的F7和H7等系列已经不支持了(命名规则见下图)。
HAL库是ST近年来推出的新库,目前支持所有系列,可以直接在CubeMX下生成例程,相对效率没有标准库高,但是各个系列之间的兼容性很好,并且不同型号的STM32之间的函数差异也减少了,而且能够配合CubeMX进行使用(CubeMX能用图形化界面来生成软件框架,且生成的软件代码完全兼容,减少了程序员的负担,同时代码也更规范)。由于官方现在不在更新和支持标准库了,所以建议今后学习和应用还是以HAL库为主要对象。2.HAL库能使用ST的CubeMX图形化界面来生成软件框架,它和CubeMX生成的软件代码完全兼容。减少了程序员的负担,同时代码也更规范。至于与原库函数之间的使用差异,关键还是要掌握内核及外设的工作原理,如果熟悉了硬件的工作原理,这些库函数还是很好用的。
HAL库和标准库的最大区别就是减少了不同系列器件之间的库函数层差异,所以移植性比较强并且可以直接用cubemx生成,不过效率比较低。标准库更像寄存器的操作,感觉更符合对寄存器使用的理解。
如有keil软件或者官方库的需要,可留言或私信。

STM32开发方式及基本介绍相关推荐

  1. ChibiOS系列:二、在STM32上开发:介绍ChibiStudio

    本文翻译自:http://www.playembedded.org/blog/developing-stm32-chibistudio/ 在STM32上开发:介绍ChibiStudio 发表于 201 ...

  2. 【STM32系列】硬件介绍及固件安装

    [STM32系列]硬件介绍及固件安装 硬件介绍 应用领域 固件安装 进入DFU模式 安装固件 退出DFU,进入U盘模式 演讲稿 欢迎收看由咸鱼菌工作室出品的STM32系列教程.本篇内容主要是设备介绍及 ...

  3. 基于STM32的SPI基本介绍

    STM32---SPI(DMA)通信的总结(库函数操作) 本文主要由7项内容介绍SPI并会在最后附上测试源码供参考: 1.     SPI的通信协议 2.     SPI通信初始化(以STM32为从机 ...

  4. 两种敏捷开发方式的工作流介绍

    两种敏捷开发方式的工作流 敏捷开发时当今很流行的一种开发软件方式,接下来主要介绍一下两种主要的敏捷开发方式的工作流 Scrum flow 项目计划从定义backlog开始,即交付完成的产品时应该完成的 ...

  5. STM32 HAL库详细介绍

    自从ST公司推出HAL库来替代原有的标准库,HAL库开始慢慢的被广大STM32开发者所接受,现在已经在实际的项目开发中大量使用,HAL库使得项目的移植变得简单容易,但是对于初学者而言,刚开始接触有些晦 ...

  6. STM32最小系统板介绍

    自学的话,网上买一个STM32F103C8T6最小系统板,包邮也就十来块,研究透了,再去买开发板,也是不错的选择 1.芯片介绍 1+.STM32芯片用的是3V电压,但是如果没有的话,这个最小芯片会通过 ...

  7. STM32 系列 DAC的介绍与使用

    STM32网上资料多,对自己来说基本的使用也是很简单的, 我的STM32专栏并没有什么系统的基础教学,基本上是某个项目用到了,或者产品使用过程出过问题 才会来记录一下,正好用到了 DAC ,一般产品还 ...

  8. STM32 gpio口模式介绍

    先了解一个前置概念 原文链接: https://zhuanlan.zhihu.com/p/41942876 推挽输出(Push-Pull Output) 开漏输出(Open Drain Output) ...

  9. STM32驱动SDIO WIFI 介绍(十六) ---- 上位机UDP操作/代码

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

最新文章

  1. NoSQL实现(3)——Cassandra
  2. 【Matlab】解个微分方程
  3. python返回元组_python – numpy.where返回一个元组的目的是什么?
  4. IOS8 兼容本地推送
  5. Spring容器初始化实现V2 版本
  6. eclipse占用内存过大_idea被评最好用java开发工具,为什么用eclipse的人更多?
  7. dudu: 图片显示错误问题,望更正
  8. HTML5矢量实现文件上传进度条
  9. 中国物流产业发展形势与竞争格局展望报告2022版
  10. python爬虫-喜马拉雅_晚安妈妈睡前故事
  11. R语言中的Factor到底是什么?
  12. 基于Python的数据结构实验——顺序表与单链表建立与操作(附详细代码和注释)
  13. 微信小程序:微信零钱模拟器微信小程序源码下载查收充电器自动充钱
  14. 史上最全的定位攻略,您应该知道的定位方法。
  15. permutation importance
  16. 佛祖保佑,永无 BUG,永不修改 | KEIL 调试系列总结篇
  17. 黑暗逃生服务器显示无,《黑暗逃生》常见问题解决方法 游戏进不去?
  18. 黑苹果引导器Clover下载汇总(update to r5120)
  19. java 视频 解码_关于视频解码总结--JavaCV
  20. 超级盘点 | Github年终各大排行榜

热门文章

  1. 梦幻西游藏宝阁不显示服务器,玩转梦幻西游藏宝阁全服搜索功能体验
  2. es与数据库的同步方案
  3. 零基础教程-如何快速将EXCEL表格数据拆分成多个文件
  4. 【全栈软件测试】一、测试环境和操作系统(3)VMware的安装及使用与虚拟机的创建与使用详细介绍
  5. 如何使用left join,以及left join的分析
  6. 胡喜:我是如何从菜鸟做到架构师(转)
  7. Pikachu-XXE
  8. Java高并发程序设计(三)——JDK并发包(二)
  9. Android Studio统一依赖管理Composing builds,2021最新网易Android面经
  10. Webstorm2019,最新激活码【永久】