【工具使用】STM32CubeMX-基础使用篇
一、概述
    无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。
     本文主要面向初次接触STM32CubeMX的同学,大佬们可以跳过直接看单独的外设篇章。
二、软件说明
    STM32CubeMX是ST官方出的一款针对ST的MCU/MPU跨平台的图形化工具,支持在Linux、MacOS、Window系统下开发,其对接的底层接口是HAL库,另外习惯于寄存器开发的同学们,也可以使用LL库。STM32CubeMX除了集成MCU/MPU的硬件抽象层,另外还集成了像RTOS,文件系统,USB,网络,显示,嵌入式AI等中间件,这样开发者就能够很轻松的完成MCU/MPU的底层驱动的配置,留出更多精力开发上层功能逻辑,能够更进一步提高了嵌入式开发效率。
     演示版本 6.7.0
三、下载链接
官网链接:https://www.st.com/zh/development-tools/stm32cubemx.html
 百度网盘链接:https://pan.baidu.com/s/1HsHTmnJPZMZD1reCkMiXew?pwd=eq5j
 提取码:eq5j
四、软件使用
安装软件后双击打开软件,界面比较清晰,主要功能都放主界面上了。
New Project:新建工程,可以根据芯片型号、开发板类型、例程建工程。
 Manage software installaions:软件包安装,"CHECK FOR UPDATES"是用于更新软件自身,"INSTALL/REMOVE"是用于芯片包的安装和移除(跟Keil一样,需要哪个系列的芯片就安装哪个芯片包)。
 About STM32 & External Tools:前者是给ST自己打广告的,后者就是ST的一个工具生态链,一些相关工具可以在里面看到,比如ST的IDE工具——STM32CubeIDE。
 
 我们先选择根据MCU型号新建一个工程。
-最上方可以切换MCU、开发板或例程。
 -左边是一个搜索框,可以根据芯片型号直接搜索,也可以通过芯片资源或芯片信息来找到合适的芯片。
 -右下则是具体的芯片型号及一其基本信息,搜索结果也会在这里体现,选中并双击芯片型号即确认并新建工程。
 -右上的框是在选中芯片后,会显示芯片的一些具体信息。
 
    新建一个工程,因为我手头上只有一块STM32F072RB的开发板,所以这里选这个芯片。
 
     新建完工程后,根据选择的芯片型号,主界面会显示对应的芯片及其引脚分布。
 
     每个引脚可以单独选择对应的功能,哪些端口能配哪些外设,这里面都可以直观地看出来,不用再去查芯片手册,省了不少时间。配置好一个功能后,引脚颜色会变绿色。如果选完功能后引脚变黄色(比如配置了定时器的某个通道),这说明功能配置不完全,需要到左边的外设窗口进行详细配置。
 
 左边窗口对芯片外设做了一些分类,点击对应的外设,可以在详细配置的窗口中进行功能配置。
System Core:系统及内核相关的配置,比如系统时钟、GPIO、中断、内部看门狗等。
 Analog:模拟量相关的外设,比如ADC、DAC、比较器等。
 Timers:定时器相关的外设,比如定时器、RTC等。
 Connectivity:通信相关的外设,比如I2C、SPI、UART等。
 Multimedia:多媒体相关的外设,比如I2S、HDMI等。
 Computing:算法相关的外设,比如硬件CRC等。
 Middleware:中间件,比如FreeRTOS、FATFS等。
 
     切换时钟配置窗口(Clock Configuration),可以对单片机的时钟树进行直观地配置,这里最方便的就是,修改主频后,工具会自动算出其他所有外设的时钟配置。如果需要对某个外设时钟进行分频处理,可以单独设置。
 
     在生成工程代码之前,先进入工程配置界面(Project Manager)对工程进行一些配置,比如设置工程的路径,以及需要生成什么IDE的工程。另外针对于每一个外设,可以自主选择使用LL库或是HAL库。

配置完成后,点击"GENERATE CODE"生成工程及代码。在生成的工程里添加自己代码时需要注意一点,生成的代码里有很多"USER CODE BEGIN"和"USER CODE END"的备注,这些其实是提醒你应用代码要写在这个区间内,这样工具在重新生成工程时,可以通过识别这些备注进行选择性覆盖,避免每次改完配置又得重新键入应用代码。

     查看工程文件.ioc的目录下,多了一个完整的工程,打开工程编译,是可以直接编译通过的。
 
     至此,STM32CubeMX这个工具的一些常规使用功能就介绍完了,想了解具体外设的配置,请移步独立的外设篇章。
五、注意事项
1、配置完外设后,无论生成HAL库还是LL库的代码,基本都只是给你初始化好外设,但实际使能或者打开中断,则需要自己来操作。HAL库一般可能只需要调一个启动接口就行(不同外设有不同操作,不可一概而论),LL库则需要操作的寄存器会多一些,可以参考HAL的实现来操作和理解。
 2、自动生成的代码也不完全是没问题的,要留点心眼。就比如之前遇到过,F103的芯片,配置ADC用DMA传输时,因为生成的代码ADC和DMA的初始化顺序反了,导致初始化出现异常。
 3、添加应用代码时,尽量添加在工程代码里备注着用户代码起始到结束的区间内,这样后面使用CubeMX修改配置重新生成工程时,不会覆盖自己添加的应用代码。
六、相关链接
STM32CubeMX-Uart配置
 STM32CubeMX-GPIO配置
 STM32CubeMX-外部中断配置
 STM32CubeMX-ADC配置
 STM32CubeMX-CRC配置
 STM32CubeMX-定时器定时配置
 STM32CubeMX-定时器输入捕获配置
 STM32CubeMX-定时器比较输出配置
 STM32CubeMX-I2C配置
 STM32CubeMX-SPI配置
 STM32CubeMX-NandFlash/FMC总线配置
相关文章:
【工具使用】STM32CubeMX-基础使用篇
一、概述 无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。 本文主要面向初次接触STM32CubeMX的同学,大…...
面试题解-理解cookie、session和token
项目vuespringboot 1、token 用户填写密码账号发送至后端,由后端生成token,返回给前端,前端把它存放起来,如放在cookie或者localStorage里面 前端向服务器发起请求时在请求头携带token,判断用户身份给与反应。 //后…...
Buuctf [GUET-CTF2019]number_game 题解
目录 一.主函数逻辑 二.level_stor()函数 三.mid_stor函数 四.operate函数 五.judge2函数 六.求解flag 一.主函数逻辑 ①先输入一个字符串,然后judge1()函数遍历它,判断字符是否在[0,4]区间范围内 ②将输入的字符串用层次遍历的方式存储为一个二叉树root ③再将二叉树r…...
OsgEarth配置.earth文件支持wms服务
<!-- 参考 http://vmap0.tiles.osgeo.org/wms/vmap0?LAYERSbasic&SERVICEWMS&VERSION1.1.1&REQUESTGetMap&STYLES&FORMATimage%2Fjpeg&SRSEPSG%3A4326&BBOX-90,45,-45,90&WIDTH256&HEIGHT256 --> <!-- 可用 2023.03.09--> …...
【数据结构】详解空间复杂度
Yan英杰的博客 悟已往之不谏 知来者之可追 目录 空间复杂度 案例1:计算BubbleSort的空间复杂度? 案例2:计算斐波那契额数列的前N项的空间复杂度 案例3:计算阶乘递归Fac的空间复杂度? 案例4:F1和F2两函数是否使用的同一块空间 案例5:计算该…...
腾讯云GPU游戏服务器/云主机租用配置价格表
用于游戏业务的服务器和普通云服务器和主机空间是不同的,游戏服务器对于硬件的配置、网络带宽有更大的要求,一般游戏服务器根据不同的配置和适用场景会有十几元一小时到几十元一小时,而且可以根据不同的按量计费。而普通的云服务器可能需要几…...
配置临时SSL子域名泛化证书
配置临时SSL子域名泛化证书 三个月有效期第一步:访问SSL证书地址第二步:在华为云上/其他服务器上搜索DNS云解析服务类似的功能第三步:将SSL申请的信息添加到服务器的记录集中第四步:添加完信息进行保存获取key / crt第五步&#x…...
【Linux:环境变量的理解】
目录 1 Z(zombie)-僵尸进程 2 孤儿进程 3 环境变量 3.1 基本概念 3.2 测试HOME 3.3 和环境变量相关的命令 3.4 环境变量的组织方式 3.5 环境变量通常是具有全局属性的 在讲环境变量之前,我们先把上次遗留知识点给总结了(僵尸进程和孤儿进程&…...
python数据类型与数据结构
目录 一、数据类型 1.1变量与常量 1.1.1变量 1.1.2常量 1.2字符串类型 1.3整数与浮点数 1.4List列表 1.5 元组tuple 1.6字典dict 二、字符串格式化 三、数据输入和类型转换 四、简单列表习题练习 一、数据类型 变量类型: 整数int(4字节&#x…...
大数据自学学习技巧?
经常有人说:先别管大数据是什么,现在理解不了没关系,先开始学,等学着学着就明白了,这种学习路线基本是混合的,很难分清楚自己学了这段怎么用在以后项目中,所以会越学越迷茫,但是等你…...
Qt音视频开发22-音频播放QAudioOutput
一、前言 以前一直以为只有Qt5以后才有QAudioOutput播放音频,其实从Qt4.6开始就有,在Qt6中变成了QAudioSink,功能一样。用QAudioOutput播放音频pcm数据极其方便,只需要指定音频播放设备(可能电脑上有多个音频输出设备…...
JavaEE简单示例——Spring的入门程序
简单介绍: 在之前我们简单的介绍了有关于Spring的基础知识,那么现在我们就来一步步的把理论融入到实践中,开始使用这个框架,使用过程也是非常的简单,大致可以分为几个基础的步骤: 1.首先引入Spring的Mave…...
【嵌入式Bluetooth应用开发笔记】第一篇:DBUS概述与蓝牙开发小试牛刀
DBUS概述 DBus(D-Bus)是一个在不同程序之间传递消息的系统总线。DBus为不同的程序之间提供了一种通信机制,这种通信制可以在不需要知道对方程序的情况下进行通信。 DBus可以使用多种编程语言来开发,包括C、C、Python、Java等。在…...
如何在电脑更换新硬盘后迁移window11系统?2种迁移方法分享!
随着时间的流逝,数据量也在逐渐增多,就会导致您的硬盘空间也变得越来越小,因此系统运行速度可能会受到一些影响而越来越慢。为了摆脱这种情况,您可以选择升级到更大的硬盘来使计算机获取更大的磁盘空间,或者迁移系统到…...
6、Elasticsearch优化
一、Elasticsearch集群配置 1、硬件选择 Elasticsearch的基础是 Lucene ,所有的索引和文档数据是存储在本地的磁盘中, 具体的路径可在 ES 的配置文件 ../config/elasticsearch.yml 中配置,如下:磁盘在现代服务器上通常都是瓶颈。…...
给力|这是一个专业的开源快速开发框架!
在低代码开发市场,专业的开源快速开发框架可以助力企业提升办公协作效率,实现提质增效的办公自动化的发展目标。 流辰信息低代码技术开发平台服务商,拥有丰富的技术经验和案例合作经验,针对不同的客户需求,提供个性化、…...
CIMCAI smart shipping company product container damage identify
世界港航人工智能领军者企业CIMCAI,领先智能航运船公司集装箱管理产品ceaspectusS™全球规模化应用落地智能化航运,全球前三船公司认可验箱标准应用。全球港航人工智能领军者企业CIMCAI,是全球第一家完成两百万次人工智能验箱,上亿…...
ego微商小程序项目-接口测试
文章目录 1.接口理论回顾1.1 接口测试相关概念1.2 接口测试流程2.接口测试文档2.1 接口测试文档基础2.2 ego微商小程序的接口文档解析3.设计接口测试用例3.1 接口测试用例基础3.2 ego微商小程序接口测试用例4. 执行测试用例4.1 ego小程序测试用例执行4.1.1 首页-轮播图4.1.2 用…...
excel文件已经损坏怎么办
1. excel文件突然损坏怎么办Excel修复不成功还可以尝试其他修复方式。1、Excel提示文件已损坏可能是受保护视图的问题。如果打开文件碰到此提示,可以先点确定。在按以下步骤操作:1)在空白程序界面,点击功能栏的【文件】࿰…...
Java【数据结构入门OJ题33道】——力扣刷题记录1
文章目录第一天存在重复元素最大子数组和第二天两数之和合并两个有序数组第三天两个数组的交集买卖股票最佳时机第四天重塑矩阵杨辉三角第五天有效的数独矩阵置零第六天字符串中第一个唯一字符救赎金第七天判断链表是否有环合并两个有序链表移除链表元素第八天反转链表删除重复…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
