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

相关文章:

【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.rhkb.cn/news/503603.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5实现喜庆的新年快乐网页源码

HTML5实现喜庆的新年快乐网页源码 前言一、设计来源1.1 主界面1.2 关于新年界面1.3 新年庆祝活动界面1.4 新年活动组织界面1.5 新年祝福订阅界面1.6 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现喜庆的新年快乐网页源码,春节新年网…

鸿蒙的APP真机调试以及发布

目录: 1、创建好鸿蒙项目2、创建AGC项目3、实现自动签名3.1、手动方式创建签名文件和密码 4、运行项目5、无线真机调试 1、创建好鸿蒙项目 2、创建AGC项目 (1)在File->Project Structure->Project->Signing Configs中进行登录。(未…

概率基本概念 --- 离散型随机变量实例

条件概率&独立事件 随机变量 - 离散型随机变量 - 非离散型随机变量 连续型随机变量奇异性型随机变量 概率表示 概率分布函数概率密度函数概率质量函数全概率公式贝叶斯公式 概率计算 数学期望方差协方差 计算实例 假设有两个离散型随机变量X和Y,它们代…

【Linux】Linux指令apt、systemctl、软链接、日期时区

一、apt命令 1.1 Linux系统的应用商店 操作系统安装软件有许多种方式,一般分为: 下载安装包自行安装 如win系统使用exe文件、msi文件等如mac系统使用dmg文件、pkg文件等 系统的应用商店内安装 如win系统有Microsoft Store商店如mac系统有AppStore商…

OSI模型的网络层中产生拥塞的主要原因?

( 1 )缓冲区容量有限;( 1.5 分) ( 2 )传输线路的带宽有限;( 1.5 分) ( 3 )网络结点的处理能力有限;( 1 分…

C++list

1. list的介绍及使用 1.1list的介绍 list的文档介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双相迭代 2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过…

Java 日期时间格式化标准

文章目录 Java日期时间格式化符号ISO 8601中的日期时间ISO 8601标准的定义ISO 8601日期时间格式 周数年份ISO 8601中的周数年份Java中的周数年份 Java跨年日期格式化BUG注意事项 Java日期时间格式化符号 JDK官网截图: 格式化符号梳理: 符号描述符号用…

【计算机视觉】单目深度估计模型-Depth Anything-V2

概述 本篇将简单介绍Depth Anything V2单目深度估计模型,该模型旨在解决现有的深度估计模型在处理复杂场景、透明或反射物体时的性能限制。与前一代模型相比,V2版本通过采用合成图像训练、增加教师模型容量,并利用大规模伪标签现实数据进行学…

如何在Windows上编译OpenCV4.7.0

前言 ​ 参考:Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d 这里在其基础上还出现了一些问题,仅供参考。 正文 一、环境 1、win10 2、cmake-gui 3、opencv4.7.0 4、VS2019 二、编译过程 1、下载需要的文件: 通…

ros2-4.1 服务通信介绍

服务是ROS图中节点之间的另一种通信方法。服务分为客户端和服务端,客户端发送请求给服务端,服务端可以根据客户端的请求做一些处理,然后返回结果给客户端。也称为为请求-响应模型。 服务和话题的不同之处,话题是没有返回的&#…

代码随想录算法训练营第四十天 | 股票问题

LeetCode 121.买卖股票的最佳时机&#xff1a; 文章链接 题目链接&#xff1a;121.买卖股票的最佳时机 思路 方法1&#xff1a;暴力 看到题目最直接的想法是双层遍历求最大区间差 class Solution:def maxProfit(self, prices):if len(prices) < 1:return 0result 0for…

EyeSoothe: Your Ultimate Eye Health Companion

In today’s screen-dominated world, our eyes deserve extra care. EyeSoothe is the ultimate app for anyone looking to track their vision, rejuvenate tired eyes, and find the perfect eyewear—all powered by intelligent AI and packed into one seamless app. h…

AnaConda下载PyTorch慢的解决办法

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

【python】matplotlib(radar chart)

文章目录 1、功能描述和原理介绍2、代码实现3、效果展示4、完整代码5、多个雷达图绘制在一张图上6、参考 1、功能描述和原理介绍 基于 matplotlib 实现雷达图的绘制 一、雷达图的基本概念 雷达图&#xff08;Radar Chart&#xff09;&#xff0c;也被称为蛛网图或星型图&…

鸿蒙APP之从开发到发布的一点心得

引言&#xff1a; 做鸿蒙开发大概有1年左右时间了&#xff0c;从最开始的看官方文档、看B站视频&#xff0c;到后来成功发布两款个人APP&#xff08;房贷计算极简版、时简时钟 轻喷&#xff0c;谢谢&#xff09;。简单描述一下里边遇到的坑以及一些经历吧。 学习鸿蒙开发 个…

Clisoft SOS与CAD系统集成

Clisoft SOS与CAD系统集成 以下内容大部分来自官方文档&#xff0c;目前只用到与Cadence Virtuoso集成&#xff0c;其他还未用到&#xff0c;如有问题或相关建议&#xff0c;可以留言。 与Keysight ADS集成 更新SOS客户端配置文件sos.cfg&#xff0c;以包含支持ADS的模板&am…

IP查询于访问控制保护你我安全

IP地址查询 查询方法&#xff1a; 命令行工具&#xff1a; ①在Windows系统中&#xff0c;我们可以使用命令提示符&#xff08;WINR&#xff09;查询IP地址&#xff0c;在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息&#xff1b; ②在Linux系统中&…

人工智能训练师一级(高级技师)、二级(技师)考试指南

随着经济快速发展&#xff0c;人工智能技术在制造业、交通运输、农业、医疗健康、金融服务、物流配送以及城市服务等多个领域得到了广泛的应用。不仅带来产业的转型升级&#xff0c;更是对具备相应技能的人工智能训练师需求的激增。 根据教育部发布的《关于做好职业教育“…

ArmSoM RK3588/RK3576核心板,开发板网络设置

ArmSoM系列产品都搭配了以太网口或WIFI模块&#xff0c;PCIE转以太网模块、 USB转以太网模块等&#xff0c;这样我们的网络需求就不止是上网这么简单了&#xff0c;可以衍生出多种不同的玩法。 1. 网络连接​ 连接互联网或者组成局域网都需要满足一个前提–设备需要获取到ip&a…

patchwork++地面分割学习笔记

参考资料&#xff1a;古月居 - ROS机器人知识分享社区 https://zhuanlan.zhihu.com/p/644297447 patchwork算法一共包含四部分内容&#xff1a;提出了以下四个部分&#xff1a;RNR、RVPF、A-GLE 和 TGR。 1&#xff09;基于 3D LiDAR 反射模型的反射噪声消除 (RNR)&#xff…