STM32之CubeMX新建工程操作(十八)
STM32F407 系列文章 - STM32CubeMX(十八)
目录
前言
一、STM32CubeMX
二、新建工程
编辑
1.创建工程
2.选择芯片型号
3.Pinout引脚分配
1.SYS配置
2.RCC配置
3.定时器配置
4.GPIO引脚配置
5.中断配置
6.通讯接口配置
7.插件Middleware配置
4.Clock时钟树配置
5.工程管理ProjectManage
1.项目工程配置
2.代码生成配置
3.代码生成配置
三、生成工程
总结
前言
STM32CubeMX源自意法半导体,旨在通过减少开发工作量、时间和成本,从而最大限度地复用软件并缩短创建目标系统的时间,让开发人员的生活更轻松。通过STM32CubeMX图形软件配置工具生成单片机工程代码,本文主要介绍如何在CubeMX上新建一个项目工程。
一、STM32CubeMX
关于STM32CubeMX软件的介绍,包括其功能特性、下载安装流程、软件配置操作、以及相关出现的问题请参考上一篇博文STM32CubeMX图形化工具开发介绍 - CSDN博客,里面有详细的介绍,这里在不作说明介绍。
二、新建工程
在window桌面打开STM32CubeMX软件,如下所示。
1.创建工程
打开软件后,显示如下,在New Project处,点击Start My from MCU开始选择一款处理器芯片建立一个工程。

出现如下提示,等待下载完即可。


2.选择芯片型号
在上面new Project界面上,输入所用到的处理器芯片型号进行搜索,双击搜索结果中的目标芯片型号,在下方MCUs List: Item 处,即可进入配置。

处理器芯片配置界面如下。

3.Pinout引脚分配
在上图处理器芯片配置界面上,选择Pinout & configuration进行配置,Pinout配置主要包括System Core系统核配置、Analog模拟量配置、Timer定时器配置、Connectivity通讯接口配置、Multimedia多媒体配置、Middleware第三方插件配置等等,不一一举例,如下所示。

1.SYS配置
在System Core上,点击SYS配置,在Debug调试选项上,选择JTAG 5 pin5模式,然后定时器基准源选择系统定时器,具体设置如下所示。

2.RCC配置
在System Core上,点击RCC配置,在HSE外部高速时钟源上选择Crystal/Ceramic Resonator外部晶振模式,具体设置如下所示。

3.定时器配置
根据自己的需求,可配置可不配置,如要配置的话,可参考如下,关于其参数设置,最好根据芯片手册以及自己的需求进行设置。


4.GPIO引脚配置
根据自己的需求,可配置可不配置,如要配置的话,可参考如下,关于其参数设置,最好根据芯片手册以及自己的需求进行设置。

5.中断配置
根据自己的需求,可配置可不配置,不配置系统会默认,如要配置的话,可参考如下,关于其参数设置,最好根据芯片手册以及自己的需求进行设置。

6.通讯接口配置
根据自己的需求,可配置可不配置,如要配置的话,可参考如下,关于其参数设置,最好根据芯片手册以及自己的需求进行设置。这里提供的是前面的一篇博文网络通讯之STM32CubeMX实现LWIP项目设计-CSDN博客的设置方法,可进行参考。

7.插件Middleware配置
在Middleware选项区,cubeMX提供了一些第三方插件,如FATFS文件系统、freertos实时操作系统、lwip等等,用户可以根据自己的需求,是否使用的到,如有需要, 可参考如下前面的一篇博文网络通讯之STM32CubeMX实现LWIP项目设计-CSDN博客的设置方法。关于其参数设置,最好根据芯片手册以及自己的需求进行设置。

4.Clock时钟树配置
根据F407芯片手册,处理器最大时钟为168MHz,根据需求我们选择外部晶振时钟为8MHz,然后在cubeMX界面上完成工程时钟书树的配置,结果如下,我们配置外部时钟为8MHz,分频系数为8,倍频系数为320,处理器的时钟为160MHz(不超过168MHz),APB1分频系数为4,APB2分频系数为2,得出APB1为40MHz,APB2为80MHz,具体设置如下所示。

注意在配置外部晶振时,要先Pinout引脚分配界面上,完成RCC配置,并在HSE外部高速时钟源上选择Crystal/Ceramic Resonator外部晶振模式。
5.工程管理ProjectManage
进入工程管理页面Project Manage,如下所示。

1.项目工程配置
在工程管理Project Manage页面,选择Project选项,在里面填写工程名称、存放目录、开发环境、堆栈大小、固件包等等信息,具体设置如下所示。

2.代码生成配置
在工程管理Project Manage页面,选择Code Generator选项,完成生成工程代码的一些功能配置,具体设置如下所示。

3.代码生成配置
在工程管理Project Manage页面,选择Advanced Settings选项,可以查看之前的设置生成的HAL驱动文件、以及使用到时钟、GPIO引脚、通讯接口或外设功能初始化函数,具体设置如下所示。

至此,已完成新建工程所需全部配置。
三、生成工程
处理器芯片配置界面,选择GENERATE CODE用来生成工程代码,如下所示。

点击生成工程代码按钮后,会弹出如下选项,根据自己的习惯选择即可。

总结
大家需要注意,STM32CubeMX生成的main.c文件中,有很多地方有“/* USER CODE BEGIN X */”和“/* USER CODE END X */”格式的注释,我们在这些注释的BEGIN和END之间编写代码,那么重新生成工程之后,这些代码会保留而不会被覆盖。
下面提供的代码,基于STM32F407ZGT芯片编写,可直接在原子开发板上运行,也可运行在各工程项目上,但需要注意各接口以及相应的引脚应和原子开发板上保持一致。相应的代码链接:单片机STM32F407-Case程序代码例程-CSDN文库
相关文章:
STM32之CubeMX新建工程操作(十八)
STM32F407 系列文章 - STM32CubeMX(十八) 目录 前言 一、STM32CubeMX 二、新建工程 编辑 1.创建工程 2.选择芯片型号 3.Pinout引脚分配 1.SYS配置 2.RCC配置 3.定时器配置 4.GPIO引脚配置 5.中断配置 6.通讯接口配置 7.插件Middleware配…...
Postgresql源码(140)理解PG的编译流程(make、Makefile、Makefile.global.in)
PG16 PG中使用的makefile看起来代码比较多,但是实际逻辑比较简单,这里做一些抽象总结。 总结 Makefile.global.in的$(recurse)宏自动生成了target,可以方便的进入内存目录进行编译。 all: all-common-recurse all-common-recurse: submak…...
logback日志自定义占位符
前言 在大型系统运维中,很大程度上是需要依赖日志的。在java大型web工程中,一般都会使用slf4jlogback这一个组合来实现日志的管理。 logback中很多现成的占位符可以可以直接使用,比如线程号【%t】、时间【%d】、日志等级【%p】,…...
Vue平台开发三——项目管理页面
前言 对于多个项目的使用,可能需要进行项目切换管理,所以这里创建一个项目管理页面,登录成功后跳转这个页面,进行选择项目,再进入Home页面展示对应项目的内容。 一、实现效果图预览 二、页面内容 功能1、项目列表展…...
用于牙科的多任务视频增强
Multi-task Video Enhancement for Dental Interventions 2022 miccai Abstract 微型照相机牢牢地固定在牙科手机上,这样牙医就可以持续地监测保守牙科手术的进展情况。但视频辅助牙科干预中的视频增强减轻了低光、噪音、模糊和相机握手等降低视觉舒适度的问题。…...
【Node.js]
一、概述 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 ,使用了一个事件驱动、非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。 官网地…...
【Elasticsearch】腾讯云安装Elasticsearch
Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么?IK分词器有几种模式?IK分词器如何拓展词条?如何停用词条? 认识Elasticsearch Elasticsearch的官方网站如下 Elasticsearch官网 Ela…...
【网络协议】ACL(访问控制列表)第一部分
概述 网络安全在网络中的重要性不言而喻。本文(即第一部分)将介绍ACL的基本概念以及标准ACL的配置。第二部分将重点讨论扩展ACL、其他相关概念以及ACL的故障排除。 文章目录 概述ACL定义数据包过滤ACLACL配置指导原则配置ACL的三条规则ACL功能ACL工作原…...
2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计
题目来源:buuctf [RCTF2015]EasySQL1 目录 一、打开靶机,整理信息 二、解题思路 step 1:初步思路为二次注入,在页面进行操作 step 2:尝试二次注入 step 3:已知双引号类型的字符型注入,构造…...
Spring Boot 整合 Knife4j:打造更优雅的 API 文档
在现代 Web 应用开发中,API 文档的重要性不言而喻。清晰、准确、易用的 API 文档不仅可以方便开发者理解和使用 API,还能提高团队协作效率。Knife4j 是一个基于 Swagger 的增强型 API 文档工具,它可以为 Spring Boot 项目生成美观、易于交互的…...
Kafka 源码分析(一) 日志段
首先我们的 kafka 的消息本身是存储在日志段中的, 对应的源码是下面这段代码: class LogSegment private[log] (val log: FileRecords,val lazyOffsetIndex: LazyIndex[OffsetIndex],val lazyTimeIndex: LazyIndex[TimeIndex],val txnIndex: TransactionIndex,val baseOffset:…...
javaEE初阶————多线程初阶(2)
今天给大家带来第二期啦,保证给大家讲懂嗷; 1,线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的,或者即将工作,正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …...
Redis学习笔记1【数据类型和常用命令】
Redis学习笔记 基础语法 1.数据类型 String: 最基本的类型,可以存储任何数据,例如文本或数字。示例值为 hello world。Hash: 用于存储键值对,适合存储对象或结构体。示例值为 {"name": "Jack", "age": 21}。…...
JavaWeb项目——查询角色列表到页面中——转发模式
一、知识点 1、req.getRequestDispatch与resp.sendRedirect跳转方式的比较 一、实现原理 1、req.getRequestDispatcher: 属于服务器端跳转,在服务器内部将请求转发给另一个资源(如另一个 Servlet 或 JSP 页面)。调用 getReques…...
feign调用跳过HTTPS的SSL证书校验配置详解
一、问题抛出 如果不配置跳过SSL证书校验,当Feign客户端尝试连接到一个使用自签名证书的服务器时,可能会抛出类似以下的异常: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building faile…...
今天也是记录小程序进展的一天(破晓时8)
嗨嗨嗨朋友们,今天又来记录一下小程序的进展啦!真是太激动了,项目又迈出了重要的一步,231啦!感觉每一步的努力都在积累,功能逐渐完善,离最终上线的目标越来越近了。大家一直支持着这个项目&…...
SQL-leetcode—1084. 销售分析 III
1084. 销售分析 III 表: Product --------------------- | Column Name | Type | --------------------- | product_id | int | | product_name | varchar | | unit_price | int | --------------------- product_id 是该表的主键(具有唯一值的列&…...
Linux C\C++编程-文件位置指针与读写文件数据块
【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客 《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 Linu…...
Flask简介与安装以及实现一个糕点店的简单流程
目录 1. Flask简介 1.1 Flask的核心特点 1.2 Flask的基本结构 1.3 Flask的常见用法 1.3.1 创建Flask应用 1.3.2 路由和视图函数 1.3.3 动态URL参数 1.3.4 使用模板 1.4 Flask的优点 1.5 总结 2. Flask 环境创建 2.1 创建虚拟环境 2.2 激活虚拟环境 1.3 安装Flask…...
【自动化测试】—— Appium使用保姆教程
目录 一. 连接手机 1. 授权 2. 调试 3. 获取参数 二. 启动APP 1. 启动Appium服务 2. 启动Appium Inspector 3. 配置Appium Inspector 三. 功能说明 1. 主菜单功能 2. 快照视图菜单 3. 元素视图菜单 四. 常见问题 1. appPackage有多个设备时 一. 连接手机 1. 授权 首先将手机的开…...
Godot引擎PCK文件解析与资源提取指南:从入门到专家
Godot引擎PCK文件解析与资源提取指南:从入门到专家 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 一、基础认知:PCK文件的数字档案馆架构 Godot引擎的PCK文件(P…...
脑机接口(BCI)全景解析:从原理到产业,开发者入局指南
脑机接口(BCI)全景解析:从原理到产业,开发者入局指南 引言 从帮助渐冻症患者“开口说话”,到用“意念”操控无人机,脑机接口(BCI)正从科幻走进现实,成为“AI for Scienc…...
Cyber Engine Tweaks终极优化指南:5个简单技巧快速提升《赛博朋克2077》AMD处理器性能
Cyber Engine Tweaks终极优化指南:5个简单技巧快速提升《赛博朋克2077》AMD处理器性能 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks Cyber En…...
PINN实战:如何用PyTorch自定义神经网络结构求解偏微分方程?
PINN实战:PyTorch自定义神经网络架构设计指南 在科学计算领域,物理信息神经网络(PINN)正逐渐成为求解偏微分方程(PDE)的新范式。与传统的数值方法不同,PINN将物理方程直接编码到神经网络中,通过自动微分技术实现端到端的求解。本文…...
Arduino非阻塞编程:Pin与WaitDo轻量级嵌入式工具库
1. 项目概述HDW-Utils 是一个面向 Arduino 平台的轻量级嵌入式工具库,其核心设计目标并非提供底层硬件驱动,而是解决嵌入式开发中高频出现的代码重复性、结构松散性与阻塞式延时滥用三大工程痛点。该库以“硬件开发者的实用主义”为出发点,通…...
QGIS属性表双向操作指南:导出Excel做分析,再导回地图做可视化(避坑数据丢失)
QGIS属性表双向操作指南:导出Excel做分析,再导回地图做可视化(避坑数据丢失) 在空间数据分析领域,QGIS作为开源GIS软件的标杆,其属性表与Excel的双向交互能力常被低估。许多用户习惯将空间数据的属性导出至…...
告别暴力搜索!用DiffDock的扩散模型5分钟搞定分子对接,效率提升12倍
5分钟颠覆传统:DiffDock如何用扩散模型重构分子对接效率天花板 在药物研发的漫长链条中,分子对接就像一把精准的钥匙开锁过程——需要找到小分子配体与靶标蛋白最契合的三维结合方式。传统方法如同盲人摸象,耗费数小时在亿万种可能中暴力搜索…...
NDI技术完全上手指南:从原理到实践的6步进阶之路
NDI技术完全上手指南:从原理到实践的6步进阶之路 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 网络视频传输技术正在重塑内容创作的方式,而NDI&…...
Cesium实战指南4-Polylines图元高级应用解析
1. Polylines图元基础概念与核心价值 在三维地理可视化领域,Polylines(折线)是最基础也最常用的图元之一。简单来说,它就是连接多个点的线段集合,但千万别小看这个基础功能——从飞机航线到河流走向,从城市…...
PaveBench:一个用于路面病害感知与交互式视觉语言分析的多功能基准
作者 Dexiang Li, Zhenning Che, Haijun Zhang∗, Dongliang Zhou∗, Zhao Zhang, Yahong Han ∗ 通讯作者 https://arxiv.org/pdf/2604.02804v1 摘要 路面状况评估对道路安全与养护至关重要。现有研究已取得显著进展。然而,大多数研究侧重于分类、检测和分割等传统…...

