STM32CubeMXA安装和创建项目

STM32CubeMXA安装和创建项目

安装STM32CubeMXA

STM32CubeMX 运行环境搭建包含两个部分。首先是 Java 运行环境安装,其次是
STM32CubeMX 软件安装。

安装 JAVA 环境

对于 Java 运行环境,大家可以到 Java 官网 www.java.com 下载最新的 Java 软件
安装完成之后提示界面如下图 10.2.1.1 所示。
在这里插入图片描述
安装完 Java 运行环境之后,为了检测是否正常安装,我们可以打开 Windows 的命令输入
框,输入:java –version 命令,如果显示 Java 版本信息,则安装成功。提示信息如下图 10.2.1.2:
在这里插入图片描述

安装 STM32CubeMX

在安装了 Java 运行环境之后,接下来我们安装 STM32CubeMX 图形化工具
直接从 ST官方下载,下载地址为:https://www.st.com/en/development-tools/stm32cubemx.html。
接下来我们直接双击 SetupSTM32CubeMX-6.3.0.exe,安装步骤如下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用 STM32CubeMX 新建工程

步骤1: 打开 STM32CubeMX

步骤2:下载和关联的 STM32Cube 固件包

我们知道 STM32CubeMX 图形工具只有一种, STM32Cube 固件包却有多种,需要选择我
们工程对应的固件包。
为了方便,新建工程前,我们先来下载和关联 STM32Cube 固件包,点击 Help->Manage
embedded software packages,如图 10.3.2.1 所示。
在这里插入图片描述
然后弹出管理界面,在该窗口找到 STM32F4 列表选项,勾选 1.26.0 版本。这里选择 1.26.0
版本是因为我们的光盘的固件包是这个版本的。关联 STM32Cube 固件包有两个方法,如图
10.3.2.2 所示
在这里插入图片描述
方法二:下载好之后,会自动关联,所以不需要多讲什么。
方法一:点击后,弹出下面的窗口,然后选择光盘中的对应的固件包,注意这里是压缩包
的形式,如图 10.3.2.3 所示。
在这里插入图片描述
在这里插入图片描述

步骤3:新建工程

使用 STM32CubeMX 配置工程的一般步骤为:

  1. 工程初步建立
  2. HSE 和 LSE 时钟源设置
  3. 时钟系统(时钟树)配置
  4. GPIO 功能引脚配置
  5. Cortex-M4 内核基本配置(限定项)
  6. 生成工程源码
  7. 用户程序
    接下来我们将按照上面 7 个步骤,依次教大家使用 STM32CubeMX 工具生成一个完整的工
    程。

工程初步建立

方法一:依次点击“File”,“New Project”即可建新工程。如果之前打开过的话,左侧最近
打开的过程一列会有打开的工程列表,直接点击这些工程也可以打开。
方法二:直接点击 ACCESS TO MCU SELECTOR。
具体操作如图 10.3.3.1 所示
在这里插入图片描述
点击新建工程后,第一次可能会联网下载一些的文件,可能等待时间比较长,可以直接选
择取消即可。在这里插入图片描述
之后都可以进入芯片选型界面,如图 10.3.3.3 所示。在这里插入图片描述
选择具体的芯片型号,如图 10.3.3.4 所示。
在这里插入图片描述
选择了芯片型号后,弹出主设计界面,如图 10.3.3.5 所示。在这里插入图片描述

HSE 和 LSE 时钟源设置

进入工程主设计界面后,首先设置时钟源 HSE 和 LSE。如图 10.3.3.6 所示。
在这里插入图片描述
图 10.3.3.6 中的标号 3 和 4,我们都选择了 Crystal/Ceramic Resonator,表示外部晶振作为
它们的时钟源。我们开发板的外部高速晶振和外部低速晶振分别是:8MHz 和 32.768KHz,所
以 HSE 时钟频率就是 8MHz,LSE 时钟频率就是 32.768KHz。
选项 Master Clock Output 1 用来选择是否使能 MCO1 引脚时钟输出,选项 Master Clock
Output 2 用来选择是否使能 MCO2 引脚时钟输出,最后一个选项 Audio Clock Input(I2S_CKIN)
用来选择是否从 I2S_CKIN(PC9)输入 I2S 时钟。这里大家要注意,因为选项 Master Clock Output
2 和选项 Audio Clock Input(I2S_CKIN)都是使用的 PC9 引脚,所以如果我们使能了其中一个,
那么另一个选项会自动显示为红色,也就是不允许配置,这就是 STM32CubeMX 的自动冲突检
测功能。

时钟系统(时钟树)配置

点击 Clock Configuration 选项卡即可进入时钟系统配置栏,如下图 10.3.3.7 所示:在这里插入图片描述
进入 Clock Configuration 配置栏之后可以看到,界面展现一个完整的 STM32F4 时钟系统框
图。从这个时钟树配置图可以看出,配置的主要是外部晶振大小,分频系数,倍频系数以及选
择器。在我们配置的工程中,时钟值会动态更新,如果某个时钟值在配置过程中超过允许值,
那么相应的选项框会红色提示。
这里,我们将配置一个以 HSE 为时钟源,配置 PLL 相关参数,然后系统时钟选择 PLLCLK
为时钟源,最终配置系统时钟为 168MHz 的过程。同时,还配置了 AHB,APB1,APB 和 Systick
的相关分频系数。由于图片比较大,我们把主要的配置部分分两部分来讲解,第一部分是配置系统时钟,第二部分是配置 SYSTICK、AHB、APB1 和 APB2 的分频系数。首先我们来看看第
一部分配置如下图 10.3.3.8 所示:
在这里插入图片描述

我们把系统时钟配置分为七个步骤,分别用标号①~⑦表示,详细过程为:
① 时钟源参数设置:我们选择 HSE 为时钟源,所以我们要根据硬件实际的高速晶振频率
(这里我们是 8MHz)填写。
③ 时钟源选择:我们配置选择器选择 HSE 即可。
④ PLL1 分频系数 M 配置。分频系数 M 我们设置为 8。
④ PLL1 倍频系数 N 配置。倍频系数 N 我们设置为 336。
⑤ PLL1 分频系数 P 配置。分频系数 P 我们配置为 2。
⑥ 系统时钟时钟源选择:PLL,HSI 还是 HSE。我们选择 PLL,选择器选择 PLLCLK 即可。
⑦ 经过上面配置以后此时 SYSCLK=168MHz。
经过上面的 7 个步骤,就配置好 STM32F4 的系统时钟为 168MHz。接下来我们还需要配置
AHB、APB1、APB2 和 Systick 的分频系数,为 STM32 的片上外设或 M4 内核设置对应的工作
时钟,为后续使用这些硬件功能做好准备。配置如下图 10.3.3.9 所示:
在这里插入图片描述
AHB、APB1 和 APB2 总线时钟以及 Systick 时钟的来源于系统时钟 SYSCLK。其中 AHB
总线时钟 HCLK 由 SYSCLK 经过 AHB 预分频器之后得到,如果我们要设置 HCLK 为 168MHz
(最大为 168Mz),那么我们只需要配置图中标号的地方为 1 即可。得到 HCLK 之后,接下来我
们将在图标号⑨~⑪处同样的方法依次配置 Systick、APB1 和 APB2 分频系数分别为 1、4 和 2。
注意!systick 固定为 168MHz,配置完成之后,那么 HCLK=168MHz,Systick=168MHz,
PCLK1=42MHz,PCLK2=84MHz,这和之前例程配置的时钟频率是一样的。
以上方法是手动计算的方法,是为了帮助我们更好地去认识 STM32 时钟的配置方法,当然
CubeMX 也提供了更简单的方法:在图 10.3.3.9 的“HCLK(MHz)”位置,实际上是可以编辑的。
我们直接输入我们要的时钟频率,这里是 168MHz,按回车键,CubeMX 会帮我们提供一种设
置时钟频率和其它时钟的建议,选择是后会由软件自动配置好,当然只有启用外部的晶振后才能配置到 168MHz 的时钟。

GPIO 功能引脚配置

探索者STM32F407 开发板的 PF9 和 PF10 引脚各连接一个 LED 灯,我们来学习配置这两个 IO 口的相
关参数。这里我们回到 STM32CubeMX 的 Pinout&Configuration 选项,在搜索栏输入 PF9 后回
车,可以在引脚图中显示位置,如下图 10.3.3.11 所示:在这里插入图片描述
接下来,我们在图 10.3.3.11 引脚图中点击 PF9,在弹出的下拉菜单中,选择 IO 口的功能
为 GPIO_Output。操作方法如下图 10.3.3.11 所示:在这里插入图片描述
同样的方法,我们配置 PF10 选择功能为 GPIO_Oput 即可。设置好即可看到引脚从灰色变
成绿色,标识该管脚已经启用。这里我们需要说明一下,如果我们要配置 IO 口为外部中断引脚
或者其他复用功能,我们选择相应的选项即可。配置完 IO 口功能之后,还要配置 IO 口的速度,
上下拉等参数。这些参数我们通过 System Core 下的 GPIO 选项进行配置,如图 10.3.3.12 所示。
在这里插入图片描述
我们先配置 PF9,PF9 和 PF10 配置方法一样的。点击图 10.3.3.12 的④号框里面的 PF9,配
置如图 10.3.3.13 所示。在这里插入图片描述
GPIO output level 是 IO 的初始值,由于 LED 一端接 VCC,另一端接 GPIO,故要点亮 LED
灯时,使 GPIO 输出低电平即可。为了一开始让 LED 灯熄灭,我们设置初始值输出高电平。
GPIO mode 我们已经在视图中配置为推挽输出了,这里不需要修改。
GPIO Pull-up/Pull-down 默认是无上下拉,我们这里用默认配置。
Maximum output speed 输出速度配置,默认是低速,我们设置为高速。
User Label 用户符号,我们可以给 PF9 起一个别名 LED0。
PF10 也是按照这样的方法配置,给 PF10 起一个别名 LED1。

配置 Debug 选项

由于 CubeMX 默认把 Debug 选项关闭了,这样会给我们带来麻烦:用 CubeMX 生成的工
程编译下载一次后,后续再次下载就会提示错误,因此我们要把 Debug 选项打开。这里有多种
选择,我们设置成图 10.3.3.14 所示的情况即可。
在这里插入图片描述
如果已经不小心关闭了 Debug 选项,那么下次下载的时候按住复位键,等到工程提示的时
候松开复位键即可,因为 STM32 的芯片默认复位上电时的 Debug 引脚功能是开启的。
推荐使用swd模式,因为省io接口

Project Manager

接下来我们学习怎么设置生成一个工程,如图 10.3.3.15 所示。选择 Project Manager-> Project
选项用来配置工程的选项,我们了解一下里面的信息。
Project Name:工程名称,填入工程名称(半角,不能有中文字符)
Project Location:工程保存路径,点击 Browse 选择保存的位置(半角,不能有中文字符)
Toolchain Folder Location:工具链文件夹位置,默认即可。
Application Structure:应用的结构,选择 Basic(基础),不勾选 Do not generate the main(),
因为我们要其生成 main 函数。
Toolchain/IDE:工具链/集成开发环境,我们使用 Keil,因此选择 MDK-ARM,Min Version 选
择 V5.27,这里根据 CubeMX 的版本可能会有差异,我们默认使用 V5 以上的版本即可。
Linker Settings 链接器设置:
Minimum Heap Size 最小堆大小,默认(大工程需按需调整)。
Minimum Stack Size 最小栈大小,默认(大工程需按需调整)。
MCU and Firmware Package 是 MCU 及固件包设置:
MCU Reference:目标 MCU 系列名称。
Firmware Package Name and Version:固件包名称及版本。
勾选 Use Default Firmware Location,文本框里面的路径就是固件包的存储地址,我们使用
默认地址即可。这样工程生成的设置就设置好了。
在这里插入图片描述
接下来我们配置生成代码的配置选项。打开 Project Manager-> Code Generator 选项,
Generated files 生成文件选项,勾选 Generate peripheral initialization as a pir of ‘.c/.h’ files per
peripheral,勾选这个选项的话将会将每个外设单独分开成一组.c、.h 文件,使得代码结构更加
的清晰,如图 10.3.3.16 所示
在这里插入图片描述
至此工程最基础配置就已经完成,点击蓝色按钮(SENERATE CODE)就可以生成工程。
在这里插入图片描述

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

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

相关文章

CSS 扫盲

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录引入方式内部样式内联样式外部样式CSS 选择器CSS 常用属性值字体属性设置字体大小粗细文字样式文本属性文本颜色文本对齐文本装…

使用Jmeter进行http接口测试

前言: 本文主要针对http接口进行测试,使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接口…

【Unity项目实战】从零手戳一个背包系统

首先我们下载我们的人物和背景资源,因为主要是背包系统,所以人物的移动和场景的搭建这里我们就不多讲了,我这里直接提供基础项目源码给大家去使用就行 基础项目下载地址: 链接: https://pan.baidu.com/s/1o7_RW_QQ1rrAbDzT69ApRw 提取码: 8s95 顺带说一下,这里用到了uni…

uniCloud开发api接口服务

首先创建一个云对象: 在创建的云对象的index.Obj.js中进行编码: const db uniCloud.database() module.exports {_before: function () { // 通用预处理器},async get(){//demo-user 是云数据中的一个表名let res await db.collection("demo-us…

最易学和最难学编程语言排行榜!

如果问一个程序员最容易学习的语言,就像问一个人他们最喜欢的冰淇淋。每个人都有自己的偏好,永远没有真正的正确答案。 正如开发者和教育家 Marek Zaluski 曾经说的那样,"编程语言是由程序员创造的,为程序员服务"。这几…

Hashtable是什么?它和Hashmap有什么区别?

博主简介:努力的打工人一枚博主主页:xyk:所属专栏: JavaEE初阶目录 一、什么是Hashtable? 二、Hashtable特点 2.1 Hashtable是怎么加锁的? 2.2Hashtable为什么不允许键值为null? 2.3Hashtable为什么线程安全&…

电动汽车热管理方案

热管理技术作为汽车节能、提高经济性和保障安全性的重要措施,在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调,而电动汽车的热管理系统在燃油汽车热管理架构的基础之上,又增加了电机电控热…

Docker实现MySQL8主从读写分离【超简洁】

1、首先拉取镜像 docker pull mysql 2、创建主库容器 docker run -p 3388:3306 --name master -e MYSQL_ROOT_PASSWORD123456 -d mysql --server-id1 --log-binbin-log --binlog-do-dbznzm-dlaq 说明: docker run 表示创建并运行容器-p 3388:3306 把宿主机的…

【SQL开发实战技巧】系列(四十):Oracle12C常用新特性☞可以在同样的列(列组合)上创建多个索引以及可以对DDL操作进行日志记录

系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…

软件测试岗,4 轮面试成功拿下字节 Offer..........

一共经历了四轮面试:技术4面+HR面。 特整理出所涉及的全部知识点,并复盘了完整面试题及答案,分享给大家,希望能够帮到一些计划面试字节的朋友。 一、测试基础理论类 怎么编写案例?软件测试的两种方法测试结束的标准…

python好玩的短代码

Python语言是一种流行的编程语言,在 Python语言中有很多有趣的特性,比如: 1.变量可以定义为字符串,也可以定义为字符串对象 2.变量可以用来初始化一个函数或模块,函数或者模块可以定义成一个类,这个类被称为…

不负期待,载誉收官 | 迅镭激光2023ITES深圳展圆满落幕!

4月1日,历时4天的2023 ITES深圳工业展在深圳国际会展中心圆满收官!本届展会聚焦“金属切削机床、金属成形机床、核心工业技术、机器人及自动化设备、智能物流、工业零件”六大产业集群,云集1295家参展企业,品牌阵容高端先进、丰富多元&#x…

轻轻松松编译 Jmeter 源码,再也不求人

Jmeter工具,大家在做接口测试、自动化测试,都是经常会用到的,甚至在做性能测试时,是首选工具。Jmeter本身是用java语言编写的开源的工具,在jmeter.apache.org官网上,可以下载。 但是,也耐不住那…

Leetcode.130 被围绕的区域

题目链接 Leetcode.130 被围绕的区域 mid 题目描述 给你一个 m x n的矩阵 board,由若干字符 X和 O,找到所有被 X围绕的区域,并将这些区域里所有的 O用 X填充。 示例 1: 输入:board [[“X”,“X”,“X”,“X”],[“X…

继承(C++)

继承继承的概念及定义继承的概念继承的定义定义格式继承关系和访问限定符继承基类成员访问方式的变化基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员复杂的菱形继承及菱形虚拟继承虚拟继承的原理继承的概念及定义 继承的概念 继承是面…

Spring-aop面向切面

1、理解必要的专业术语 先看看上面图,这是我的个人理解。(画的丑,主打真实) 1)Advice,通知/增强:类方法中提出来的共性功能(大白话就是提出来的重复代码) 2)Pointcut,切入点/切点&#…

Tomcat使用https配置实战

一、tomcat证书配置 首先,要实现https,就必须先具有tomcat证书。我们在安装tomcat的时候,肯定都先安装了JAVA,而JAVA中有自带的证书生成工具keytool,今天,我们就使用keytool来生成tomcat的证书。 执行命令…

chatGPT中国入口-ChatGPT评论文章-ChatGPT怎么用

国内怎么玩chatGPT 如果您在国内使用ChatGPT,主要的问题可能是连接OpenAI服务器的速度和稳定性。由于OpenAI位于美国,可能受到中国的网络限制和防火墙的影响,造成访问速度比较慢或不稳定。为了解决这个问题,您可以采取以下方法&a…

多线程冲突处理方法,锁

线程之间是可以共享进程的资源,比如代码段、堆空间、数据段、打开的文件等资源,但每个线程都有自己独立的栈空间。 那么问题就来了,多个线程如果竞争共享资源,如果不采取有效的措施,则会造成共享数据的混乱。 我们做…

首届“兴智杯”产业赛收官,文心大模型助推产业创新

由工业和信息化部、科学技术部、深圳市人民政府共同主办,中国信通院等单位承办的首届“兴智杯”全国人工智能创新应用大赛圆满收官。本次大赛受到国家部委、政府机构、科技企业、高校师生等社会各界密切关注。为了进一步激发创新活力,促进人工智能核心技…
最新文章