STM32Cube生态系统是ST为STM32开发者打造的软件生态,是嵌入式开发的利器。

为提升功能丰富且高能效的STM32系列微控制器的易用性,2019年,意法半导体在STM32Cube软件生态系统中增加了一个免费的多功能STM32开发工具:STM32CubeIDE。

STM32CubeIDE是ST官方提供的免费软件开发工具,也是STM32Cube生态系统的一员大将。它基于Eclipse®/CDT框架,GCC编译工具链和GDB调试工具,支持添加第三方功能插件。同时,STM32CubeIDE还集成了部分STM32CubeMX和STM32CubeProgrammer的功能,是一个 “多合一”的STM32开发工具。

用户只需要STM32CubeIDE这一个工具,就可以完成从芯片选型,项目配置,代码生成,到代码编辑,编译,调试和烧录的所有工作。

STM32CubeIDE 是基于 Eclipse 的框架,它继承了 Eclipse 所特有的一些对用户来说还不太熟悉的特性,比如透视图,工作空间等。

工作空间(Workspace):STM32CubeIDE通过工作空间(workspace)对工程进行管理,打开STM32Cube时,它会新建一个默认的工作空间,用户也可以通过Browse按钮另外选择一个文件夹作为工作空间,之后新建或者导入的工程就都属于前面选择的这个工作空间。同一个工作空间下的工程具有相同的IDE层面的配置(在Window→Preferences中进行设置),比如显示和编辑的风格设置等。从文件系统的角度,工作空间就是一个文件夹,里面包含了多个工程的文件夹和一个名为“.metadata”的文件夹,“.metadata”文件夹下包含了该工作空间内的所有工程的信息。用户可以通过File→Switch Workspace菜单,切换不同的工作空间。

透视图(Perspective):透视图是一系列和某类功能相关的窗口的组合。常用的有C/C++编辑透视图,调试透视图和CubeMX配置透视图。

C/C++编辑透视图包括了项目管理器,编辑窗口,Outline窗口等。在项目管理器中可以查看和操作当前工作空间中的所有项目。双击打开项目中的文件,文件内容会显示在编辑窗口,在编辑窗口可以对

在Window Show View菜单中可以打开和关闭需要显示在C/C++编辑透视图中的窗口。

通过右上方的图标可以在不同的透视图之间切换,比如点击爬虫图标,就可以切换到调试透视图。在C/C++编辑透视图下点击工具栏的Debug按钮启动调试后,也会自动切换到调试透视图。

其进行编辑。最右边的Outline窗口列出了当前打开的文件中定义的所有函数,变量和宏。

1. 新建和导入工程

使用STM32CubeIDE,用户可以通过多种方法来开始新建一个项目。在STM32CubeIDE的欢迎界面上,列出了创建/导入工程的快捷入口,分别对应下面的四种场景。也可以通过File菜单下的New和Import实现对应的功能。

• 从零开始新建一个STM32工程

• 已有STM32CubeMX的配置文件(*.ioc文件 ),希望根据该ioc文件新建一个STM32工程

• 已有SW4STM32或者TrueSTUDIO工程,希望转换成STM32CubeIDE工程

• 基于STM32Cube库中的例程创建新工程

STM32CubeIDE工程结构

单核的MCU都是扁平结构。

对于双核架构的MCU或者安全MCU,比如STM32H7,STM32L5和STM32MP1系列,STM32CubeIDE工程是分层结构。以STM32H7为例,创建或者导入STM32H7工程后,在Project Explorer栏看到的是一个三层的工程结构:最上面一层是“根”工程,然后是两个分别对应CM7和CM4内核的“子”工程,“子”工程下面才是工程文件。这两个CM7和CM4“子”工程才是真正的可编译和调试的工程,而“根”工程只是作为一个“容器”,包含了CM7和CM4这两个“子”工程。AN5361,AN5394,AN5360和AN5564分别描述了在STM32CubeIDE中如何创建,导入,编译和调试STM32H7双核,STM32L5,STM32MP1以及STM32WL的工程。

打开/关闭/删除/切换/导出STM32CubeIDE工程

在Project Explorer窗口中可以看到当前工作空间下的所有工程。用户可以对这里面的任一工程进行打开/关闭/删除/导入/导出/更名等操作。

固件库管理

STM32CubeIDE集成了STM32CubeMX的部分功能,可以直接选择芯片/开发板型号,或者选择例程来生成一个新工程。STM32CubeIDE生成工程所需要的驱动和例程代码都来自各个STM32系列的固件库。

在Help→Manage Embedded Software Packages里,可以对所有的STM32固件库以及其他的插件进行管理(安装/删除固件库)。

用户可以通过Install Now按钮让STM32CubeIDE自动从网络进行下载安装,也可以通过From Local按钮来安装已经预先下载好的固件库。

通过Remove Now按钮可以删除选中的固件库。

在Window Preferences窗口的STM32Cube Firmware Updater标签页下,可以设置固件库安装的路径和更新的方式。

默认STM3CubeIDE在打开和新建工程的时候,都会尝试连接网络。用户也可以选择“Off Line Mode”,不让STM32CubeIDE去联网。但是需要通过上一张图中Embedded Software Packages Manager窗口的From Local按钮来安装已经预先下载好的固件库,否则将不能自动为新建的STM32工程生成代码。

点击Check Connection按钮可以检测当前的网络连接状态。检测结束如果出现一个红色的×,则说明网络配置有问题,需要我们到Network Connection页面去进行设置。

除了前面主动检测网络状态,如果出现固件下载失败的情况,也请检查STM32CubeIDE的网络配置是否正确。

配置步骤见下图:

1.进入 Window Preferences菜单,选择General Network Connections标签页

2.选择 Manual方式

3.选择HTTP,双击打开编辑窗口,设置网络连接参数。

代码编辑

STM32CubeIDE基于Eclipse,Eclipse的一些常用快捷键和编辑技巧一样适用于STM32CubeIDE。熟练掌握这些小技巧可以提高开发效率,使得程序开发的工作事半功倍。

代码编译

工程属性设置及编译

在Project Explorer中选中一个工程,点击右键后进入properties菜单,在其中就可以对编译项进行配置。常用配置的操作细节,请查看“STM32CubeIDE工程属性配置技巧”。

配置完成之后就可以进行编译了。用户可以通过下面三种方式启动编译:

• 方法一:选中工程,点击右键,然后选择“Build Project”

• 方法二:选中工程,从Project菜单进入,然后选择“Build Project”

• 方法三:选中工程,直接点击工具栏里的Build图标

提高编译速度

通过使能并行编译,可以提高STM32CubeIDE的编译速度。

选中工程,点击右键后进入properties菜单,选择“C/C++ Build”,在Behavior标签页下,勾选“Enable parallel build”功能。

编译相关辅助工具

工程编译完成以后,在“Build Analyzer”窗口可以看到链接文件中定义的所有内存区域(memory region)和段(section)的使用情况,包括加载地址,运行地址,有多少字节已经被占用,还剩余多少字节等。

在“Static Stack Analyzer”窗口中显示了静态堆栈的使用情况。

STM32CubeIDE还提供了Headless Build功能,可以不打开CubeIDE的图形界面,通过命令行就可以进行编译。

代码调试及烧录

调试及运行配置

STM32CubeIDE工程编译完成且无任何错误,就可以进行调试和下载了。

在C/C++透视图的工具栏中有三个和下载调试相关的按钮:调试,运行和外部工具。

通过“调试”按钮旁边的小三角,可以打开Debug Configurations菜单,进行调试参数的配置,比如调试器的选择,GDB连接的设置,ST-LINK的设置,外部Flash Loader的设定等,并启动调试。

通过“运行”按钮,可以仅下载程序不启动调试。

通过“外部工具”按钮,可以调用外部的命令行工具。

有关调试参数配置及调试技巧的内容,请参考“STM32CubeIDE工程调试配置及技巧”(马上推出,敬请期待)。

启动调试

STM32CubeIDE使用GDB进行调试,支持STLink和SEGGER J-Link调试器,支持通过SWD或JTAG接口连接目标MCU。

STM32CubeIDE工程编译完成之后,直接点击工具栏的爬虫图标或者通过选择菜单Run-->Debug,可以启动调试。

如果是第一次对当前工程进行调试,STM32CubeIDE会先编译工程,然后打开调试配置窗口。调试配置窗口包含:调试接口的选择,STLink的设置,复位设置和外部flash loader的设置等选项,用户可以检查或者修改各项配置。确认所有的配置都正确无误,就可以点击OK,启动调试。

然后STM32CubeIDE会先将程序下载到MCU,然后从链接文件(*.ld)中指定的程序入口开始执行。程序默认从Reset_Handler开始执行,并暂停在main函数的第一行,等待接下来的调试指令。

基本调试操作

启动调试后,STM32CubeIDE将自动切换到调试透视图,在调试透视图的工具栏中,列出了调试操作按钮。如下图所示。

插件的使用

STM32CubeIDE同样支持Eclipse插件。

可以通过Help菜单下的“Eclipse Marketplace”,在Eclipse市场中查找并安装插件;

或者通过Help菜单下的“Install New Software”,从指定的网址安装插件。

STM32CubeIDE使用例程

下面我们通过一个LED闪灯的例程,来体验一下使用STM32CubeIDE进行软件开发的流程。

例程使用NUCLEO-H743ZI开发板,通过STM32CubeIDE从零开始新建工程。该工程就实现一个简单的功能:板载的LED1以500ms的间隔自动翻转。

通过这个例程,可以了解到以下内容:

• 新建一个STM32CubeIDE工程

• 对STM32芯片进行配置

• 添加用户代码并编译

• 设置调试参数

• 调试代码(查看变量及寄存器)

• 设置断点

首先,选择File-->New-->STM32 Project,STM32CubeIDE会打开MCU选择窗口。在这个窗口下,可以选择某个型号的芯片,也可以选择某个ST开发板或者例程。这里我们在搜索框里输入STM32H743ZI,就可以直接选择这个芯片了,然后点击Next。

在接下来弹出的窗口中,需要设置项目的名称,类型和工程保存的位置。默认情况下,新建的工程会保存在当前的workspace中,用户也可以按下图所示,取消“Use default location”,然后自定义工程保存的位置。需要注意的是,如果你试图将两个工程放在同一个路径下,在后面的创建过程中可能会报错。所以你可以在路径中加上工程名,以区别不同的工程。

设置完成后,点击Finish,STM32CubeIDE将为我们创建一个工程,并打开芯片的配置界面,这个界面和STM32CubeMX是一样的。

期间可能会弹出将要打开CubeMX配置透视图的提示,点击Yes就可以了。

接下来要做的是,在芯片配置界面,按功能需求对时钟,GPIO,外设,中间件等进行配置。在这个例程中,我们只用到了PB0,作为输出控制LED1,所以只需要配置它就可以了。时钟就使用默认配置。

在Pinout视图下,通过搜索栏,可以在快速在芯片封装图上找到要配置的引脚。

选择该引脚,点击右键,选择GPIO_Output功能。

然后转到System视图,点击GPIO模块,然后就可以看到刚刚配置的PB0引脚。这个窗口中,还可以继续调整PB0的其他参数,比如上/下拉,速度等。还可以为其定义一个用户标签LDE1,方便在代码中进行引用。

所有的配置结束后,选择Project-->Generate Code重新生成代码。这时STM32Cube会切换到C/C++透视图,然后可以添加用户的文件或对某个C文件进行修改。

在这里,我们添加了一段翻转PB0的代码。这里要注意,所有用户添加的代码必须放在“USER CODE BEGIN xxx”和“USER CODE END xxx”这一对声明之间。这样当再次重新生成代码的时候,才不会丢失这部分代码。

代码添加完成后,点击“Build”开始编译。

如果编译结束并且没有任何报错。就可以点击Debug,启动调试。

第一次启动调试,会先弹出调试参数配置窗口,确认好所有的参数无误,点击OK,STM32CubeIDE就会自动从编辑界面切换到调试界面了。如下图所示。

在调试界面下,通过工具栏的操作按钮,可以进行单步调试。

双击某一行代码最左边的标记栏处,就可以在这行代码处添加断点。

右侧打开了多个调试窗口,包括:局部变量,断点,全局变量和寄存器等等。这些窗口可以在Window-->Show View菜单中打开或者关闭。

1

如何查看STM32CubeIDE文档集

第一次打开STM32CubeIDE时,首先显示的是“Information Center”页面。这个页面提供了创建工程的快速通道和使用STM32CubeIDE的文档入口。用户不需要在使用STM32CubeIDE之前阅读所有这些文档,但可以把这里作为一个入口,在需要的时候从这里进入去搜索相关文档。

2

用户手册/应用笔记

用户手册/应用笔记

STM32CubeIDE installation guide

《STM32CubeIDE安装指南》

STM32CubeIDE quick start guide

《STM32CubeIDE快速指南》

Migration guide from System Workbench to STM32CubeIDE

《从System Workbench移植到STM32CubeIDE》

Migration guide from TrueSTUDIO® to STM32CubeIDE

《从TrueSTUDIO移植到STM32CubeIDE》

Getting started with projects based on dual-core STM32H7 microcontrollers in STM32CubeIDE

《使用STM32CubeIDE开发STM32H7双核工程》

Getting started with projects based on the STM32L5 Series in STM32CubeIDE

《使用STM32CubeIDE开发STM32L5工程》

Getting started with projects based on the STM32MP1 Series in STM32CubeIDE

《使用STM32CubeIDE开发STM32MP1工程》

Getting started with projects based on dual-core STM32WL microcontrollers in STM32CubeIDE

《使用STM32CubeIDE开发STM32WL工程》

STM32CubeIDE 入门相关推荐

  1. 【STM32CubeIDE入门】(三)USART的配置及使用(DMA)

    目录 一.基础配置 二.USART 配置 1.通用配置 2.DMA 设置 三.printf 重定向 四.熟悉 USART 常用函数 1.有关 Timeout 设置问题 2.HAL_UART_GetSt ...

  2. stm32cubeide烧写程序_STM32CubeIDE使用入门的几个常见问题

    ST公司为广大STM32用户提供了免费的集成开发工具STM32CubeIDE有一段时间了.常言道,万事开头难.这里就其入门使用的几个常见问题分享交流下. 1.STM32CubeIDE该免费工具哪里可以 ...

  3. STM32F1与STM32CubeIDE快速入门-USB虚拟串口(CDC)

    USB虚拟串口(CDC) 文章目录 USB虚拟串口(CDC) 1.USB虚拟串口配置 2.USB虚拟串口驱动实现 3.运行结果 4.STM32F1与STM32CubeIDE系列文章 4.1 STM32 ...

  4. STM32F1与STM32CubeIDE快速入门-ADC轮询方式实现PWM调光器

    ADC轮询方式实现PWM调光器 在模拟输入通道上使用 ADC 执行模数转换的最简单的代码方法. 然而,这并不是所有情况下的有效方式,因为它被认为是使用 ADC 的一种阻塞方式. 通过这种方式,我们开始 ...

  5. STM32F1与STM32CubeIDE快速入门-ADC通过DMA方式与PWM实现调光器

    DMA 方法是以非常高的速率转换多个 ADC 通道的最有效方法,并且仍然将结果传输到内存而无需 CPU 干预,这是一种非常酷且省时的技术. 本次实例将实现ADC以DMA方式采样,并转换成PWM输出,从 ...

  6. STM32F1与STM32CubeIDE快速入门-SD卡驱动-SDIO+FatFs

    SD卡驱动-SDIO+FatFs 文章目录 SD卡驱动-SDIO+FatFs 1.SDIO与FatFs简单介绍 2.SDIO与FatFs配置 3.SDIO与FatFs功能测试 4.代码解析 5.STM ...

  7. HEL库入门教程:STM32CubeIDE汉化教程 直接在线安装 简单易懂

    问题描述: STM32cubeIDE安装后如果需要汉化,主要有在线安装和离线安装两种,汉化时在网上了解到其他博主的教程主要以离线安装为主,而我采用的是在线安装的技巧,简单快捷,在这里把经验分享给大家. ...

  8. STM32CubeIDE XiP 和 BootROM介绍, XiP外部内存QSPI FLASH执行用户代码

    随言: 目前的电子产品功能越来越多,随之而来的就是代码越来越庞大,代码所需要的存放空间也越来越大. 比如:用ST做GUI界面,面临最大的问题就是芯片内部flash最大才2M.在现在这个时代,2M其实也 ...

  9. 在STM32Cube中使用FreeRTOS:入门体验

    文章目录 目的 基础说明 入门体验 基础配置 任务调度 消息队列 信号量 互斥量 定时器 其它补充 使用ST-LINK调试 中断嵌套 总结 目的 FreeRTOS是现在比较流行的主要应用于单片机等性能 ...

  10. STM32系列微控制器入门介绍

    文章目录 目的 基础需求 电路基础 编程语言 入门介绍 官方网站 型号选择 开发方式 开发工具 程序调试 固件烧录 资料说明 总结 目的 STM32是意法半导体(ST)推出的主要基于ARM Corte ...

最新文章

  1. c++静态成员函数好处
  2. QIIME 2教程. 24Python命令行模式Artifact API(2021.2)
  3. 从零开始单排学设计模式「策略模式」黑铁 II
  4. 数组模拟栈和队列板子
  5. PagedList.Mvc只有一行时不显示分页
  6. Mybatis-自定义类型处理器
  7. gophp解释器_【干货】Gisp 解释器 Golang 辅助开发工具
  8. [转载] Python3网络爬虫
  9. jqgrid下载,引入
  10. 函数名,函数体,返回值,参数
  11. html+css+js实现关键词随机图片
  12. [IOI2005]Riv 河流
  13. html vue 动态加载组件
  14. 自抗扰控制(ADRC)—— 扩展状态观测器
  15. 【IoT】产品外包策略:外包地图-充分利用内外部资源
  16. IPV4内网地址网段
  17. Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) B. Shashlik Cooking
  18. VVC帧间预测(四)仿射运动补偿预测
  19. 网页抓包工具httpwatch
  20. 小米node2红外_小米门窗传感器2的糟心问题

热门文章

  1. 【STM32】ADC的DMA方式采集(16通道)
  2. 操作系统课堂笔记七-交换技术
  3. 空时编码的理论与实践(3)空时编码设计准则
  4. 《东周列国志》第九十二回 赛举鼎秦武王绝胫 莽赴会楚怀王陷秦
  5. GBIT51232-2016装配式钢结构建筑技术标准
  6. 化繁为简的终极指南化繁为简的终极指南
  7. 1.松翰单片机:IO口配置
  8. 手机mstsc远程工具_如何通过手机远程控制计算机
  9. 【Python】如何用Python快速实现语音提醒功能
  10. 如何提高英文的科研写作能力——施一公