1.认识STM32Cube软件包
如前所述,STM32Cube组件由两部分组成:STM32CubeMX是PC端图形化配置软件;另外还有一系列资源丰富的STM32Cube软件包。在STM32CubeMX主页面的概述(Overview)部分,有一张图来介绍它们之间的关系,如图4-8所示。
图4-8 STM32Cube组件关系图
由图4-8可知,STM32Cube软件包包含例程和演示、中间层组件、HAL固件库,且支持所有的STM32微控制器。
获取STM32Cube软件包的方法有两种:一是通过STM32CubeMX的菜单命令“Help”→“Manage embedded software packages”在线下载;二是在ST公司官网下载软件包,通过“Embedded Software Packages Manager”窗口的“From Local”按钮来安装。
可以在ST公司官网的搜索栏输入“STM32Cube”进行搜索,然后如图4-9所示,在列表中选择STM32CubeF1,跳转到STM32CubeF1软件包的介绍页面离线下载STM32Cube软件包;也可以在STM32CubeMX介绍页面的工具和软件(Tools and software)菜单下的嵌入式软件(Embedded software)中选择STM32CubeF1直接下载。
图4-9 STM32Cube软件包列表
在STM32CubeF1软件包的介绍页面还有以下几份文档值得我们学习。
(1)应用手册(Application notes)AN4724:STM32Cube firmware examples for STM32F1 series。
(2)用户手册(User manuals),包括:
UM1850:Description of STM32F1xx HAL drivers;
UM1847:Getting started with STM32CubeF1 firmware package for STM32F1 series.
(3)演讲课件(Presentations):STM32 Embedded software overview。
其中,演讲课件和应用手册AN4724可以帮助读者对STM32CubeF1软件包有一个整体认识;另外,在AN4724中不仅介绍了STM32F1的例程,还介绍了用户手册中的文档,以及学习阅读的次序。
图4-10中直观地展示了STM32CubeF1的内容:支持的开发板(评估板、探索套件、Nucleo开发板);中间件组件,包括TCP/IP栈、USB主机/设备库、图形用户界面STemWin、文件系统FATFS、实时操作系统FreeRTOS等;支持所有外设的HAL驱动。
图4-10 STM32CubeF1软件包的构成
用户手册UM1847和UM1850是接下来学习STM32CubeF1软件包开发时要参考的文档,特别是UM1850,详细介绍了HAL固件库的函数,这是编程开发的重要参考手册。
2.下载STM32Cube软件包
目前还要使用在线下载方式下载STM32Cube软件包,因为离线下载容易出现版本不匹配的问题。在下载软件包前,还要设置安装软件包的位置。运行STM32CubeMX软件,执行菜单命令“Help”→“Updater Settings…”,打开“Updater Settings”对话框,如图4-11所示。
图4-11 打开“Updater Settings”对话框
默认路径层次比较多,可以设置一个相对层次较少的路径,如安装Keil MDK-ARM的根目录E:\Keil_v5等。配置完成后,单击“OK”按钮,返回STM32CubeMX主界面。
执行菜单命令“Help”→“Manage embedded software packages”,打开“Embedded Software Packages Manager”窗口,如图4-12所示。在列表中找到STM32F1,然后再找到最新版本的软件包STM32Cube MCU Package for STM32F1 Series(当前版本为1.8.0),选中后,“Install Now”按钮变为可用状态,单击该按钮即可开始下载安装。
图4-12 打开“Embedded Software Packages Manager”窗口
有关软件包下载的介绍,可以参考STM32CubeMX的用户手册UM1718和STM32CubeF1软件包的用户手册UM1847。
下载完成后,就可以到图4-11中设置的路径下查看STM32CubeF1软件包了。如图4-13所示,在该文件夹下共有8个文件或文件夹,其中_htmresc、package.xml、Release_Notes.html是软件包发布记录的网页文件及相关资源,其余5个文件夹的介绍如下所述。
图4-13 STM32CubeF1软件包
Documentation:在该文件夹中有一份pdf格式的帮助文档,即STM32CubeF1的用户手册UM1847。
Drivers:该文件夹中保存的是STM32Cube固件驱动函数库,其中BSP文件夹保存的是开发板层驱动程序,BSP的全称是Board Support Package;CMSIS文件夹包含的是定义外设寄存器和地址映射的STM32F1××微控制器软件接口文件,CMSIS的全称是Cortex Microcontroller Software Interface Standard(ARM Cortex微控制器软件接口标准);STM32F1××_HAL_Driver文件夹保存的是STM32F1××所有外设的HAL驱动文件。
Middlewares:该文件夹中保存的是中间件组件,其中有两个文件夹:ST文件夹保存的是图形用户界面协议栈(STemWin)、USB设备驱动程序、USB主机驱动程序等;Third_Party文件夹保存的是第三方的中间件协议栈,包括文件系统FATFS、实时操作系统FreeRTOS、TCP/IP栈等。
Projects:该文件夹中保存的是实例(Examples)和应用程序(Applications),这些例程是按照开发板区分的,支持4种开发板,即STM32F103RB-Nucleo、STM32VL-Discovery、STM3210C_EVAL、STM3210E_EVAL。
Utilities:该文件夹中保存的是有关液晶显示、声音播放等文件。
文件夹Drivers\BSP、Drivers\STM32F1××_HAL_Driver、Drivers\CMSIS、Middlewares、Utilities等与软件包发布记录Release_Notes.html页面中的图的对应关系如图4-14所示。
图4-14 STM32CubeF1软件包组件与文件夹的对应关系
对于软件包中的各个文件夹,在UM1847的第3章STM32CubeF1 firmware package overview中有更为详细的介绍。