woshi_ziyu
发表于: 2016-4-28 23:22:47 | 显示全部楼层

本篇译文基于英文版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:该层级由单个层组成,并包含在全局的实时和图形化演示程序,其基于中间件服务层、低层抽象层和根据板的功能的基本外设使用的应用程序。

跳转到指定楼层
woshi_ziyu
发表于: 2016-5-4 21:49:34 | 显示全部楼层

3        STM32CubeF7固件包概览


3.1        支持的STM32F7器件和硬件

STM32Cube提供了高度可移植的硬件抽象层(HAL),建立在通用的架构。它允许上层结构,如中间件层和应用程序, 不用深入了解使用的MCU来实现他们的函数。这样提高了库代码的重用性并且保证在其他器件的易移植性。

STM32CubeF7提供完全支持所有STM32F7系列。用户只需要在stm2f7xx.h定义正确的宏。

表 1 列出了根据所使用的STM32F7器件需要定义的宏。这个宏也可以在编译器的预处理器定义。

表1. 用于STM32F7系列的宏

stm32f7xx.h文件中定义的宏
STM32F7器件
STM32F756xx
STM32F756VG, STM32F756ZG, STM32F756IG, STM32F756BG, STM32F756NG
STM32F746xxSTM32F746VE, STM32F746VG, STM32F746ZE, STM32F746ZG, STM32F746IE, STM32F746IG, STM32F746BE, STM32F746BG, STM32F746NE, STM32F746NG
STM32F745xxSTM32F745VE, STM32F745VG, STM32F745ZG, STM32F745ZE, STM32F745IE, STM32F745IG

STM32CubeF7在所有层中都有一组丰富的例程和应用,使得其很容易理解和使用任何HAL驱动和/或中间件组件。这些例程运行在意法半导体的开发板,如表2中所列出的。

表 2. STM32F7系列的评估板和探索板

开发板
支持的STM32F7器件
STM327x6G_EVAL STM32F746xx和STM32F756xx
STM32F746G-Discovery STM32F746NG
STM32F746ZG-Nucleo STM32F746ZG

STM32CubeF7固件可以在任何兼容的硬件上运行。如果后者具有相同的硬件功能(LED、LCD显示、按钮等),用户仅仅需要更新BSP的驱动,根据自己的开发板修改提供的例程的端口设置。


3.2        固件包概述

STM32CubeF7固件解决方案以单个zip压缩包的形式提供,其结构如下面的图3所示。


图3. STM32CubeF7固件包结构


对于每个开发板,都提供了一系列的例程,带有EWARM、MDK-ARM和SW4STM32工具链的预配置的工程。

图4展示了STM327x6G_EVAL开发板的工程结构图。该结构与其他的开发板一致。

这些示例根据他们应用的STM32Cube层进行分类,并且命名规则如下:

•        层级0的例程被称为Examples,他们使用不带任何的中间件组件的HAL驱动。

•        层级1的例程被称为Applications,他们为每个中间件组件提供典型的应用案例。

•        层级2的例程被称为Demonstration,他们实现了所有的HAL、BSP以及中间件组件。

Template文件夹下的模板工程允许快速创建基于特定开发板的固件应用程序。

所有的例程具有相同的结构:

•        \Inc 文件夹包含所有的头文件。

•        \Src文件夹包含所有的源代码。

•        \EWARM、\MDK-ARM和SW4STM32文件夹包含每个工具链的预配置工程。

•        readme.txt 描述了示例的特性,以及使其正常工作所需的环境。

表3 展示了适用于每个开发板的例程、应用程序和演示程序的数量。

表3. 适用于每个开发板的示例数量

开发板
示例
应用程序
演示程序
STM327x6G_EVAL
90
61
1
STM32F746G-Discovery
28
25
1
STM32F746ZG-Nucleo
25
7
1

图 4. STM32CubeF7示例概览

STM32CubeF7示例概览.jpg

如果你能看到我的世界里那些渐渐消逝的美好,你就能体会到现在所拥有的幸福。
回复

使用道具 举报

woshi_ziyu
发表于: 2016-5-4 23:23:29 | 显示全部楼层

4        STM32CubeF7使用入门


4.1        运行第一个例程

本节介绍了使用STM32CubeF7运行第一个例程是多么简单。 作为示例我们来运行在STM327x6G_EVAL评估板上运行的简单的切换LED例程:

1.        下载STM32CubeF7固件包。解压缩到你选择的目录。确保没有修改如图3所示的包结构。

2.        浏览到 \Projects\STM327x6G_EVAL\Examples.

3.        打开 \GPIO,然后打开\GPIO_EXTI文件夹。

4.        使用你首选的工具链打开工程。

5.        重新创建所有的文件,并加载镜像文件到目标的内存。

6.        运行该例程:每次按下Tamper按钮,LED1切换(闪烁的频率)(详细信息请参考例程的自述文件)。


以下给出了关于如何使用支持的工具链打开、编译和运行例程的快速概览。若要使用支持的工具链打开、创建和运行例程,请按照下列步骤:

•        EWARM

a)        在该例程文件夹下,打开\EWARM子文件夹。

b)        启动例程的eww 工作区。

c)        重建所有的文件: Project->Rebuild all.

d)        加载工程的镜像文件: Project->Debug.

e)        运行程序Debug->Go(F5)。

•        MDK-ARM

a)        在该例程的文件夹下,打开\MDK-ARM子文件夹。

b)        启动例程的uvprojx工作区。

c)        重建所有的文件: Project->Rebuild all target files

d)        加载工程的镜像文件:Debug->Start/Stop Debug Session

e)        运行程序:Debug->Run (F5).

•        SW4STM32

a)        打开SW4STM32工具链。

b)        点击File->Switch Workspace->Other 然后浏览到SW4STM32工作区目录。

c)        点击 File->Import,选择General->Existing Projects into Workspace ,然后点击 Next

d)        浏览到SW4STM32工作区目录并且选中该工程。

e)        重建所有的工程文件:在Project explorer 窗口选择工程,然后点击Project->build project 菜单。

f)        运行程序: Run->Debug (F11)


4.2、4.3、4.4以及第5节的内容与STM32CubeL4入门指南相似,有需要的朋友可以参考:UM1860 - 适用于STM32L4系列的STM32CubeL4入门指南


如果你能看到我的世界里那些渐渐消逝的美好,你就能体会到现在所拥有的幸福。
回复

使用道具 举报

woshi_ziyu
发表于: 2016-5-4 23:31:44 | 显示全部楼层

6     修订历史记录


表4.文档修订历史记录

  日期
  版本号
  修改内容
2015-04-30
1
  最初版本。
   
  2015-11-12

  
   
  2

  
更新表2: STM32F7 系列的评估板和探索板 标题和新增两行STM32F746G-Discovery和STM32F746ZG-Nucleo开发板。
更新表3: 适用于每个开发板的示例数量应用程序数量由58替换成61和新增两行STM32F746G-Discovery和STM32F746ZG-Nucleo开发板。
更新 图 1: STM32CubeF7固件库组件。
更新第5节:常见问题解答2第二个问题关于STM32CubeF7固件包支持的开发板,新增TM32F746G-Discovery和STM32F746ZG-Nucleo 开发板。

中文翻译PDF版: UM1891 - 适用于STM32F7系列的STM32CubeF7入门指南.pdf (622.17 KB, 下载次数: 25)

如果你能看到我的世界里那些渐渐消逝的美好,你就能体会到现在所拥有的幸福。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 32 | 回复: 51



手机版|

GMT+8, 2024-4-18 13:17 , Processed in 0.150296 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表