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

news/2025/1/8 13:55:59/

相关文章:

【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.ppmy.cn/news/1561565.html

相关文章

MySQL使用触发器进行备份

触发器脚本备份 实现方案: 1.配置mysql调用外部脚本的插件mysqludf 链接:https://pan.baidu.com/s/1MCrf1u_SRWwcZoxM9JDNiw 提取码:kgt0 解压 2.解压后放进: mysql安装路径/lib/plugin/ 3.在mysql执行命令创建自定义函数&…

Win11+WLS Ubuntu 鸿蒙开发环境搭建(二)

参考文章 penHarmony南向开发笔记(一)开发环境搭建 OpenHarmony(鸿蒙南向开发)——标准系统移植指南(一) OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(二&…

分享3个国内使用正版GPT的网站【亲测有效!2025最新】

1. molica 传送入口:https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口:https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口:https://ai-to.cn/url/?ulihaimao

在Virtuoso中使用Clisoft SOS

在Virtuoso中使用Clisoft SOS 由于本人也是刚接触,后续用到其他的再进行更新,博客中可能有地方写的不好,欢迎大佬指点。 一、打开virtuoso 创建一个cds.lib(不受SOS版本控制) [bhlumaster /proj/trinity/work/cds/bh…

HNU人工智能期末复习知识点整理

考纲 选择题 ( 30 分 ) (30分) (30分): 15 15 15个单选 选择题范围为 PPT 内容+课本内容 计算、简答、推理题 ( 70 分 ) (70分) (70分): 4 4 4个大题,每个大题 2 ∼ 3 2 \sim 3 2∼3小问 4 4 4个大题分别为:机器学习、…

Java:缓存:LinkedHashMap实现Lru

文章目录 Lru源码分析 ​​​​​​​​​​​​​​LinkedHashMap维护一个LinkedHashMapEntry<K,V>的双向链表对LinkedHashMap的增删查操作,也会对链表进行相同的操作并改变链表的链接顺序小结使用方法​​​​​​​​​​​​​​应用总结Lru Least Recently Used,…

2025年直播电商系统源码开发趋势:如何进行跨境电商APP搭建?

企业在搭建跨境电商APP时&#xff0c;如何抓住技术趋势与市场需求&#xff0c;打造差异化竞争力&#xff1f;本文将从直播电商系统源码开发的趋势、核心功能需求以及开发策略三个方面进行详细探讨。 趋势一&#xff1a;系统开发趋向模块化与低代码化 模块化和低代码开发是当前…

【51单片机】02LED流水灯实验

点亮你的LED 一、点亮第一个LED1.GPIO介绍2.P1、P2、P3端口 二、LED实验2.尝试点亮LED3.LED流水灯 一、点亮第一个LED 1.GPIO介绍 这块内容这里可以做简单的了解&#xff0c;与数电知识强相关。后续可以再回过头来学习 GPIO (general purpose input output) 通用输入输出端口…