第4章 STM32CubeIDE创建工程实例_第1页
第4章 STM32CubeIDE创建工程实例_第2页
第4章 STM32CubeIDE创建工程实例_第3页
第4章 STM32CubeIDE创建工程实例_第4页
第4章 STM32CubeIDE创建工程实例_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章STM32CubeIDE创建工程实例4.1STM32CubeIDE的安装在安装STM32CubeIDE之前,首先登录ST公司官网,选择STM32CubeIDE安装包。网址如下:/zh/development-tools/stm32cubeide.html#登录ST公司官网后,选择STM32CubeIDE安装包版本(如STM32CubeIDE1.15.1),单击图4-1中的获取软件按钮,然后进入STM32CubeIDE安装包下载许可协议选择界面,需要登录MyST,同STM32CubeMX的操作方式,这里从略。4.1.1STM32CubeIDE软件包获取图4-1STM32CubeIDE安装包下载界面下载后STM32CubeIDE软件包如图4-2所示。图4-2STM32CubeIDE软件包STM32FCubeIDE安装步骤如下。将图4-2所示的STM32CubeIDE软件包解压缩后,得到如图4-3所示的STM32CubeIDE应用程序。4.1.2STM32FCubeIDE的安装步骤图4-3STM32CubeIDE应用程序双击st-stm32cubeide_1.15.1_21094_20240412_1041_x86_64应用程序,弹出如图4-4所示的STM32CubeIDE安装向导界面。图4-4STM32CubeIDE安装向导界面单击图4-4中的Next按钮,弹出如图4-5所示LicenseArgreement(许可协议)接受界面,选择Accept:Iaccepttheagreement。图4-5LicenseArgreement(许可协议)接受界面单击图4-5中的IAgree按钮,弹出如图4-6所示的STM32CubeIDE安装路径选择界面。图4-6STM32CubeIDE安装路径选择界面一般选择默认路径,单击图4-6中的Next按钮,弹出如图4-7所示的ChooseComponents(选择组件)选择界面。图4-7ChooseComponents(选择组件)选择界面单击图4-7中的Install按钮,弹出如图4-8所示的Installing(安装)界面。图4-8STM32CubeIDE安装界面在STM32CubeIDE安装工程中,会弹出如图4-9所示的STMicroelectronics通用串行总线设备安装选择界面。图4-9STMicroelectronics通用串行总线设备安装选择界面由于在应用STM32CubeIDE开发调试时,要将ST-LINK/V2插入到计算机的USB接口,所以单击图4-9中的安装按钮,弹出如图4-10所示的STM32CubeIDE继续安装界面。图4-10STM32CubeIDE继续安装界面STM32CubeIDE安装完成,弹出如图4-11所示的STM32CubeIDE安装完成界面。图4-11STM32CubeIDE安装完成界面单击图4-11中的Next按钮,弹出如图4-12所示的创建桌面图标界面。图4-12创建桌面图标界面单击图4-12中的Finish(完成)按钮,在计算机桌面生成如图4-13所示的STM32CubeIDE图标。图4-13STM32CubeIDE图标4.2启动STM32CubeIED启动STM32CubeIDE,首先将会出现图4-14所示的欢迎界面。图4-14STM32CubeIDE的欢迎界面随后,会显示启动(Launcher)界面,如图4-15所示。图4-15STM32CubeIDE的启动界面图4-15中的Workspace文本框,供用户选择计算机上存放工程文件的工作空间地址。勾选“Usethisasthedefaultanddonotaskagain”复选框,可以将所选地址设为默认启动地址,启动时不再弹出选择界面。RecentWorkspaces显示最近建立或访问过的工作空间,用户可直接点击查看。上述参数设置完毕后,单击界面右下的Launch按钮,即可启动STM32CubeIDE,如图4-16所示。图4-16启动STM32CubeIDE启动过程结束后,会弹出图4-17所示的STM32CubeIDE主界面。图14-17STM32CubeIDE的主界面4.3建立新工程在STM32CubeIDE的主界面中,打开主菜单File选择New→STM32Project命令,就可以建立一个新的STM32工程,如图4-18所示。4.3.1建立STM32工程图4-18建立一个新的STM32工程选择STM32Project之后,会显示如图4-19所示的初始化目标选择器进度框。这个过程实际上是调用STM32各系列芯片的信息。在这个初始化的过程中会弹出图4-20所示的下载选择文件(DownloadselectedFiles)的进度框(初次启动STM32CubeIDE才有)。图4-19显示初始化目标选择器的进度图4-20下载选择的文件目标选择器初始化过程结束后,会弹出图4-21所示的目标器件选择(TargetSelection)界面1。从这个界面中,可以选择项目工程所用的具体器件。4.3.2选择目标器件图4-20下载选择的文件以芯片型号是STM32F407ZGT6搜索为例,可在器件搜索框中输入该型号。在输入过程中,系统会自动列出包含已输入信息的所有器件名称以供选择,同时在右下侧信息框内显示所选器件的详细信息。如图14-22所示,选择的器件型号是STM32F407ZGT6。图4-22目标器件选择界面(2)在图4-22中根据型号找到所用芯片,然后在右下侧列表项中选中该芯片,如图4-23所示。图4-23选中具体的芯片如果在器件搜索框内输入完整的器件型号,在MCUs/MPUsList中就会出现唯一一行对应该型号芯片的信息。选中器件后,上方可查看特性、框图、文件资源及数据手册,查看文件时系统联网从ST官网下载。单击Datasheet,则会弹出图4-24所示对话框,从ST网站上下载该器件的数据手册。图4-24下载数据手册目标器件选择完成后,单击图4-21所示界面中右下侧的Next按钮(在上述器件选择步骤完成后,该按钮才允许单击),会弹出STM32工程建立(ProjectSetup)界面,如图4-25所示。4.3.3设置工程参数图4-25工程建立界面在工程建立界面中,需要给所建立的工程命名。图4-26所示为固件库(Firm-wareLibraryPackageSetup)设置界面。图4-26固件库设置界面单击图4-26中的Finish按钮会弹出一个提示框(如图4-27所示),询问是否进入STM32CubeMx界面。在STM32CubeMx界面中可以完成对MCU各硬件功能模块的配置。4.3.4硬件功能模块配置图4-27提示是否进入硬件配置界面在图4-27中,单击Yes按钮会显示一个初始化硬件配置过程的进度条,然后就会启动项目工程的建立过程。工程建立过程结束后会出现如图4-28所示的名为1ed.ioc的硬件配置界面,其中led为所建立的工程名。本例的任务是点亮一只发光二极管,并以此为例讲解硬件配置过程和IDE的使用方法。用STM32F407ZGT6控制一个发光二极管。在硬件上,该发光二极管的亮灭是由MCU的PA5引脚控制的。PA5引脚输出高电平时LED点亮,输出低电平时LED熄灭。图4-28led.ioc的硬件配置界面1.配置GPIO首先介绍如何配置PA5。在图4-28所示界面中,给出了STM32F407ZGTx芯片的外形图,四周都是引脚。用放大工具将该图放大后(进入Pinoutview界面,用鼠标中间的滚轮即可放大或缩小,或者单击图4-29中的放大、缩小工具),可以找到PA5引脚;单击PA5引脚,会弹出图4-29所示选项列表。图4-29中的选项列表是用来选择PA5功能的。图4-29选择引脚功能由于在硬件上将PA5用于驱动一个发光二极管,所以选择PA5的功能为输出(GPIO_Output)。选择完毕后,可以看到PA5的颜色会改变,并且出现GPIO_Output字样,如图4-30所示。图4-30选择引脚功能为GPIO_Output图4-31所示为GPIO的模式与配置。图4-31GPIO的模式与配置2.配置RCC接下来,介绍如何配置RCC(ResetandClockControl,复位和时钟控制)参数。单击SystemCore→RCC,会显示RCC的模式与配置界面。RCC的模式与配置界面如图4-32所示。图4-32RCC的模式与配置3.配置SYSSYS的模式与配置(SYSModeandConfiguration)界面中是一些有关系统的配置参数,如调试(Debug)的方式、系统唤醒模式的选择、时间基准的选择等。本例中,只选择了调试方式,其下拉列表框中有常用的JTAG、串行线(SerialWire)等选项。由于使用的是NUCLEO-G474RE板上自带的调试器,故选择SerialWire即可。其他参数采用默认值。SYS模式与配置界面如图4-33所示。图4-33SYS的模式与配置4.配置系统时钟接下来,介绍系统时钟的配置。单击图4-32中的ClockConfiguration标签页,会显示关于STM32的详细时钟配置图,也称时钟树。由于完整的时钟配置图中包含的内容很多,为了清晰起见,图4-34只给出了局部信息。由于本例中仅使用HSE作为时钟,所以在此只介绍HSE相关的时钟配置。图4-34时钟配置图设置好以后,系统时钟(SYSCLK)的频率即为168MHz,如图4-35所示。图4-35配置系统时钟系统时钟配置完毕后,保存led.ioc文件。如图4-36所示,打开主菜单Project选择GenerateCode命令,此时会弹出图4-37所示的对话框。在该过程中,系统会将上面所配置的信息自动转换成代码。4.3.5启动代码生成功能图4-36生成代码图4-37代码生成进度显示如图4-38所示,展开工程界面左侧浏览条目中的Core→Src,其中的main.c就是自动生成代码的主程序。双击,可打开main.c程序代码。图4-38查看自动生成的C代码4.4修改代码查看main.c文件会发现主程序中有很多/*······*/,此为注释语句。在程序编译时,这些注释语句是不会被编译的,而且这些注释基本都是成对出现的。譬如,在main函数的最后有个while(1)语句:/*Infiniteloop*///提示如下代码为无限循环/*USERCODEBEGINWHILE*///提示while中的用户代码段开始while(1){/*USERCODEENDWHILE*///提示while中的用户代码段结束/*USERCODEBEGIN3*///提示用户代码段3开始4.4.1代码中注释对及其作用}/*USERCODEEND3*///提示用户代码段3结束上面这段代码中,第一行的注释语句/*Infiniteloop*/提示下面是一个无限循环。后面紧跟着的是两对注释:/*USERCODEBEGINWHILE*/……/*USERCODEENDWHILE*/和/*USERCODEBEGIN3*/……/*USERCODEEND3*/在这两个注释对中,都明确说明了这是用户代码的开始(USERCODEBEGIN)和结束(USERCODEEND)的位置。此为提示信息,提示编程者把代码写在这对注释语句之间。下面来看main函数中while语句之前的几个子函数。为清晰起见,先删除用于提示写入用户代码的注释对语句。去掉注释对语句后,图4-39中的main函数代码如下:intmain(void){HAL_Init();//复位外设、初始化Flash接口和时钟基准等SystemClock_Config();//配置系统时钟MX_GPIO_Init();//初始化外设while(1){}4.4.2初始化函数}上述main函数代码中有三个子函数。这些子函数都是关于硬件配置的,也是前面配置完引脚、时钟等硬件参数后STM32CubeIDE自动生成的代码。在图4-39所示界面中,当把光标移到HAL_Init()上时,会显示该函数的简单介绍。图4-39查看函数声明在main函数中,另一个重要的子函数是关于I/O引脚配置的,即MX_GPIO_Init()函数,其声明也是在main.c文件中给出。由于在前面仅配置了PA5,所以在MX_GPIO_Init()函数中主要是针对PA5的配置信息,如初始电平、模式、上拉/下拉等。staticvoidMX_GPIO_Init(void){GPIO_InitTypeDefGPIO_Intstruct={0};/*GPIOPortsClockEnable*///使能时钟——HAL_RCC_GPIOF_CLK_ENABLE();——HAL_RCC_GPIOA_CLK_ENABLE();/*ConfigureGPIOpinOutputLevel*///设置初始状态HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);/*ConfigureGPIOpin:CED_Pin*///配置引脚模式、上拉/下拉、速度GPIO_Intstruct.pin=LED_Pin;GPIO_InitStruct.Mode=GPIO_MODE_OUTPVT_PP;GPIO_InitStruct.Pull=GPTO_PULUP;GPIO_InitStruct.Speed=GPIO_SPEED_FREQHIGH;HALGPIOLInit(LED-GPI0_Port,&GPIO_InitStruct);}至此,硬件配置基本完毕,下面就可以开始编写用户代码了。4.4.3添加用户代码HAL_GPIO_TogglePin()和HAL_Delay()都是STM32Cube固件库提供的函数。STM32CubeIDE采用的是Eclipse架构,具有代码自动提示功能(contentassist)。譬如,写代码时,在文件中输入HAL后按组合键Alt+/,就会开启代码自动提示功能。系统会自动显示以HAL打头的固件库函数。图4-40中,显示了所有以HAL_GPIO_打头的库函数。4.4.4如何查找所需要的HAL库函数图4-40使用代码自动提示功能图4-39中显示了很多与GPIO相关的库函数,对于GPIO来说,最常用的是后面三个:HAL_GPIO_ReadPin(GPIOx,GPIO_Pin);HAL_GPIO_TogglePin(GPIOx,GPIO_Pin);HAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);HAL_GPIO_ReadPin()函数是在将I/O配置为输入后用于读取GPIO引脚上的值(状态)的;HAL_GPIO_TogglePin()和HAL_GPIO_WritePin()函数都是在将GPIO配置为输出后用于写GPIO值(状态)的。这些函数的使用方法及与硬件的关系,后面讲GPIO时会进一步说明。将上面控制PA5的语句和延时语句放到while(1)循环中,即可完成用户代码的修改。不过需要注意,这两句代码要放置到注释对中,譬如放到/*USERCODEBEGIN3*/与/*USERCODEEND3*/之间:while(1){/*USERCODEBEGIN3*/HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);HAL_Delay(500);}/*USERCODEEND3*/至此,点亮发光二极管的程序编写完毕。4.4.5修改后的代码4.5编译工程单击工具栏上的BuildAll按钮(或者打开主菜单Project选择BuildAll命令),就可以启动项目工程编译过程,如图4-41所示。用BuildAll编译工程,会把工作空间(Workspace)中所有项目都编译一遍。工作空间如果有多个项目,最好打开菜单Project选择BuildProject命令,这样就只会编译当前工程,如图4-42所示。编译过程结束后,如果没有错误,在工程界面下侧信息窗中的Console栏会出现编译信息,如图4-43所示。如图4-43所示,编译中没有遇到错误和警告。图4-41编译工程图4-42编译当前工程图4-43编译结果信息4.6STM32CubeProgrammer软件ST有限公司发布新版STM32CubeProgrammer和STM32CubeMonitor,助力开发者快速推向市场。嵌入式工程师需选择功能全开发平台,泛生态工具对STM32开发尤为重要。STM32CubeProgrammer支持通过ST-Link的SWD/JTAG接口擦写STM32片上存储器。也支持通过UART、USB、I2C、SPI、CAN接口调用芯片内bootloader擦写存储器。ST-Linkv2仅支持UART和USB通信,ST-Linkv3新增SPI、I2C和CAN支持。STM32CubeProgrammer还可操作MCU选项字节和一次性可编程字节。通过外部loader,STM32CubeProgrammer支持对外部存储器的编程。STM32CubeProgrammer是针对STM32的一款多功能的编程下载工具,提供图形用户界面(GUI)和命令行界面(CLI)版本。STM32CubeProgrammer还允许通过脚本编写选项编程和上传、编程内容验证以及编程自动化。STM32CubeProgrammer软件特色如下:(1)可对片内Flash进行擦除或编程以及查看Flash内容。(2)支持s19、hex、elf和bin等格式的文件。(3)支持调试接口或bootloader接口。①STLINK调试接口(JTAG/SWD)②UART或USBDFUbootloader接口(4)支持对外部的存储器的擦除或编程。(5)支持STM32芯片的自动编程(擦除、校验、编程、选项字配置)。(6)支持对STM32片内OTP区域的编程。(7)既支持图形化界面操作也支持命令行操作。(8)支持对ST-Link调试器的在线固件升级。(9)配合STM32TrustedPackageCreatortool实现固件加密操作。(10)支持Windows、Linux和MacOS多种操作系统。STM32CubeProgrammer图形化用户界面如图4-44所示。图4-44STM32CubeProgrammer图形化用户界面1. STM32CubeProgrammer的主要功能在STM32CubeProgrammer最左侧一栏可以在不同的功能标签页之间切换,进行不同的操作。接下来,我们会对STM32CubeProgrammer的主要功能进行介绍。(1)支持按扇区或全片擦除Flash,导入多种格式文件烧录,如bin、elf、hex和srec。(2)连接MCU后,在“Erasing&Programming”页执行按扇区或全片擦除操作。(3)烧录文件可在“Erasing&Programming”或“Memory&fileedition”页导入并启动。(3)在“Memory&fileedition”页还能读存储器值并保存为bin、hex或srec格式文件。(3)支持修改存储器指定地址值,自动完成擦除与写回,适用于OTP字节编程。(4)“OB”页显示当前MCU选项字,允许用户修改,详见MCU参考手册。(5)“二合一”烧录可同时写Flash和选项字,命令行使用“-ob”参数配置。(5)示例:设置读保护level1,勾选全片擦除和下载文件,输入“-obrdp=0xBB”,开始烧录。(5)“-ob”命令中OptByte字段定义可通过界面“Optionbytes”或“-obdispl”命令查询。(6)外部存储器SPI、FSMC、QSPI等接口读写需配合externalloader使用。2. STM32CubeProgrammer关键技术STM32CubeProgrammer关键技术如下:(1)STM32CubeProgrammer统一体验,集成ST-Link功能,跨平台自带OpenJDK8,提供图形与命令行界面,方便用户操作和脚本编写。(2)核心支持STM32调试与烧写,2.6版可导出动态修改寄存器,支持一次烧写外部存储,自定义日志颜色便于调试。(3)集成TrustedPackageCreator,支持OEM密钥安全上传与固件加密,支持多接口与外部安全固件安装,助力STM32安全。(4)使用STM32WL提取Sigfox证书,导入/sfxp下载凭据包,再通过STM32CubeProgrammer加载并获得MCUSigfoxID注册。4.7STM32CubeMonitor软件STM32CubeMonitor1.0.0由ST公司2020年发布,借助ST-Link仿真器实时监测STM32内部变量变化,支持曲线显示。用户可修改变量值,且通过局域网内浏览器访问监控界面,功能超越断点调试,类数字示波器实用调试工具。软件基于Node-RED开发,Node-RED是IBM2013年开源项目,支持硬件与Web服务连接,具图形化流程式编程优势。STM32CubeMonitor是基于Node-RED开发的,它增加了一些专用节点,用于STM32运行时数据监测和可视化。STM32CubeMonitor具有如下功能和特性。(1)基于流程的图形化编辑器,无须编程就可创建监测程序,设计显示面板。(2)通过ST-Link仿真器与STM32系统连接,可使用SWD或JTAG调试接口。(3)在STM32上的程序全速运行时,STM32CubeMonitor可以即时(on-the-fly)读取或修改STM32内存中的变量或外设寄存器的值。(4)可以解读STM32应用程序文件中的调试信息。(5)具有两种读取数据的模式:直接(direct)模式和快照(snapshot)模式。(6)可以设置触发条件触发数据采集。(7)可以将监测的数据存储到文件中,以便后期分析。(8)具有可定制的数据可视化显示组件,如曲线、仪表板(gauge)、柱状图等。(9)支持多个ST-Link仿真器同步监测多个STM32设备。(10)在同一个局域网内的其他计算机、手机或平板计算机上,通过浏览器就可以实现远程监测。(11)可以通过公用云平台和MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)协议实现远程网络监测。(12)支持多种操作系统,包括Windows、Linux和macOS。简单地说,STM32CubeMonitor能使用图形化编程方式设计监测程序,通过ST-Link仿真器连接STM32系统后,就可以实时监测和显示所监测的变量或外设寄存器的值。图4-45是STM32CubeMonitor的图形化编辑器界面,可供用户使用各种节点连接组成流程,实现变量监测和显示的程序。图4-45STM32CubeMonitor的图形化编辑器界面完成图形化程序设计后,单击图4-45右上角的DEPLOY按钮就可以部署程序,然后单击图4-44右上角的DASHBOARD按钮,可以打开Dashboard窗口,也就是监测结果显示图形界面。STM32CubeMonitor目前只支持ST-Link仿真器,不支持其他的仿真器。4.8STM32F407开发板的选择本书应用实例是在野火F407-霸天虎开发板上调试通过的,该开发板可以在淘宝上购买,价格因模块配置的区别而不同,价格在500元~700元之间。野火F407-霸天虎实验平台使用STM32F407ZGT6作为主控芯片,使用4.3寸液晶屏进行交互。可通过Wi-Fi的形式接入互联网,支持使用串口(TTL)、485、CAN、USB协议与其他设备通信,板载Flash、EEPROM存储器、全彩RGBLED灯,还提供了各式通用接口,能满足各种各样的学习需求。野火F407-霸天虎开发板如图4-45所示。图4-45野火F407-霸天虎开发板(带TFTLCD)4.9STM32仿真器的选择开发板可以采用ST-Link、J-Link或野火fireDAP下载器(符合CMSIS-DAPDebμgger规范)下载程序。1. CMSIS-DAP仿真器CMSIS-DAP是支持访问CoreSight调试访问端口(DAP)的固件规范和实现,以及各种Cortex处理器提供CoreSight调试和跟踪。如今众多Cortex-M处理器能这么方便调试,在于有一项基于ArmCortex-M处理器设备的CoreSight技术,该技术引入了强大的新调试(Debμg)和跟踪(Trace)功能。CoreSight两个主要功能就是调试和跟踪功能。(1)调试功能①运行处理器的控制,允许启动和停止程序。②单步调试源码和汇编代码。③在处理器运行时设置断点。④即时读取/写入存储器内容和外设寄存器。⑤编程内部和外部Flash存储器。(2)跟踪功能①串行线查看器(SWV)提供程序计数器(PC)采样,数据跟踪,事件跟踪和仪器跟踪信息;②指令跟踪(ETM)技术能够实时地将处理器执行的指令流式传输到PC,进而支持历史序列的调试、软件性能分析及代码覆盖率分析等多种功能。这样的改进不仅提升了数据传输的效率,还大大增强了开发和调试过程的灵活性和准确性。野火fireDAP高速仿真器如图4-46所示。图4-46野火fireDAP高速仿真器2. J-LinkJ-Link是SEGGER公司为支持仿真Arm内核芯片推出的JTAG仿真器。J-Link仿真器如图4-47所示。J-Link仿真器具有如下特点:(1)JTAG最高时钟频率可达15MHz。(2)目标板电压范围为1.2~3.3V,5V兼容。(3)具有自动速度识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论