STM32 CubeMx教程 -- 基础知识及配置使用教程

2023-10-31


前言

STM32CubeMX 简介

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者,允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。

在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间。

并且随着 ST停止了标准库的更新ST官方大力推荐CubeMX与HAL库的使用,虽然现在还是标准库的主场,但是CubeMX的使用率在逐年提高。

关于STM32CubeMx的安装教程,可以参考其他博主的博客,在这里不进行讲述,注意英文路径即可

本文将讲述 STM32Cube MX的界面介绍、基础设置配置、配置之后的简单使用,不同外设的使用将会在之后博客中详细介绍。


一、STM32CubeMx 界面介绍

首先先看一下STM32CubeMx 的主界面
主界面
新建工程一般选择中间的 ACCESS TO MCU SELECTOR
如果有其他需求也可以选择其他的

File 界面

FIle

Windows 界面

Windows

Help 界面

Help

Updater Settings 界面

Upadater Settings


二、STM32CubeMx 使用教程

新建工程

首先新建工程,这里选择使用第一种新建工程的方式

新建工程

如果芯片信息没有更新,会跳出更新界面,继续更新和跳过更新都行
接下来进入选择芯片界面

芯片选择
在(1)位置输入想要使用的芯片型号,在(2)位置选择详细的芯片类型,最后在(3)位置开始建立一个工程

创建完成之后进入下一个界面

配置界面
在这个界面中有三个部分
(1)是MCU的外设选择界面,在这里选择使用的MCU外设资源
有两种排序方式: Categories 种类选择A-Z 顺序选择
(2)是详细的外设配置界面,关于每个外设的详细参数都在这里配置
(3)是芯片设置预览界面,预览每个引脚在什么位置和配置了什么功能

另外 配置引脚相应的功能可以在(1)外设选择界面,也可以在(3)预览界面直接点击相应的引脚进行配置

例如想配置PC13引脚输出高电平,可以直接在(3)界面点击PC13引脚
配置引脚

由上图可知,PC13引脚可以配置为RTC时钟模式、输入模式、输出模式、以及中断模式等等,详细功能会在之后博客中介绍。

VDD

另外在配置界面,出现淡黄色表示为不可配置引脚,电源专用引脚以淡黄色突出显示。其引脚不可进行其他用途配置。

配置

这种颜色表示配置了一个I/O口的功能,但是没有初始化相对应的外设功能 ,引脚处于no mode 状态,也就是引脚进行了资源分配,但是在详细配置界面没有初始化操作。

配置
如果配置完成之后显示绿色,则表示配置成功。

接下来介绍一些工程中通用的配置操作:

配置RCC时钟参数

RCC配置
将外部高速时钟(HSE)配置为Crystal/Ceramic Resonator(晶体/陶瓷谐振器),也就是使用外部晶振作为时钟源,外部低速时钟(LSE)用不到,可以不配置。
如果不配置RCC时钟,则是默认使用内部高速时钟(HSI),这也将影响之后时钟树的配置。
推荐将RCC时钟配置外部晶振

配置SYS参数

SYS

SYS参数

Debug
默认是关闭的,如果不使用调试器关闭即可,即No Debug;
在STM32CubeMX的SYS选项栏中有SW和JTAG协议选项,用户可以根据需要选择相应的协议;

JTAG调试接口(JTAG-DP)需要5个引脚;CubeMX中可选择5pin或4pin的JTAG,5pin比4pin多了一个复位引脚。
SW调试接口(SW-DP)需要2个引脚。二者之间有复用引脚。SW调试端口采用同步串行协议:SWCLK引脚为从主机到从机的时钟信号;SWDIO为双向数据信号。

ST-Link采用的是SW调试接口,选择Serial Wire ;
J-Link采用的是JTAG调试接口,根据实际要求选择 JTAG(4pin) 或者 JTAG(5pin) ;
如果使用J-Link 但是采用SWD协议,也可以选择Trace Asynchronous Sw ;
Trace Asynchronous Sw 模式有时候也可以解决使用ST-Link 烧录之后无法烧录和调试的情况

为了避免一次烧录之后无法下一次烧录或者调试的情况, 推荐选择Serial Wire

如果在STM32CubeMX中选择SW协议MDK 也必须 选择SW协议。JTAG协议配置也同理。否则会造成下载和调试失败。在实际项目中SW协议使用使用的比较多,速度更快,占用的引脚更少,推荐配置成SW协议,即Serial Wire模式;

System Wake-Up
设置低功耗模式下的自动唤醒功能,通过引脚PA0。

Timebase Source
一般指HAL的时基,即HAL库中的uwTick,用于实现HAL_Delay()以及作为各种timeout时钟的基准。一般情况下直接选择默认的Sys Tick(嘀嗒定时器)来维护SYS Timebase Source即可,即直接放在SysTick_Handler()中断服务函数中,也就是下面的HAL_IncTick()函数。

配置时钟树

时钟树

如果在前面RCC时钟配置中,选择使用外部晶振,在这里选择使用外部高速时钟模式(HSE);如果没有配置RCC时钟,则使用默认的内部高速时钟(HSI);
然后配置PLL锁相环,之后倍频更改系统主时钟;
推荐使用最大时钟频率这里是72M
如果不清楚RCC时钟树,可以参考我之前写的一篇博客,STM32基础知识(三)-- 系统时钟RCC详解

快速配置最大时钟频率可以直接修改(3)系统时钟直接改成72M然后回车就行

Project(工程设置)

工程设置
注意:项目路径和项目名称最好使用英文,否则后期可能会存在一些奇奇怪怪的错误

Code Generator(代码生成器)

code generator
Copy all used libraries into the project folder
将HAL库的所有.C和.H都复制到所建工程中
优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX的时候便会很方便
缺点: 体积大,编译时间相比于其他选项非常长

Copy only the necessary library files
只复制所需要的.C和.H
优点:体积相对小,编译时间短,并且工程可复制拷贝
缺点: 新增外设时需要重新用STM32CubeMX导入

Add necessary library files as reference in the toolchain project configuration file
不复制文件,直接从软件包存放位置导入.C和.H
优点:体积小,比较节约硬盘空间
缺点: 复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径

根据自己需求选择就行,一般来说第一个和第二个都行;

工程创建

生成工程

code generation

三、结合Keil 的使用教程

首先在上一个界面,打开文件夹和打开工程都可以;
打开工程文件以后,首先点击魔术棒进行设置;
设置
debug
在魔术棒设置界面,进入(1)Debug界面,在(2)位置选择自己使用的下载器,然后进入(3)Settings界面;

setting界面
在Settings界面 ,根据之前在STM32CubeMx里面SYS设置的,进行选择这里使用的SW还是JTAG协议;
注意STM32CubeMx 和 MKD 里面协议要一致,否则无法进行调试

代码书写
code

代码要写在 /* XX CODE BEGIN*/ 和 /* XX CODE END*/ 之间,否则下次再STM32CubeMx里面加东西,再生成工程的时候,就会把不在这个区域里面的代码删掉。


补充

STM32的三种开发模式

1、STM32能基于寄存器开发,直接对寄存器进行编程。基于寄存器编写的代码简练、执行效率高。但由于 STM32 微控制器的片上外设和寄存器数量太多,这种编程方式移植性差,寄存器编程比较复杂。

2、基于ST官方的固件库进行开发。现在大部分STM32教程教的都是这种库函数开发,如正点原子,野火等。他相比寄存器开发更加简单,不需要记住每个寄存器的地址和名称,只要会调用ST官方封装好的库函数进行编程就可以了。

3、基于STM32CubeMx进行开发,使用的是ST官方新推出的HAL库,可以通过软件内设计好的图形化界面进行配置,软件自动生成生成配置代码,然后我们再在IDE上面代码编写。

单片机的三种烧录模式

ICP:使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。
ISP:使用引导程序(Bootload)加上外围UART/USB等接口进行烧录。
IAP:软件自身实现在线电擦除和编程的方法,不使用任何工具。程序通常分成两块,分别为引导程序和应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 CubeMx教程 -- 基础知识及配置使用教程 的相关文章

  • Python多线程 Threading

    1 介绍 多线程是加速程序计算的有效方式 Python的多线程模块threading上手快速简单 从这节开始我们就教大家如何使用它 2 添加线程 本节我们来学习threading模块的一些基本操作 如获取线程数 添加线程等 首先别忘了导入模
  • Nova: 2 Nova源码以及服务路径

    目标 1 弄清楚nova组件通过packstack安装后源码位置 2 确定nova组件服务启动路径 3 确定nova组件配置文件路径 0 whereis nova root localhost www whereis nova nova u
  • 怎么往钉钉群里发文件_钉钉授课教程

    一 课前直播准备 建立钉钉班级群 如果学校已经开通了钉钉 家校通讯录 那么老师只要进入自己所在的钉钉班级群看看还有哪些学生未加入 也可多邀请学生家长捆绑到学生上 以备妈妈的手机不能用 还可以用爸爸的 如果自己的学校还没有开通钉钉 家校通讯录
  • Linux软件包安装(rpm、yum、apt-get)

    http m blog csdn net suixin788 article details 52555558 Linux的发行版之间的联系和区别 http m blog csdn net wanghui499917270 article

随机推荐

  • 互斥和同步-读者/写者问题

    读者 写者问题 问题定义 存在一个多进程共享的数据区 该数据区可以是 一个文件或者一块内存或者一组寄存器 有些进程reader只读取该数据区中的数据 有些进程writer只往数据区写数据 满足条件 任意数量的读进程可以同时读该文件 一次只有
  • [LeetCode]235 二叉查找树的最近公共父亲节点

    Lowest Common Ancestor of a Binary Search Tree 二叉查找树的最近公共父亲节点 难度 Easy Given a binary search tree BST find the lowest com
  • 解决项目中出现问题 Cannot resolve com.xpand:starter-canal:0.0.1-SNAPSHOT

    解决方案 https www cnblogs com dalianpai p 14010753 html 亲测有效 编译通过 第一步 前往https github com chenqian56131 spring boot starter
  • Homebrew 更换国内源

    eval opt homebrew bin brew shellenv export HOMEBREW BREW GIT REMOTE https mirrors ustc edu cn brew git export HOMEBREW C
  • 【Spring】Feign客户端发送HTTPS请求绕过认证

    1 概述 转载 https www jianshu com p ea627708ab52 一个Spring Boot项目 为了使用Harbor仓库 起初通过Spring RestTemplate完成了对Harbor仓库的HTTPS请求 后想
  • 编程调节Win7/Win8系统音量的一种方法

    include
  • Cheat Engine使用教程

    系列文章目录 文章目录 系列文章目录 前言 一 解决办法 二 使用步骤 1 下载Cheat Engine 2 设置 前言 计算机硬盘不够用 但里面很多文件也舍不得删除 只有靠百度网盘来撑撑大小了 所以省吃俭用购买了百度会员 心疼每个月好几十
  • MPI_Bcast函数的用法

    程序功能 MPI Bcast函数用法 作成日期 2016 12 14 详细说明 include
  • AltiumDesigner如何绘制PCB封装

    AltiumDesigner如何绘制PCB封装 一 为什么要自己画PCB封装 当我们需要用的一些元器件PCB封装库中找不到的时候 我们就需要自己手动绘制一些元器件的PCB封装 当然也可以选择用相似的代替 但是在一些长场合中并不允许我们这样做
  • openwrt编译问题记录

    目录 1 git clone 速度太慢甚至断开连接 2 编译openwrt镜像make时发生错误 3 scripts feeds install a 时出现警告 1 git clone 速度太慢甚至断开连接 解决办法 在clone时将git
  • 如何显示文件后缀

    一 如何显示文件后缀 1 首先打开电脑上的本地磁盘D 2 然后点击组织 3 在弹出的窗口中点击文件夹和搜索 4 在弹出的窗口在点击查看 5 下拉滚动条 6 最后取消勾选隐藏已知文件类型的扩展名
  • 编程珠玑第三章习题5——英语中的连字符问题

    编程珠玑第三章习题5 英语中的连字符问题 问题 本问题将处理一小部分用连字符连接的英语单词方面的问题 下面的规则列表描述了一些以字母c结尾的单词的有效连字符连接 et ic al is tic s tic p tic lyt ic ot i
  • 使用Python语言实现凯撒密码的加密和解密

    使用Python语言实现凯撒密码的加密和解密 介绍 在密码学中 恺撒密码 英语 Caesar cipher 或称恺撒加密 恺撒变换 变换加密 是一种最简单且最广为人知的加密技术 它是一种替换加密的技术 明文中的所有字母都在字母表上向后 或向
  • Nginx配置https访问

    1 准备好证书和秘钥 如果是云服务器 可以到对应的云服务器上购买ssl证书 我这里是百度云 我以百度云为例子 直达链接 https console bce baidu com cas cas apply create 这个是免费1年的 可以
  • sql server数据库常见语句——增删查改

    一表数据增删查改 1 查询 select from 表名 select from test 2 新增 insert 表名 字段1 字段2 values 值1 值2 insert test a b values 1 2 3 修改 update
  • Meetup回顾|星策社区FeatureStore Meetup V2

    继2021年12月11日举办第一次Feature Store Meetup之后 星策开源社区于2022年4月10日举办了第二期 FeatureStore Meetup V2 本次活动邀请星策社区发起人 中国开源推进联盟副秘书长 开放原子基金
  • ADC外部RC电路电阻和电容选取计算方法

    ADC采样过程中遇到的问题 ADC是从模拟到数字世界的桥梁 当前ADC模块基本是MCU的标配 而且在转换速度和精度都有很好的表现 如NXP Kinetis KE15内部有2个16bit SAR型ADC模块 以精度制胜 可以配合EDMA完美实
  • vue实现音频audio列表循环,实现暂停播放切换

    功能界面如下 功能使用如下 首先根据后端返回的音频地址进行渲染 其中playAudioSrc字段用来控制暂停样式还是播放样式 audio进行隐藏 ul class virtualAvararFooterRightContentAudio l
  • vue局部注册指令和全局注册指令

    全局注册 1 目录下创建directive文件夹 然后下面就是各指令文件 还有一个总包括指令directive js 标识所有的指令都会引入到这里 import testA from testA import testB from test
  • STM32 CubeMx教程 -- 基础知识及配置使用教程

    文章目录 前言 一 STM32CubeMx 界面介绍 File 界面 Windows 界面 Help 界面 Updater Settings 界面 二 STM32CubeMx 使用教程 新建工程 配置RCC时钟参数 配置SYS参数 配置时钟