- 9
- 0
- 约8.27千字
- 约 19页
- 2021-01-15 发布于北京
- 举报
1 开发环境的搭建与工程的建立
一 任务要求
本任务要求搭建基于STM32CubeMX工具和HAL库的STM32微控制器的开发环境,生成可在MKD-ARM集成开发环境下运行的工程。正确地配置、编译工程后,将其下载至开发板中运行。
二 知识链接
1. STM32的软件开发库
在学习STM32的软件开发模式之前,我们有必要先了解STM32的软件开发库。ST公司为开发者提供了多个软件开发库,如:标准外设库、HAL库与LL库。另外,ST公司还针对F0与L0系列MCU推出了STM32Snippets示例代码集合。
上面提到的几种软件开发库中,标准外设库推出时间最早,HAL库次之,而LL库是最近才新增的,目前支持的芯片较少,尚未覆盖全系列产品。ST公司为这些软件开发库配套了齐备的开发文档,为开发者的使用提供了极大的方便。接下来分别对以上几种软件开发库进行介绍。
(1)STM32Snippets
STM32Snippets是ST公司推出的高度优化且立即可用的寄存器级代码段集合,可最大限度地发挥STM32微控制器应用设计的性能和能效。寄存器级编程虽然可降低内存占用率,节省宝贵的处理器时钟周期,降低电源电流消耗,但通常需要开发者花费很多时间精力研究产品手册。另外,这种开发模式的缺点是代码在不同系列的STM32微控制器之间没有可移植性。
(2)STM32标准外设库
STM32标准外设库(Standard Peripherals Library)是对STM32微控制器的完整封装,它包括了STM32微控制器所有外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API。通过标准外设库,开发者无需深入掌握底层硬件的细节就可以轻松地驱动外设,快速部署应用。因此,使用标准外设库可以减少开发者驱动片内外设的编程工作量,降低时间成本。
标准外设库早期的版本也称固件函数库或简称固件库,它是目前使用最多的库,缺点是不支持L0、L4和F7等近期推出的MCU系列。
ST公司为各个不同系列的MCU提供的标准外设库的内容是存在一些区别的。例如:STM32F1xx的库和STM32F4xx的库在文件结构与内部实现上有所不同,因此基于标准外设库开发的程序在不同系列的MCU之间的可移植性较差。
(3)STM32CubeTM、HAL库与LL库
为了减少开发者的工作量,提高程序开发的效率,ST公司发布了一个新的软件开发工具产品——STM32CubeTM。这个产品由PC端的图形化配置与代码生成工具STM32CubeMX、嵌入式软件库函数(HAL库与LL库)以及一系列的中间件集合(RTOS、USB库、文件系统、TCP/IP协议栈和图形库等)构成。
HAL(Hardware Abstraction Layer,硬件抽象层)库是ST公司为STM32系列微控制器推出的硬件抽象层嵌入式软件,它可以提高程序在跨系列产品之间的可移植性。
与标准外设库相比,HAL库表现出更高的抽象整合水平。HAL库的API集中关注各外设的公共函数功能,它定义了一套通用的用户友好的API函数接口,开发者可以轻松地实现将程序从STM32微控制器的一个系列移植到另一个系列。目前,HAL库已经支持STM32全系列产品,它是ST公司未来主推的库。
LL(Low Layer)库是ST最近新增的库,与HAL库捆绑发布,其说明文档也与HAL文档编写在一起。例如:在STM32L4xx的HAL库说明文档中,新增了LL库这一章节。
2. STM32的软件开发模式
开发者基于ST公司提供的软件开发库进行应用程序的开发,常用的STM32软件开发模式主要有以下几种:
(1)基于寄存器的开发模式
基于寄存器编写的代码简练、执行效率高。这种开发模式有助于开发者从细节上了解STM32微控制器的架构与工作原理,但由于STM32微控制器的片上外设多且寄存器功能五花八门,因此开发者需要花费很多时间精力研究产品手册。这种开发模式的另一个缺点是:基于寄存器编写的代码后期维护难,移植性差。总的来说,这种开发模式适合有较强编程功底的开发者。
(2)基于标准外设库的开发模式
这种开发模式对开发者的要求较低:开发者只要会调用API即可编写程序。基于标准外设库编写的代码容错性好且后期维护简单,其缺点是运行速度相对寄存器级的代码偏慢。另外,基于标准外设库的开发模式比较不利于开发者深入掌握STM32微控制器的架构与工作原理。总的来说,这种开发模式适合快速入门,大多数初学者会选择这种开发模式。
(3)基于STM32Cube的开发模式
基于STM32Cube的开发流程如下:
开发者先根据应用需求使用图形化配置与代码生成工具对MCU片上外设进行配置;
然后生成基于HAL库或LL库的初始化代码;
最后将生成的代码导入集成开发环境进行编辑、编译和运行。
基于STM32Cube
原创力文档

文档评论(0)