当前位置: 首页 > article >正文

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

相关文章:

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


目录

第一部分、新建工程 

第二部分、工程文件解释

第三部分、编译验证工程


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


第一部分、新建工程

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

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

  • 输入芯片型号,在搜索列表里,双击目标型号,即可进入配置。

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

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

步骤 8-4:设置晶振源

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

步骤 8-5:配置时钟树

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

USB分频

        平时是灰色不可选状态。当使能了USB功能时,才会变成可设置状态。

步骤 8-6:工程管理

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

  •  易漏易错的 4 项中,这是其四!
  • 重点1:工程生成位置、工程名称,不能使用中文!  否则,生成时会缺少文件,工程无效。
  • 重点2:开发环境,默认是EWARM,改 MDK-ARM,  即Keil工程。
  • 重点3:Stack Size,  栈空间大小,改 0x1000。Heap Size, 默认,除非你用到malloc申请空间。

栈空间大小 - Stack Size。

        在单片机开发中,栈空间大小是一个非常重要的概念。与Java、Python等高级语言不同,单片机的内存资源非常有限,通常只有几十K到几百K。因此,开发者需要特别留意局部数组、变量等占用栈空间的大小,避免栈溢出,导致程序跑飞、卡死。

        为避免以后无意间使用了大数组作为函数变量、函数传参,或者要移植FreeRTOS、LVGL等功能,在配置工程时,先把Stack设置大一点,有备无患。

        注意,栈溢出是编译时无法发现的,这类bug较难排查。

步骤 8-7:代码文件配置

打勾两个选项:

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

至此,基础工程所需,配置完毕。

步骤 8-8:生成工程

稍等片刻,会弹窗:

操作技巧:

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


第二部分、工程文件解释

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

这个目录下,常用的是 ioc文件。

当需要修改工程配置、功能时,双击这个蓝色 ioc 文件,可再次进入CubeMX配置。

文件、文件夹解释:

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

而最常用的,是 “MDK-ARM"这个文件夹。

打开后,如下图,里面有一个绿色图标的 keil 工程文件。

平时就是通过它,打开keil工程,进行代码的编辑。


第三部分、编译验证工程

步骤 2-1:打开工程

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

        Keil 常用按钮,只有三、四个,下图中,圈出了它们的位置,及标示了功能。     

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

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

步骤 2-2:编译工程

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

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

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

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

        

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

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

CubeMX 与 Keil 的作用区分

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

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

其实用keil也能新建、配置工程,编写初始化代码、底层代码。

但通过CubeMX来实现,更直观、更省事。

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


http://www.kler.cn/a/488552.html

相关文章:

  • linux 设置mysql 外网访问
  • 多目标优化算法之一:基于分解的方法
  • 详细分析 Git 分支重命名与同步操作
  • HBuilderX打包ios保姆式教程
  • Centos7 解决Maven scope=system依赖jar包没有打包到启动jar包中的问题(OpenCV-4.10)
  • KCP解读:C#库类图
  • 【权限管理】Apache Shiro学习教程
  • SpringBoot的@Scheduled和@Schedules有什么区别
  • 腾讯云AI代码助手编程挑战赛-可视化飞线图
  • priority_queue优先队列
  • 用AI技术提升Flutter开发效率:ScriptEcho的力量
  • NFC碰一碰发视频源码搭建,支持OEM
  • 0052.基于Springboot+vue社区团购系统+论文
  • Redis 全维度深度剖析:从基础架构到实战应用
  • Vue页面开发和脚手架开发 Vue2集成ElementUI Vue3集成Element Plus
  • 手机的ip地址是根据电话卡归属地定吗
  • 浅聊MySQL中的LBCC和MVCC
  • 《Spring Framework实战》11:4.1.4.2.详细的依赖和配置2
  • PHP语言的学习路线
  • nexus搭建maven私服
  • CI/CD 流水线
  • css小知识:如何使用字体包
  • 高通,联发科(MTK)等手机平台调优汇总
  • QT转到槽报错The class containing “Ui::MainWindow“ could not be found in...
  • 二、智能体强化学习——深度强化学习核心算法
  • 银河麒麟编译QXlsx,使用Qt5.14.2