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文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957792.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark任务提交流程

当包含在application master中的spark-driver启动后,会与资源调度平台交互获取其他执行器资源,并通过反向注册通知对应的node节点启动执行容器。此外,还会根据程序的执行规划生成两个非常重要的东西,一个是根据spark任务执行计划生…

GenTact Toolbox:为Franka Research 3机械臂定制触觉 “皮肤” 的创新方案

前言: 在机器人的发展历程中,为其配备全身触觉皮肤一直是一项充满挑战的任务。传统的触觉皮肤设计往往采用模块化、“一刀切” 的方式,虽然具备一定通用性,但无法充分考虑机器人独特的形状以及其操作环境的特殊需求。在复杂的现实…

设计模式Python版 单例模式

文章目录 前言一、单例模式二、单例模式实现方式三、单例模式示例四、单例模式在Django框架的应用 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模…

JVM面试题解,垃圾回收之“对象存活判断”剖析

一、JVM怎么判断一个类/对象是不是垃圾? 先来说如何判断一个对象是不是垃圾 最常用的就是引用计数法和可达性分析 引用计数法 引用计数法为每个对象维护一个计数器来跟踪有多少个引用指向该对象。每当创建一个新的引用指向某个对象时,计数器加1&…

【Django开发】django美多商城项目完整开发4.0第14篇:Docker使用,1. 在Ubuntu中安装Docker【附

本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后…

14-5C++的deque容器

(一)deque的基础知识 1.deque是“double-ended queue"的缩写和vector-样都是STL的容器 2.deque是双端数组而vector是单端的 3.deque在接口上和vector非常相似,在许多操作的地方可以直接替换 4.deque可以随机存取元素(支持索引值直接存取&#xf…

鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)

目录 ​1)仓颉的SDK下载 1--进入仓颉的官网 2--点击图片中的下载按钮 3--在新跳转的页面点击即刻下载 4--下载 5--找到你们自己下载好的地方 6--解压软件 2)仓颉编程环境配置 1--找到自己的根目录 2--进入命令行窗口 3--输入 envsetup.bat 4--验证是否安…

grafana新增email告警

选择一个面板 比如cpu 新增一个临界点表达式 input选A 就是A的值达到某个临界点 触发告警 我这边IS ABOVE0.15就是cpu大于0.15%就触发报警,这个值怎么填看指标的值显示 这里要设置一下报警条件 这边随便配置下 配置标签和通知,选择你的邮件 看下告警…

springboot自动配置原理(高低版本比较)spring.factories文件的作用

SpringBootApplication public class SpringSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringSecurityApplication.class, args);}}注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Doc…

Spring源码03 - bean注入和生命周期

bean注入和生命周期(面试) 文章目录 bean注入和生命周期(面试)一:getBean的主体思路1:初步思路2:SpringBean的主体思路 二:Spring如何解决循环依赖问题1:三级Map&#xf…

vscode导入模块不显示类型注解

目录结构: utils.py: import random def select_Jrandom(i:int, m:int) -> int:"""随机选择一个不等于 i 的整数"""j iwhile j i:j int(random.uniform(0, m))return jdef clip_alpha(alpha_j:float, H:float, L:f…

浅谈机器学习之基于RNN进行充值的油费预测

浅谈机器学习之基于RNN进行充值的油费预测 引言 随着智能交通和物联网技术的发展,油费预测已成为研究的热点之一。准确的油费预测不仅能帮助车主合理规划出行成本,还可以为油价波动提供参考依据。近年来,递归神经网络(RNN&#…

There is no getter for property named ‘XXX’ in ‘XXXX‘

写了一个POST方法用于新增软件描述信息,报错显示在我的实体类中没有这个属性的getter方法,实体类如下: 报错没有softWare这个属性的getter方法,但是我的实体类中本来就没有这个属性(笑哭...) 后面查了许多资料发现&am…

基于springboot+vue的校园二手物品交易系统的设计与实现

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

H266/VVC 变换编码中大尺寸变换块高频系数置零技术

大尺寸变换块高频系数置零 近年来视频技术有了飞速的变化,视频的分辨率从 1080P 过渡到 4K,并逐渐向发展 8K。为了适应日益增长的视频分辨率,新的编码技术采用了更大尺寸的变换块来提高编码效率,最大变换块大小变成 64x64。变换块…

5989.数字接龙

5989.数字接龙 小蓝最近迷上了一款名为《数字接龙》的迷宫游戏,游戏在一个大小为 NN 的格子棋盘上展开,其中每一个格子处都有着一个 0…K−10…K−1 之间的整数。 游戏规则如下: 从左上角 (0,0) 处出发,目标是到达右下角 (N−1…

Titans: 学习在测试时记忆 - 论文解读与总结

论文地址:https://arxiv.org/pdf/2501.00663v1 本文介绍了一篇由 Google Research 发表的关于新型神经网络架构 Titans 的论文,该架构旨在解决传统 Transformer 在处理长序列时的局限性。以下是对论文的详细解读,并结合原文图片进行说明&…

账号IP属地:依据手机号还是网络环境?

在数字化生活中,账号的IP属地信息往往成为我们关注的一个焦点。无论是出于安全考虑,还是为了满足某些特定服务的需求,了解账号IP属地的确定方式都显得尤为重要。那么,账号IP属地根据手机号还是网络来确定的呢?本文将深…

微信小程序实现自定义日历功能

文章目录 1. 创建日历组件实现步骤:2. 代码实现过程3. 实现效果图4. 关于作者其它项目视频教程介绍 1. 创建日历组件实现步骤: 创建日历组件:首先,你需要创建一个日历组件,包含显示日期的逻辑。样式设计:为…

YOLOv9改进,YOLOv9检测头融合RFAConv卷积,适合目标检测、分割任务

摘要 空间注意力已广泛应用于提升卷积神经网络(CNN)的性能,但它存在一定的局限性。作者提出了一个新的视角,认为空间注意力机制本质上解决了卷积核参数共享的问题。然而,空间注意力生成的注意力图信息对于大尺寸卷积核来说是不足够的。因此,提出了一种新型的注意力机制—…