前言 STMCube™ 计划源自意法半导体,旨在通过减少开发的工作量、时间和成本,使开发者收益。STM32Cube是涵盖STM32微控制器的STMCube™的实现。 STM32Cube 1.x 版包括: • 图形软件配置工具STM32CubeMX,允许通过使用图形向导生成C语言的初始化代码。 • 针对每个系列提供综合的嵌入式平台(即STM32CubeL4用于STM32L4系列): – STM32抽象层嵌入式软件STM32Cube HAL,确保在STM32各个产品实现最大限度的可移植性。HAL可用于所有外设。 – 底层API(LL)提供了一个快速的、轻量级、面向专家的层,比HAL更接近硬件。LL的API只能用于一些外设。 – 一套一致的中间件,比如RTOS、USB、STMTouch™、FatFS和图形。 – 所有嵌入式软件使用工具均配备了一套完整的实例。 本用户手册描述了如何开始使用STM32CubeL4固件包。 第1节描述了STMCube™计划的一部分STM32CubeL4固件的主要特点。第2节和第3节 提供了STM32CubeL4架构和固件包结构的概况。
1 STM32CubeL4主要特点 STM32CubeL4集合了在STM32L4微控制器上开发应用所需的所有通用嵌入式软件组件,并以单个包装形式提供。和STMCube™的初衷一致,该套组件具有高度可移植性,不仅是在STM32L4系列,在其他STM32系列中也是这样。 STM32CubeL4完全兼容代码生成器STM32CubeMX,其允许生成初始化代码。包内包括涵盖微控制器硬件的底层(LL)和硬件抽象层(HAL)API,以及在意法半导体开发板上运行的一套广泛的例程。为了方便用户,HAL和LL的API可以在开源BSD许可证下获得。 STM32CubeL4包也包含一系列中间件组件并带有相应的例程。他们有免费的用户友好的许可条款: • 完整的USB主机和设备栈,支持多种方式。 – 主机方式:HID、MSC、CDC、Audio、MTP – 设备方式:HID、MSC、CDC、Audio、DFU、LPM、BCD。 • 专业图形栈解决方案StemWin,提供二进制格式,并且基于意法半导体合作解决方案商SEGGER emWin。 • CMSIS-RTOS实现,使用FreeRTOS开源解决方案。 • 基于开源FatFS解决方案的FAT文件系统。 • STMTouch触摸感应库解决方案。 在STM32CubeL4包中也提供一些实现所有这些中间件组件的应用和演示程序。
2 STM32CubeL4体系结构概述 STM32Cube固件解决方案建立在三个独立的层级,可以很容易的进行互动,如图2所示: 图 2. STM32CubeL4固件体系结构 2.1 层级0 这个层级分成3个子层: • 板级支持包(BSP) • 硬件抽象层(HAL) – HAL外设驱动 – 底层驱动 • 基本的外设应用例程。 2.1.1 板级支持包(BSP) 这一层提供了一组API,和硬件板的硬件组件相关(如LCD、Audio、microSD、MEMS驱动)。它由两部分组成: • 组件 这个是和电路板上的外部器件相关的驱动,而不是STM32。该组件驱动提供到BSP驱动的外部组件的特定API,并且可以移植到其他任何电路板上。 • BSP驱动程序 它允许连接组件的驱动程序到特定的电路板,并且提供一系列用户友好的API。该API的命名规则是BSP_FUNCT_Action()。 例如:BSP_LED_Init()、BSP_LED_On() BSP基于模块化的结构,允许仅实现底层的程序就很容易移植到任何硬件。
2.1.2 硬件抽象层(HAL)和底层 (LL) STM32CubeL4 HAL和LL是互补的,并且涵盖了广泛的应用程序需求: • HAL驱动高层次的、面向函数、高度可移植的API。他们向最终用户隐藏MCU和外设的复杂度。 HAL驱动提供通用的多实例、功能导向的API,通过提供准备使用的过程简化用户应用程序的实现。例如,对于通信外设(I2S、UART...),它提供了API,允许初始化及配置外设,基于轮询方式管理数据传输、中断或者DMA处理、处理在通信过程中产生的通信错误。 HAL驱动程序的API分为两大类: – 通用API,向所有STM32系列提供共用和通用的函数 – 扩展API,对具体系列或者特定的零件编号提供具体且定制的函数。 • 底层API提供寄存器级别的低级别的API,具有更好的优化性能,但移植性较差。他们需要深入了解MCU及外设的规范。 底层(LL)驱动的设计目的是提供一个快速的、轻量级、面向专家的层,比HAL更接近硬件。LL的API只能用于一些外设。和HAL相反,LL的API并不向某些外设提供,如优化访问不是主要特征的外设,或者需要庞大的软件配置以及/或者复杂的上层栈(如FSMC、USB或SDMMC)的外设。 它们的特点是: – 一组内联函数,用于直接以及原子寄存器的访问。 – 完全独立于HAL,并且能以单独模式使用(不使用HAL驱动)。 – 涵盖全部支持的外设特征。
2.1.3 基础外设的用法示例 该层包括建立在STM32外设的示例,这些示例使用HAL或者/以及底层驱动的API以及BSP资源。
2.2 层级 1 这个层级分为两个子层: • 中间件组件 • 基于中间件组件的示例。
2.2.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…)。 • FreeRTOS – 开源的标准。 – 兼容CMSIS层。 – 在低功耗模式下无滴答操作。 – 集成在所有的STM32Cube中间件组件。 • FAT文件系统 – FATFS FAT开源库。 – 支持长文件名。 – 支持动态多磁盘。 – RTOS和独立操作。 – 使用microSD的例程。 • STM32触摸感应库 强大的STMTouch电容式触摸感应解决方案支持感应、触摸键、线性和旋转传感器。该方案基于成熟的表面电荷转移采集的原理。
2.2.2 基于中间件组件的例程 每个中间件组件配有一个或者多个例程(也叫做应用程序)来说明如何使用它。也提供了使用几个中间件组件的集成的示例。
2.3 层级2 该层级由单个层组成,并包含在全局的实时和图形化演示程序,其基于中间件服务层、低层抽象层和根据板的功能的基本外设使用的应用程序。
|