STM32CubeXX包
一句话总结:提供大量相关芯片驱动代码、例程等,以方便用户快速开发产品
STM32CubeF7为例
用于STM32F7系列的STM32Cube MCU包,带有HAL,底层驱动器和专用中间件
特点
- 提供一致且完整的嵌入式软件,使用户免于依赖性问题
- 通过STM32Cube支持以实现在所有STM32系列之间的最大可移植性
- 为了让用户易于理解,从而便于开发,提供数以百计的例子
- 使用CodeSonar®静态分析工具的高质量HAL和低层API驱动程序
- STM32F7专用中间件,包括USB主机和设备,以及TCP/IP
- 免费的用户友好的许可条款
- 可以被启用的更新机制以通知用户有新版本
描述
STMCube™是意法半导体最初的一项举措,旨在通过减少开发工作量,时间和成本,使开发人员的生活更轻松。 STM32Cube是STMCube的实现,涵盖整个STM32产品链
STM32Cube包含STM32CubeMX,这是一个agraphical软件配置工具,允许使用图形向导生成C初始化程序
它还包括由STM32Cube硬件抽象层(HAL)和低层(LL)API组成的STM32CubeF7 MCU封装,以及一组一致的中间件组件(RTOS,USB,FAT文件系统,图形和TCP/IP)。所有嵌入式软件实用程序都随附在STMicroelectronics主板上运行的全套示例中
STM32Cube HAL是STM32嵌入式软件层,可确保STM32产品组合的最大可移植性,而LL API构成一个快速,轻量级,面向专家的层,比HAL更接近硬件。HAL和LL API可以同时使用,但有一些限制
STM32CubeF7在一个封装中集合了在STM32F7微控制器上开发应用程序所需的所有通用嵌入式软件组件。 遵循STM32Cube计划,这组组件不仅具有高度可移植性在STM32F7系列中,还有其他STM32系列。 此外,底层API为STM32CubeF7 HAL提供了可替代、高性能、低占用空间的解决方案,但代价是便携性和简单性
STM32CubeF7与STM32CubeMX代码生成器所生成的初始化代码完全兼容,该软件包包括一个覆盖微控制器硬件的底层硬件抽象层(HAL),以及在STMicroelectronics板上运行的大量示例
为方便用户,HAL和LL API在开源BSD许可下可用
STM32CubeF7 MCU包
STM32CubeF7 MCU包在基于Arm®Cortex®-M处理器的STM32 32位微控制器上运行
该软件包包含一组中间件组件及相应的示例。它们以非常宽松的许可条款提供:
- 使用FreeRTOS™开源解决方案实现CMSIS-RTOS
- 基于开源LwIP解决方案的TCP/IP堆栈
- FAT文件系统基于支持NAND闪存访问的开源FatFS解决方案
- STemWin,一种专业的图形堆栈解决方案,以二进制格式提供,基于ST的合作伙伴解决方案SEGGER emWin
- 完整的USB主机和设备堆栈支持许多类
实现所有这些中间件组件的一组应用程序项目也是在STM32CubeF7 MCU包中提供
STM32CubeXX包获取链接
STM32CubeF7固件开发包内容详解
将固件包下载下来并解压之后可以看到里面共六个文件夹(_htmresc、Documentation、Drivers、Middlewares、Projects、Utilities)下面进行逐一介绍
_htmresc
这个文件夹对我们来说没有太多有价值的东西,里面主要是几张图片,其中比较有用的一张图片如下,可以让我们对STM32的开发有个比较基础的认识:
Documentation
里面是一个STM32CubeF7的说明文档
Drivers
第一个关键的文件夹,其包含三个子文件夹(BSP、CMSIS、STM32F7xx_HAL_Driver)
BSP
BSP(Board Support Package),即板极支持包,提供直接与硬件打交道的API,BSP文件夹下面有很多子文件夹,主要是ST官方的几种开发板的硬件驱动API文件,如Discovery开发板、Nucleo开发板、EVAL开发板
CMSIS
CMSIS(Cortex Microcontroller Software Interface Standard),即ARM Cortex™微控制器接口标准,是Cortex-M处理器系列的与供应商无关的硬件抽象层(英文原文为:a vendor-independent hardware abstraction layer for the Cortex-M processor series and defines generic tool interfaces–来自ARM官方定义);CMSIS文件夹内部的子文件夹比较多,主要包括DSP库(DSP_LIB文件夹)、Cortex-M内核及其设备文件(Include文件夹)及微控制器专用头文件/启动代码/专用系统文件等的文件夹(Device文件夹)和数学函数Lib包等,我们在新建项目工程时会用到里面的相关文件
STM32F7xx_HAL_Driver
这是非常重要的一个文件夹,其包含了所有的STM32F7XX系列HAL库头文件和源文件,也就是所有的STM32F7XX底层硬件抽象层API的声明和定义,它使我们跳过了STM32开发的复杂的硬件寄存器相关操作,建立了统一的外设接口函数,使我们的开发更加便利。其子文件夹有两个,其中Inc文件夹存放了.h头文件、Src文件夹存放了.c源文件,一般一一对应
Middlewares
该文件夹下有两个子文件夹(ST、Third_Party),其中ST文件夹下面存放的是STM32相关的一些文件(如STemWin、STM32_Audio、USB库等),Third_Party文件夹是第三方中间件,里面主要包含一些比较好的FreeRTOS实时操作系统支持包,FatFs文件系统支持包,LibJPEG图形解码支持包,LwIP网络协议支持包、mbedTLS安全层解决方案支持包等
Projects
存放一些ST官方的Demo板的可以直接编译的一些实例工程,编写代码的时候可以借用参考
Utilities
存放一些其他组件,用得不多