【STM32+CubeMX】 新建一个工程(STM32F407)

news2025/1/9 1:19:25

相关文章:

【HAL库】 STM32CubeMX 教程 1 --- 下载、安装


目录

第一部分、新建工程 

第二部分、工程文件解释

第三部分、编译验证工程


友情约定:本系列的前五篇,为了方便新手玩家熟悉CubeMX、Keil的使用,会详细地截图每一步CubeMX、Keil的操作,并做上标记。之后的篇章,仅截图主要步骤页面。希望新手玩家熟记本篇的基本操作。


第一部分、新建工程

步骤 8-1:新建工程(基于芯片型号)

  • 打开 CubeMX > 选择芯片型号。
  • 也可以通过菜单栏:File > NewProject

步骤 8-2:搜索芯片型号

  • 输入芯片型号,如407VE,右边列表将会显示详尽型号。
  • 双击芯片型号,即可进入配置。

步骤 8-3:配置Debug调试方式

  • 最多人漏做、错做的 4 项中,这是其一;  
  • 必须养成习惯,新建工程时,先配置Debug选项, 即调试模式。
  • 默认是关闭的,必须配置为:Serial Wire。通用STLink、JLink、CMSIS DAP等仿真器。
  • 如果忘记了此配置,将会导致:烧录一次程序后,芯片无法再烧录(按图中操作解锁芯片)。

步骤 8-4:晶振源

  • 最多人漏做、错做的 4 项中,这是其二;  
  • HSE,外部高速晶振: Crystal/Ceramic Resonator
  • LSE ,外部低速晶振:用于实时时钟,不使能,以后用到时再打开CubeMX增加配置置。

步骤 8-5:配置时钟树

  • 下图参数,通用STM32F407xx系列 。
  • 最多人漏做、错做的 4 项中,这是其三;   
  • 下图中 1、3 这两项值,注意填写真实晶振值。可以查看晶振上丝印, 也可以查看原理图。
  • 在配置F407芯片时,软件上默认是25M的值,但是,市面上F407板子,常用 8M、25M 这两种不同的晶振,一定要注意区分。如果搞错了,程序可能无法运行、通信失败等等。 
晶振值输入分频输出倍频输出分频USB分频APB1分频APB2分频系统时钟
8 或 25 8 或 253362742168MHz

步骤 8-6:工程管理

进入工程管理页面,这一页要设置3个地方:工程名称、存放目录、开发环境。

  • 最多人漏做、错做的 4 项中,这是其 四;     
  • 重点注意:工程存放位置、工程名称,不能使用中文!!!
  • 开发环境:选MDK-ARM,  即生成Keil需要的工程文件。
  • 堆栈大小:改成0x1000。特别是 Stack,务必>=0x1000,以避免工程以后使用FreeRTOS、LVGL时,内存溢出等编译器也无法发现的错误,这类bug最难排查。

步骤 8-7:代码配置

这一页,打勾两个选择:

  • 标记2:只复制需要的库文件,可以有效控制代码体积。
  • 标记3:为各种外设生成独立的C、h文件:倘若不打勾,外设的生成代码会堆在main.c中。

        至此,已完成新建工程所需全部配置。

        是的,工程上的配置,就这么简单。

        至于添加LED、TIM等外设功能配置,为了明确“工程配置”的最简操作,后篇再示范。

        总结一下新建工程时,主要的流程:

        芯片型号 > Degub模式 > 晶振源 > 时钟树 > 工程参数

        最后,我们点击按钮,生成工程!

步骤 8-8:生成工程

        稍等数秒生成完成后,会弹出提示窗:

        Open Folder: 打开工程目录文件夹。

        Open Project: 使用Keil打开工程,进入编辑。

        注意:如果设置的工程存放目录有中文,弹出的窗体就有点区别了,建议修改配置。

操作技巧:

  • 在刚才的软件配置中,我们使用的是英文的目录路径、英文的工程名称。
  • 工程的第一次生成时,必须是英文路径、名称 。否则生成时,会缺失文件。
  • 当工程生成后,可以把工程文件夹,修改成中文名称。也可以,把工程文件夹复制到其它带中文的路径中存放,以方便管理。
  • 但是,不能修改:工程内的子文件夹名称、文件名称!否则工程无法正常打开。


第二部分、工程文件解释

双击打开工程目录,不管哪种STM32芯片, 文件结构都基本相同,如下图:

文件、文件夹解释:

Core用户平时要编写的文件,都在这文件夹里,如main.c
Drives芯片内核支持文件、 HAL库文件。都不用修改的
MDK-ARM工程入口文件、仿真调试记录文件
工程名称.iocCubeMX的配置文件,双击它,就可以再次对工程进行配置

当以后需要启用、增删某些芯片功能时,再次双击蓝色的ioc文件,就能再次进入CubeMX配置。

常用的,是 “MDK-ARM"这个文件夹,打开后,可以看到绿色图标的keil工程文件。

双击这个绿色图标的文件,即可打开keil,进行工程代码的编辑。

startup_st32f407xx.s传说中的启动文件,不用管它,不用修改的
工程名称.uvprojx (绿色图标)工程入口文件,双击它即可打开Keil编辑代码

概念区分

CubeMX: 配置工程; 生成指定功能的初始化代码、底层代码; 

Keil:  编写具体的业务代码。

其实用keil也能新建、配置工程,编写任何初始化、底层代码,但用CubeMX来做,更快、更省事、更直观。

CubeMX更大的意义在于,我们能方便在各个型号芯片间游走,因为不同型号的芯片,配置操作是大致相同的、生成的代码文件结构是相同的、函数名称是相同的。


第三部分、编译验证工程

步骤 2-1:打开工程

        双击文件夹中的绿色图标文件,将进入keil工程。 

        Keil软件布局、常用按钮如下图。     

        双击左侧文件管理器中的 Core 文件夹,其下,有常用的main.c、it.c等文件。

        双击main.c,即可在代码编辑区中打开进行编辑。

步骤 2-2:编译工程

        无需做其它环境配置、参数设置。

        点击上图中 工具栏的 “编译” 按钮,即可对工程进行编译。

        等待编译完成后,信息中结果为:0 Error, 即表示CubeMX生成工程成功,如下图:

        如果,在CubeMX配置时,使用了中文路径、名称,就会出再各种错误,如缺少启动文件等。

        至此,咱的第一个工程,已成功地建成了!

        为了清晰界定每一项操作,点亮LED、配置烧录器、烧录等等必备技能,咱们拆篇再独立示范!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

el-date-picker 不响应change事件的解决办法

前言 接到需要把element plus组件的日期时间选择器的input输入框展示隐藏,遇到点击确认按钮change事件不被触发问题,解决办法如下: ①visible-change的回调参考 即根据visible-change的方法里的回调参数进行需要操作 const visibleChange …

api开发如何在代码中使用京东商品详情接口的参数?

选择编程语言和相关工具 以 Python 为例,你可以使用requests库来发送 HTTP 请求获取接口数据。如果是 Java,可以使用OkHttp等库。 Python 示例 假设你已经安装了requests库,以下是一个简单的代码示例来获取和使用京东商品详情接口参数&#…

【docker系列】可视化Docker 管理工具——Portainer

1. 介绍 Portainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录…

机器学习基础-大语言模型

目录 大语言模型的基本概念 “大”体现在什么地方? 预训练微调两阶段的基本流程和作用 第一阶段:利用语言模型进行无监督预训练 第二阶段:通过监督微调的模式解决下游任务 BERT模型中MLM和NSP机制基本概念 MLM NSP Prompt学习的基本概…

Ubuntu挂载Windows 磁盘,双系统

首先我们需要在终端输入这个命令,来查看磁盘分配情况 lsblk -f 找到需要挂载的磁盘,检查其类型( 我的/dev/nvme2n1p1类型是ntfs,名字叫3500winData) 然后新建一个挂载磁盘的目录,我的是/media/zeqi/3500wi…

Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解

文章目录 模式介绍优缺点适用场景结构案例实现注意事项 模式介绍 有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此…

如何很快将文件转换成另外一种编码格式?编码?按指定编码格式编译?如何检测文件编码格式?Java .class文件编码和JVM运行期内存编码?

如何很快将文件转换成另外一种编码格式? 利用VS Code右下角的"选择编码"功能,选择"通过编码保存"可以很方便将文件转换成另外一种编码格式。尤其,在测试w/ BOM或w/o BOM, 或者ANSI编码和UTF编码转换,特别方便。VS文件另…

AnaConda下载PyTorch慢的解决办法

使用Conda下载比较慢,改为pip下载 复制下载链接到迅雷下载 激活虚拟环境,安装whl,即可安装成功 pip install D:\openai.wiki\ChatGLM2-6B\torch-2.4.1cu121-cp38-cp38-win_amd64.whl

opencv摄像头标定程序实现

摄像头标定是计算机视觉中的一个重要步骤,用于确定摄像头的内参(如焦距、主点、畸变系数等)和外参(如旋转矩阵和平移向量)。OpenCV 提供了方便的工具来进行摄像头标定。下面分别给出 C 和 Python 的实现。 1. C 实现…

UE5AI感知组件

官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…

Python生日祝福烟花

1. 实现效果 2. 素材加载 2个图片和3个音频 shoot_image pygame.image.load(shoot(已去底).jpg) # 加载拼接的发射图像 flower_image pygame.image.load(flower.jpg) # 加载拼接的烟花图 烟花不好去底 # 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大 shoo…

智能手机租赁系统全新模式改变消费习惯与商家盈利路径

内容概要 智能手机租赁系统的崛起,让我们瞄到了一个消费市场的新风向标。想象一下,传统上人们总是为了最新款手机奋不顾身地排队、借钱甚至是透支信用卡。现在,通过灵活的租赁选项,消费者可以更加随意地体验高科技产品&#xff0…

【简博士统计学习方法】第1章:3. 统计学习方法的三要素

3. 统计学习方法的三要素 3.1 监督学习的三要素 3.1.1 模型 假设空间(Hypothesis Space):所有可能的条件概率分布或决策函数,用 F \mathcal{F} F表示。 若定义为决策函数的集合: F { f ∣ Y f ( X ) } \mathcal{F…

牛客网刷题 ——C语言初阶(2分支和循环-for)——打印菱形

1. 题目描述 用C语言在屏幕上输出以下图案: 2. 思路 我是先上手,先把上半部分打印出来,然后慢慢再来分析,下面这是我先把整个上半部分打印出来,因为空格不方便看是几个,这里先用&代替空格了 然后这里…

STM32——系统滴答定时器(SysTick寄存器详解)

文章目录 1.SysTick简介2.工作原理3.SysTick寄存器4.代码延时逻辑5.附上整体代码6.一些重要解释 1.SysTick简介 Cortex-M处理器内集成了一个小型的名为SysTick(系统节拍)的定时器,它属于NVIC的一部分,且可以产生 SysTick异常(异常类型#15)。SysTick为简单的向下计数的24位计数…

《Opencv》信用卡信息识别项目

目录 一、项目介绍 二、数据材料介绍 1、模板图片(1张) 2、需要处理的信用卡图片(5张) 三、实现过程 1、导入需要用到的库 2、设置命令行参数 3、模板图像中数字的定位处理 4、信用卡图像处理 5、模板匹配 四、总结 一…

密码学科普

1 信息传输中的安全隐患 1. 窃听 解决方案:明文加密,X只能窃听到密文 2. 假冒 解决方案:消息认证码或者数字签名 3. 篡改 解决方案:消息认证码或者数字签名 4. 事后否认 解决方案:数字签名 2 对称加密/非对称加密 1…

复合机器人助力手机壳cnc加工向自动化升级

在当今竞争激烈的制造业领域,如何提高生产效率、降低成本、提升产品质量,成为众多企业面临的关键挑战。尤其是在手机壳 CNC 加工这一细分行业,随着市场需求的持续增长,对生产效能的要求愈发严苛。而复合机器人的出现,正…

爬虫学习记录

1.概念 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程 通用爬虫:抓取的是一整张页面数据聚焦爬虫:抓取的是页面中的特定局部内容增量式爬虫:监测网站中数据更新的情况,只会抓取网站中最新更新出来的数据 robots.txt协议: 君子协议,网站后面添加robotx.txt…

黑马头条平台管理实战

黑马头条 08平台管理 1.开始准备和开发思路1.1.开发网关1.2编写admin-gateway 代码 2.开发登录微服务2.1编写登录微服务 3.频道管理4.敏感词管理5.用户认证审核6.自媒体文章人工审核99. 最后开发中碰到的问题汇总1.关于nacos 配置 问题2.在开发频道管理新增频道后端无法接收到前…