您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > STM32CubeF4使用入门
UM1730STM32CubeF4使用入门山西大学电子信息工程系王晓峰Wangxiaofeng@sxu.edu.cn引言STMCube是由意法半导体原创倡议,旨在通过减少开发负担,时间和费用来为开发者提供轻松的开发体验。STMCube覆盖了STM32全系列。STM32Cube版本1.x包括:1、STM32CubeMX,一个图形软件配置工具,允许通过图形化向导来生成C初始化代码。2、一个广泛的嵌入式软件平台,按照产品系列提供(例如STM32CubeF4对应STM32F4系列)。此平台包括STM32CubeHAL(一个STM32的硬件抽象层,确保STM32之间最大的可移植性),再加上配套的中间件(RTOS,USB,TCP/IP和图形)。所有嵌入式软件组件都提供完整的例程。本用户手册描述了如何开始使用STM32CubeF4固件包。第一部分,描述了STM32CubeF4固件包的主要特性,STMCube的首创倡议。第二部分和第三部分提供了一个STM32CubeF4架构概览和固件包结构。1STM32CubeF4主要特性STM32CubeF4集合了所有开发STM32F4应用嵌入式软件组件。依照STMCube倡议,这些组件具有高度的可移植性,不止在STM32F4系列中,也包括所有STM32系列。STM32CubeF4高度兼容STM32CubeMX,STM32CubeMX允许用户生成初始化代码。包内包括一个底层硬件抽象层(HAL),HAL覆盖了微控制器硬件,集成了广泛的例程,可运行在意法半导体的开发板上。为了用户便利,硬件抽象层为开源BSD许可协议。STM32CubeF4包含了一套中间件组件,带有对应的例程。它们具有非常自由的许可证条款:1、CMSIS-RTOS贯彻了FreeRTOS的开源解决方案2、TCP/IP协议栈基于开源的LwIP解决方案3、FAT文件系统基于开源的FatFs解决方案,支持NAND闪存访问4、完整的USB主从设备协议栈支持。-主类:HID,MSC,CDC,Audio,MTP-设备类:HID,MSC,CDC,Audio,DFU5、图形-STemWin,一个专业的图形栈解决方案,提供二进制格式支持,并且基于我们伙伴的SEGGERemWin。STM32CubeF4包内提供所有这些中间件的实现示例。-LibJPEG,一个开源的工具,可以再STM32实现JPEG图片的编码和解码。6、SSL/TLS安全层,基于开源的PolarSSLSTM32CubeF4包括在STM32Cube包内。请注意STM32Cube将逐步完善并覆盖STM32系列。2STM32CubeF4建构概览STM32CubeF4固件解决方案基于并围绕三个独立的层,这些层可以容易的互动,如图1所示:层0:此层被分为三个子层。1、板级支持包(BSP):此层提供一组硬件硬件上的硬件相关API接口(音频编码,I/O扩展,触摸屏,SRAM驱动,LCD驱动等)和以下两部分:-组件:外部设备相关驱动,但不与STM32相关,组件驱动提供特殊的API接口到BSP驱动的外部组件,并可被接口到任何板上。-BSP驱动:它使能了组件驱动被连接到特定的硬件并提供一组用户友好的API,这些API的命名规则是:BSP_FUNCT_Action():例如BSP_LED_Init(),BSP_LED_On()BSP基于模块化结构,这使得它只需执行底层程序就可以轻松接口到其他硬件上。2、硬件抽象层(HAL):此层提供底层驱动和硬件接口方法,实现与上层互动(应用,库,协议栈)。它提供分类的,多实例和面向功能的API,这些API通过提供随时可用流程来减轻用户开发应用的负担。例如,与外围通信(I2S,UART),它提供的API可以初始化和配置外围设备,基于轮询、终端或DMA流程的管理数据传输,和通信中可能出现的管理通信错误。HAL驱动API被分为2类,普通API提供STM32系列通用和常见功能,扩展API为特殊家族或特殊的部件号提供特殊和定制的功能。3、基本外设常用例程:此层包含了STM32F4外设基本操作的例程,仅使用了HAL和BSP资源。层1:此层被分为两个子层:1、中间件:一组库,覆盖了USB主从设备库,STemWin,LibJPEG,FreeRTOS,FatFS,LwIP,andPolarSSL。此层的组件水平互动可通过调用特定API直接实现,同时可通过特殊的回叫和静态宏实现与底层驱动的垂直互动,回叫和静态宏实现在库系统调用接口中。例如,FatFs通过实现磁盘I/O驱动去访问microSD或USBMassStorage类。每个中间件组件的主要特性如下:USB主从设备库-多个USB类支持(Mass-Storage,HID,CDC,DFU,AUDIO,MTP)-支持多类型包传输特性:允许发送大型数据包而不用将其分成多个包来适应最大包尺寸限制。-使用配置文件来改变内核和库配置,而不用改变库代码(只读)-包括32位校准数据结构来控制DMA高速模式传输-通过配置文件支持来自用户层的多类型USBOTG内核实例-RTOS和独立操作-通过抽象层使用配置文件来实现链接到底层驱动,可以避免任何库和底层驱动之间的从属关系STemWin图形栈-GUI开发专业级解决方案,基于Segger’semWin的解决方案-最优化显示驱动-软件工具,可生产代码和位图编辑的(STemWinBuilder)LibJPEG-开源标准-C实现JPEG图像编解码FreeRTOS-开源标准-CMSIS通用层-低功耗模式下的动态时钟操作-整合进所有的STM32Cube中间件模块FATFilesystem-FATFSFAT开源库-长文件名支持-动态多驱动支持-RTOS和独立操作-提供microSDandUSBhostMass-storage类例程LwIPTCP/IPstack-开源标准-RTOS和独立操作2、基于中间件的例程:每个中间件伴随1个或多个例程(例如Applications),展示了如何使用中间件。也提供了多中间件整合例程。层2:此层为单层,它是一个全局实时和图形示例,基于中间件服务层。基于硬件功能,底层抽象层和应用实现外设的基本使用。3STM32CubeF4固件包概览3.1已支持的STM32F4设备和硬件STM32Cube提供一个高度可移植的硬件抽象层(HAL),HAL建立在分类的模块化的结构上,允许上层,中间件和应用去实现它们的功能而不用深度了解MCU。STM32Cube改善了库代码的重利用能力和保证了轻松的移植程序从一个设备到另一个。STM32CubeF4提供了所有的STM32F4系列设备的支持。你只需定义正确的宏在stm32f4xx.h中。下表列出了基于不用的STM32F4设备,需要定义的宏。(这些宏也可以在编译预处理中定义)STM32CubeF4特性的一组丰富的例程和各层示范使得理解和使用HAL驱动和中间件都变的更容易。这些例程可运行在任何的意法半导体开发板上,详见下表。STM32CubeF4固件能运行在任何适配硬件上。这意味你能简单的升级BSP驱动来转移提供的例程到你自己的硬件上,只要它们具有相同的硬件功能。3.2固件包概览STM32CubeF4固件解决方案以单包形式提供,包结构如下图。对每一款开发板,一组例程以EWARM,MDK-ARMandTrueSTUDIO的预工程形式提供。开发板的BSP驱动STM32F4XX所有组件的HAL驱动USB设备库,支持OTGFS和HS内核,并且支持以下(HID,MSC,CDC,Audio,DFU)其他组件包含STM32F4XXCMSIS文件,它定义了外设的寄存器声明,位声明,地址映射。STemWin专家栈,来自SEEGER,可利用的二进制文件USB主设备库,同时支持OTGFS和HS内核,并且支持以下类(HID,MSC,CDC,Audio,MTP)一组例程,按照开发板来组织,以工程形式提供。WIN32目录包含STemWin视窗模拟工程下图展示了STM324xG-EVAL评估版的工程结构。此结构与其他板完全相同。此例程根据使用的STM32Cube层做了分类,并命名如下:-层0的例程叫做例程,使用了HAL驱动,不包括中间件-层1的例程叫做应用,提供了每个中间件典型的使用示例-层2的例程叫做范例,它实现了所有的HAL,BSP和中间件为用户提供一个空工程便于快速建立任何固件应用在目标板上。所有例程都有以下结构,-\inc文件夹包含所有的头文件-\Src包含源文件-\EWARM,\MDK-ARMand\TrueSTUDIO文件夹包含对应预配置工程-readme.txt描述了例程作用和工作需要的环境要求下表提供了每种开发板的例程,应用,范例的数量4使用入门4.1如何运行你的第一个例程此部分解释了运行STM32CubeF4例程是多么的简单。就像展示的那样,让我们仔细思考去在STM32F4-Discoveryboard上运行简单的LED切换例程,1、在下载完STM32CubeF4固件包后,解压到你选择好的目录中,你只需要确保包结构没有被改变(如图3所示)。2、浏览\Projects\STM32F4-Discovery\Examples3、打开\GPIO,然后打开\GPIO_EXTI4、用常用开发工具打开工程5、重建所有并加载你的镜像到目标存储器6、运行例程:每次你按下用户键4,LED将会切换(更多细节,参考readme)你将了解到一个快速概览,关于如何打开,建立和运行例程。MDK-ARM-在文件夹下,打开\MDK-ARM子文件夹-打开工程名.uvproj工作板-重编译所有文件:Project-Rebuildalltargetfiles-加载工程镜像:Debug-Start/StopDebugSession-运行程序:Debug-Run(F5)4.2如何开发你自己的应用此部分描述了建立一个你自己的应用所需要的必要步骤。1、建立你的工程:你可以从每个开发板提供的空工程建立新的工程,路径在\Projects\STM32xx_xxx\Templates,或\Projects\STM32xx_xxx\Examples和\Projects\STM32xx_xxx\Applications下所有可用的工程(STM32xx_xxx参考开发板的名字,如STM32F4-Discovery)空工程提供一个空的主循环功能,这是熟悉STM32CubeF4工程设定的一个不错的起点。它有以下特性:A)它包含HAL,CMSISandBSP等源文件,最小系统代码B)它包含include路径,包含所有固件组件路径C)它定义了支持的STM32F4,允许CMSIS和HAL有正确的配置D)它提供了随时可用的用户文件,预配置如下:-HAL被初始化-系统节拍(SysTick)ISR实现,为HAL_Delay()服务-系统时钟被配置为最大频率。如果你复制了已存在的工程到其他位置,需要重新定义include路径。2、添加必要的中间件到你的工程(可选),可用中间件栈有(USB主从设备库,STemWin,LibJPEG,FreeRTOS,FatFS,LwIP,andPolarSSL)。要找到这些你需要添加到工程文件列表中的源文件,参考每个中间件提供的文档,你也能看一看\Projects\STM32xx_xxx\Applications\MW_Stack下可用的应用(MW_Stack参考中间件名称,如USB_Device),来获知添加源文件和include路径更好的办法。3、设置固件组件:HAL和中间件提供一套编译时间配置选项,使用头文件中的宏定义#define来实现。一个空配置文件在每个组件内提供,你必须拷贝到工程文件夹下(通常配置文件名为xxx_conf_template.h。“_template”需要被移除,当复制该文件到工程文件夹下时)。配置文件提供足够的信息,可以了解每个配置项的影响。更多细节信息在每个组件的文档中提供。4、启动HAL库:在跳转到主程序后,应用代码需要调用HAL_init()API来初始化HAL库,如下
本文标题:STM32CubeF4使用入门
链接地址:https://www.777doc.com/doc-4877301 .html