STM32之CubeMX图形化工具开发介绍(十七)

devtools/2025/1/19 17:31:02/

STM32F407 系列文章 - STM32CubeMX(十七)


目录

前言

一、CubeMX

二、下载安装

1.下载

2.安装

3.图解步骤

三、用户界面

1.项目配置

2.项目生成

3.项目文件解释

4.新建工程

5.查看原工程

四、FAQ

总结


前言

STMCube源自意法半导体,旨在通过减少开发工作量、时间和成本,从而最大限度地复用软件并缩短创建目标系统的时间,让开发人员的生活更轻松。STM32CubeMX支持32位基于ARM Cortex的微控制器,涵盖了整个STM32产品。STM32CubeMX图形软件配置工具主要功能包括:可通过图形向导生成初始化C代码;提供STM32Cube HAL嵌入式代码库,确保在STM32各个产品之间实现最大限度的可移植性;底层API(LL)提供了一个专家级的快速轻量级层,它比HAL更靠近硬件;一套一致的第三方中间件比如RTOS、FatFs、USB、TCP/IP、图形库;提供了一套完整示例以及嵌入式软件工具。


一、CubeMX

CubeMX图形界面具备以下特性和功能:

  1. CubeMX可创建、保存和加载先前保存的项目。当启动CubeMX时,用户可以选择创建新项目或加载先前保存的项目,项目保存操作可将项目内执行的用户设置和配置保存在.ioc文件中,在STM32CubeMX下次加载项目时便可使用该文件。
  2. 轻松选择MCU和STMicroelectronics板。在开始新项目时,会打开一个专用窗口,用户可从STM32产品中选择微控制器或STMicroelectronics板,提供不同的筛选选项,以简化MCU和开发板选择。

  3. 轻松执行引脚布局配置。在“引脚布局”视图中,用户可以从列表中选择外设,并配置应用程序所需的外设模式、及相应的引脚进行分配和配置。对高级用户而言还可以使用“芯片”视图,直接将外设功能映射到物理引脚。在配置过程中,信号可以锁定在引脚上,CubeMX能检测引脚冲突和无效设置,并使用有意义的图标和有用的工具提示突出显示这些冲突和设置。另外配置完后引脚布局后,可以导出为.csv文件进行查看。

  4. 完整的项目生成。项目生成包括一组IDE的引脚布局、固件和中间件初始化C代码。用户可以从先前定义的引脚布局开始,继续配置中间件、时钟树、服务(RNG、CRC等)和外设参数。生成项目后,项目目录中包括生成的main.c文件和用于配置和初始化的C头文件、必要的HAL和中间件库的副本,以及用于所选IDE的特定文件。CubeMX C代码生成流程概述如下图所示。

  5. 添加用户自定义代码。用户可以在用户专用文件夹中添加用户定义的C代码,从而修改生成的源文件,CubeMX确保在下一次C代码生成时保留用户C代码(如果用户C代码不再与当前配置相关,则对其添加注释)。CubeMX也可以通过使用用户定义的freemarker .ftl模板文件生成用户文件。

  6. 时钟树配置。CubeMX提供了时钟树的图示,可以参阅设备参考手册。用户可以更改默认设置 (时钟源、预分频器和频率值),然后相应地更新时钟树。

  7. 功耗计算。用户可以首先选择微控制器料号和电池类型,进而定义表示应用生命周期和参数的一系列步骤(频率选择、使能的外设、步长持续时间),CubeMX功耗计算器返回相应的功耗和电池寿命估算值。

  8. 报告生成。可以生成.pdf和.csv报告,用于记录用户配置工作。

图形化开发工具STM32CubeMX,它具有以下优缺点。

优点:

  1. 快速开始:使用STM32CubeMX可以快速设置硬件,例如时钟设置、外设配置和中断优先级,从而缩短开发时间。

  2. 代码生成:STM32CubeMX可以生成整个项目框架,包括启动文件和中间件库,减少了开发者的工作量。

  3. 兼容性好:STM32CubeMX支持多种STM32设备,包括最新的STM32H7系列。

  4. 明确需求:客户可以快速识别最符合其要求的MCU(核心架构、特性、存储器容量、性能......),开发板设计人员可以关注如何针对板布局优化微控制器引脚配置并满足应用要求,嵌入式系统开发人员更感兴趣的是为特定目标设备开发新应用,以及将现有设计迁移至不同的微控制器。

缺点:

  1. 学习曲线:虽然STM32CubeMX简化了开发,但它需要一些时间来学习如何使用它。

  2. 可能的配置限制:有时候,由于自动生成的配置不能满足特定需求,可能需要手动修改生成代码。

  3. 依赖性:使用STM32CubeMX需要安装相应的软件包和插件。

CubeMX图形界面进行软件开发时,可以帮助开发者快速开始项目,减少代码编写工作。然而,它也要求开发者理解底层硬件和配置细节,以便在需要时进行调整和优化。

二、下载安装

STM32CubeMX软件支持win7、win8、win10的操作系统,32/64位都行。

1.下载

登录官方网站STM32CubeMX - 意法半导体STMicroelectronics,点击下载STM32CubeMX,可以选择Window、Mac、Linux,也可以查找早期的软件版本,自己根据需求进行下载即可,如下所示。

这里博主软件固件开发包选择的是stm32cubef4_v1.25.0版本的,CubeMX软件选择的是stm32cubemx_v6.0.1版本的,安装CubeMX6.0.1软件软件时,请先安装Java环境jdk-8u261-windows-x64。

2.安装

从上面官方网站上下载STM32CubeMX安装包后,将整个软件包解压到同一目录,并确保您拥有管理员权限后,双击SetupSTM32CubeMX-6.0.1.exe文件,启动安装向导。在Windows上成功安装STM32CubeMX后,桌面上会显示STM32CubeMX图标,可以在“程序”菜单中找到STM32CubeMX应用程序。STM32CubeMX.ioc文件显示为立方体图标,双击这些文件,使用STM32CubeMX打开文件。注意:在安装STM32CubeMX前,请先安装如果Java环境,并安装适当版本的Java运行时环境(版本1.7_45或更高版本)。

3.图解步骤

CubeMX具体安装步骤这里不作讲解,可以参考STM32 - CubeMX 安装图解 - CSDN博客这篇博文,每一步操作都有,适合初学者。

三、用户界面

STM32CubeMX用户界面包含以下内容:一、一个欢迎页面,用户可以在该页面决定启动一个新项目或加载一个近期项目;二、一个新项目窗口,用户应在该窗口中选择要用于项目的开发板或微控制器料号;三、项目视图及其主窗口、菜单栏、工具栏、四个配置视图(引脚布局、配置、时钟配置、功耗计算器)和一组帮助窗口(MCU选择、更新管理器、关于)。

新项目:此快捷方式通过打开“新项目”窗口来启动STM32CubeMX新项目创建(从“MCU选 择器”选项卡中选择MCU或从“板选择器”选项卡中选择板配置)。

加载项目:此快捷方式打开一个浏览器窗口,用于选择并加载先前保存的配置(.ioc文件)。加载使用旧STM32CubeMX版本创建的项目时,用户可以选择迁移,以将其迁移到最新的CubeMX可用数据库和STM32Cube固件版本,也可以选择继续。

帮助:此快捷方式可打开用户手册。

1.项目配置

在CubeMX主用户界面上开发设计者可以进行软件开发,完成软件引脚、时钟、外设、中断优先级、RCC、SYS等等配置,详细设置方法参考《STM32CubeMX使用手册.pdf》,在文末链接处可以下载阅读,该手册会有如下介绍,参考目录。

     

2.项目生成

在C代码生成过程中,STM32Cube代码默认采用HAL库驱动生成程序。

它从固件包以及Drivers/CMSIS、Drivers/STM32F4_HAL_Driver文件夹和中间件文件夹中(如果选择了中间件)的相关文件中复制。

它生成与用户MCU配置相对应的初始化C代码(.c/.h文件),并将其存储在Inc和Src文件夹中。默认情况下,包含以下文件:

  1. stm32f4xx_hal_conf.h文件:此文件定义了使能的HAL模块,并将一些参数(如外部高速振荡器频率)设为预定义的默认值,或根据用户配置(时钟树)进行设置。
  2. stm32f4xx_hal_msp.c(MSP MCU支持包):此文件定义了所有初始化函数,以便 根据用户配置(引脚分配、使能时钟、使用DMA和中断)配置外设实例。
  3. main.c负责:通过调用重置所有外设、初始化闪存接口和SysTick的HAL_init()函数将MCU重 置为已知状态,配置和初始化系统时钟,配置和初始化外设未使用的GPIO,为每个已配置的外设定义和调用外设初始化函数,该函数定义了将传递给相应外设HAL init函数(转而调用外设HAL MSP初始化函数)的句柄结构。当使用LwIP中间件时,底层以太网的初始化C代码将从main.c移至LwIP初始化C代码本身。
  4.  main.h文件:此文件包含与通过引脚布局选项卡所设置的引脚标签相对应的定义语句,以及通过配置选项卡所添加的用户项目常量。

3.项目文件解释

通过CubeMX配置生成的Keil工程,工程目录下,文件夹和文件数量众多,我们主要关注如下文件。

1.Keil工程文件:***.uvprojx

位于工程目录\MDK-ART文件夹下,Keil的工程文件,也是我们最重要的工程入口文件。双击它,可以打开Keil对工程代码进行编辑。

2.CubeMX配置文件:***.ioc

如果你安装了CubeMX软件,可以双击它,对本工程所使用的引脚、资源,进行修改配置;如果没有安装CubeMX软件,它是白色图标、无关联程序的状态,但不影响工程文件在Keil中的编辑。

3.BSP文件夹

自建的文件夹,存放一些模块、设备的底层驱动文件。平时复制、移植一些外部设备时,如串口屏模块,可以把它的驱动文件,统一存放在此文件夹中,然后在Keil里,添加文件路径、添加文件、引用头文件。

4.Core文件夹
CubeMX生成的工程文件夹,存放了CubeMX生成的外设代码文件。

5.Drivers文件夹
CubeMX生成的工程文件夹,存放了HAL库文件、芯片内核文件。

6.MDK-ARM文件夹
CubeMX生成的Keil工程文件夹,存放了Keil的工程入口文件、调试文件、编译输出文件等。

4.新建工程

CubeMX新建工程具体步骤这里不讲解,可以参考我的下一篇博文STM32CubeMX创建工程,每一步操作都有,适合初学者。

5.查看原工程

新建完工程之后,或者你想查看修改以前的老工程,在工程目录下直接双击加载先前保存的配置 ***.ioc文件即可。

四、FAQ

1.为什么芯片视图中有一些引脚以黄色或浅绿色突出显示? 为什么 我不能更改一些引脚的功能(点击一些引脚时没有任何反应)?

这些引脚属于特定引脚(如电源或BOOT引脚),不可用作外设信号。

2.在“引脚布局配置”面板中,在我添加新的外设模式时,为什么STM32CubeMX会移动一些功能?

您可能已取消选择。在这种情况下,工具会执行自动重新映 射,以优化放置位置。

3.在PC13、PC14、PC15和PI8之一已配置为输出的情况下,为什么STM32CubeMX不允许我将其配置为输出?

STM32CubeMX执行在参考手册的“输出电压特征”表中以注脚形式记录的限制条件:“PC13、PC14、PC15和PI8通过电源开关供电。由于该开关的灌电流能力有限(3mA),因此在输出模式下使用GPIO PC13到PC15和PI8时存在以下限制:速率不得超过2MHz,最大 负载为30pF,这些I/O不能用作电流源(如用于驱动LED)。”

4.以太网配置:为什么有时候我不能指定DP83848或LAN8742A?

对于大部分系列,STM32CubeMX将根据已选的以太网模式调整可行的PHY组件驱动程序列表。

  • 如果选择以太网MII模式,用户将能够在DP83848组件驱动程序与“用户Phy”之间选择。
  • 如果选择以太网RMII模式,用户将能够在LAN8742A组件驱动程序与“用户Phy”之间选择。
  • 如果选择“用户Phy”,用户需要手动添加组件驱动程序才能在其项目中使用。如参考我的一篇文章STM32网络通讯之CubeMX实现LWIP项目设计(十五)-CSDN博客里面有提到过。

对于STM32H7系列,PHY被视为外部组件,不再在以太网外设配置下指定。用户可在“LwIP平台设置”选项卡下选择PHY。但由于STM32H7固件包只提供在所有STM32H7评估板和Nucleo板上可用的LAN8742A组件的驱动程序代码,因此STM32CubeMX用户界面仅用于在“用户Phy”与LAN8742之间选择。如果选择LAN8742,BSP驱动程序代码会复制到生成的项目中。


总结

当然STM32CubeMX还有一些丰富的功能,如功耗计算、第三方插件STemWin、lwip、FATFS等功能使用,有待于你的开发。更多详细的使用参考《STM32CubeMX使用手册.pdf》,文档链接单片机STM32F407-Case程序代码例程-CSDN文库下载,找到对应的例程目录。

 

 


http://www.ppmy.cn/devtools/151866.html

相关文章

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件,但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别: 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

03JavaWeb——Ajax-Vue-Element(项目实战)

1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序&#xf…

前端——换行

大家都知道<br />和\n是有换行的作用 很多时候&#xff0c;有些区分不开<br />和\n的区别&#xff0c;他俩各自在什么情形下使用呢 一、<br /> 在浏览器中&#xff0c;<br /> 会强制文本在当前位置换行。 适用于需要在特定位置插入换行的场景。 二、…

KubeSphere 与 Pig 微服务平台的整合与优化:全流程容器化部署实践

一、前言 近年来,为了满足越来越复杂的业务需求,我们从传统单体架构系统升级为微服务架构,就是把一个大型应用程序分割成可以独立部署的小型服务,每个服务之间都是松耦合的,通过 RPC 或者是 Rest 协议来进行通信,可以按照业务领域来划分成独立的单元。但是微服务系统相对…

RabbitMQ-消息可靠性以及延迟消息

目录 消息丢失 一、发送者的可靠性 1.1 生产者重试机制 1.2 生产者确认机制 1.3 实现生产者确认 &#xff08;1&#xff09;开启生产者确认 &#xff08;2&#xff09;定义ReturnCallback &#xff08;3&#xff09;定义ConfirmCallback 二、MQ的持久化 2.1 数据持久…

基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;能够在不同操作系统和平台使用&#xff0c;简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库&#xff0c;还有丰富的第三方库&#xff0c;Python在数据处理、科学计算、数学建模、数据挖…

简历_使用优化的Redis自增ID策略生成分布式环境下全局唯一ID,用于用户上传数据的命名以及多种ID的生成

系列博客目录 文章目录 系列博客目录WhyRedis自增ID策略 Why 我们需要设置全局唯一ID。原因&#xff1a;当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这张表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题。 问题&#xff1a;id的规律性太明显、…

DeviceNet转Profinet网关+FANUC机器人:打造工业界的灭霸手套,掌控无限可能

在某车厂项目中&#xff0c;客户需将甲方的FANUC机器人接入自身Profinet网络系统。因机器人采用DeviceNET协议&#xff0c;所以选用稳联技术研发的Profinet转DeviceNET网关&#xff08;WL-DVN-PN&#xff09;实现通讯转换。 新建项目并导入稳联技术DeviceNET转Profinet网关&…