|
本篇译文基于英文版UM1891:Getting started with STM32CubeF7 firmware package for STM32F7 Series第2版。
UM1891用户手册 适用于STM32F7系列的STM32CubeF7入门指南
前言 STMCube™ 计划源自意法半导体,旨在通过减少开发的工作量、时间和成本,使开发者收益。STM32Cube是涵盖STM32微控制器的STMCube™的实现。 STM32Cube 1.x 版包括: • 图形软件配置工具STM32CubeMX,允许通过使用图形向导生成C语言的初始化代码。 • 针对每个系列提供综合的嵌入式平台(即STM32CubeF7用于STM32F7系列): – STM32抽象层嵌入式软件STM32Cube HAL,确保在STM32各个产品实现最大限度的可移植性。HAL可用于所有外设。 – 一套一致的中间件,比如RTOS、USB、TCP/IP和图形。 – 所有嵌入式软件使用工具均配备了一套完整的实例。 本用户手册描述了如何开始使用STM32CubeF7固件包。 第1节描述了STMCube™计划的一部分STM32CubeF7固件的主要特点。第2节和第3节 提供了STM32CubeF7架构和固件包结构的概况。
1 STM32CubeF7主要特点 STM32CubeF7集合了在STM32F7微控制器上开发应用所需的所有通用嵌入式软件组件,并以单个包装形式提供。和STMCube™的初衷一致,该套组件具有高度可移植性,不仅是在STM32F7系列,在其他STM32系列中也是这样。 STM32CubeF7完全兼容代码生成器STM32CubeMX,其允许生成初始化代码。包内包括涵盖微控制器硬件的底层硬件抽象层(HAL),以及在意法半导体开发板上运行的一套广泛的例程。为了方便用户,HAL可以在开源BSD许可证下获得。 STM32CubeF7包也包含一系列中间件组件并带有相应的例程。他们有免费的用户友好的许可条款: • 完整的USB主机和设备栈,支持多种方式。 – 主机方式:HID、MSC、CDC、Audio、MTP – 设备方式:HID、MSC、CDC、Audio、DFU。 • 专业图形栈解决方案StemWin,提供二进制格式,并且基于意法半导体合作商SEGGER的emWin解决方案。 • CMSIS-RTOS实现,使用FreeRTOS开源解决方案。 • 基于开源FatFS解决方案的FAT文件系统。 • 基于开源LwIP解决方案的TCP/IP协议栈 • 基于开源PolarSSL的SSL/ TLS安全层 在STM32CubeF7包中也提供一些实现所有这些中间件组件的应用和演示程序。
2 STM32CubeF7体系结构概述 STM32Cube固件解决方案建立在三个独立的层级,可以很容易的进行互动,如图2所示: 图 2. STM32CubeF7固件体系结构
层级0:这个层级分成3个子层: • 板级支持包(BSP):这一层提供了一组API,和硬件板的硬件组件相关(如LCD、Audio、microSD、MEMS驱动)。它由两部分组成: – 组件:这个是和电路板上的外部器件相关的驱动,而不是STM32。该组件驱动提供到BSP驱动的外部组件的特定API,并且可以移植到其他任何电路板上。 – BSP驱动程序:它允许连接组件的驱动程序到特定的电路板,并且提供一系列用户友好的API。该API的命名规则是BSP_FUNCT_Action()。例如:BSP_LED_Init()、BSP_LED_On() BSP基于模块化的结构,允许仅实现底层的程序就很容易移植到任何硬件。 • 硬件抽象层(HAL):该层提供了底层驱动以及与上层(应用程序、库和堆栈)进行交互的硬件接口的方法。HAL驱动提供通用的多实例、功能导向的API,通过提供准备使用的过程简化用户应用程序的实现。例如,对于通信外设(I2S、UART...),它提供了API,允许初始化及配置外设,基于轮询方式管理数据传输、中断或者DMA处理、处理在通信过程中产生的通信错误。 HAL驱动程序的API分为两大类:向所有STM32系列提供共用和通用的函数的通用API以及对具体系列或者特定的零件编号提供具体且定制的函数的扩展API。 • 基础外设的用法示例:该层包括建立在STM32外设的示例,这些示例使用HAL或者/以及底层驱动的API以及BSP资源。
层级 1:这个层级分为两个子层: • 中间件组件:中间件是一组库,涵盖USB主机和设备库、STMTouch触摸感应、StemWin、FreeRTOS和FatFS。该层的组件之间的水平连接通过调用功能API直接实现,而与低层驱动的垂直交互则是通过在库的系统调用接口实现的特定回调函数及静态宏来完成。例如,FatFS实现了磁盘I/O驱动来访问microSD驱动或者USB Mass Storage类。 每个中间件组件的主要特点如下: • USB主机和设备库 – 支持几个USB类(Mass-Storage、HID、CDC、DFU、LPM和BCD)。 – 支持多包传输功能,允许发送大量数据,而不用将其分割成最大包大小的传输。 – 使用配置文件来改变内核及库的配置,不用更改库代码(只读)。 – 32位对齐的数据结构体处理高速模式下的基于DMA的传输。 – 从用户层面通过配置文件支持多USB OTG内核实例。这允许操作多于一个USB 主机/设备的外设。 – RTOS和独立操作 – 通过抽象层使用配置文件链接至低层驱动,可以避免在库和低层驱动之间任何的依赖性。 • StemWin图形栈 – GUI开发的专业级别的解决方案,基于SEGGER的emWin解决方案。 – 优化的显示驱动程序。 – 软件工具,用于代码生成和位图编辑(STemWin Builder…)。 • LibJPEG – 开源的标准 – C实现JPEG图像的编码和解码。 • FreeRTOS – 开源的标准。 – 兼容CMSIS层。 – 在低功耗模式下无滴答操作。 – 集成在所有的STM32Cube中间件组件。 • FAT文件系统 – FATFS FAT开源库。 – 支持长文件名。 – 支持动态多磁盘。 – RTOS和独立操作。 – 使用microSD和USB主机大容量存储类的例程。 • LwIP TCP/IP协议栈 – 开源的标准 – RTOS和独立操作 • 基于中间件组件的示例:每个中间件组件配有一个或者多个例程(也叫做应用程序)来说明如何使用它。也提供了使用几个中间件组件的集成的示例。
层级2:该层级由单个层组成,并包含在全局的实时和图形化演示程序,其基于中间件服务层、低层抽象层和根据板的功能的基本外设使用的应用程序。 |