【软件入门】STM32CubeMX快速入门
更正
2022.07.03
发现2.4一节中代码位置有问题, 没有添加到*USER CODE BEGIN …和USER CODE END…*之间,这样对代码的运行不会产生影响,但是如果更新CubeMX配置会导致代码丢失,更正如下:
/* USER CODE BEGIN WHILE */while (1){HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
STM32CubeMX+HAL手摸手教学
这个系列的博客主要是从0开始讲解STM32CubeMX和HAL库,需要有C语言的基础和一定标准库的基础。笔者也是刚入门,希望把我走过的弯路分享给大家,让大家少走一些弯路。如果有问题可以一起讨论、互相学习,也希望大佬们能给予指点,提出宝贵的意见。
目前该系列的博客如下(本帖长期更新):
STM32CubeMX+HAL(1)实现跑马灯_芜湖_的博客-CSDN博客
STM32CubeMX+HAL(2)实现基础按键_芜湖_的博客-CSDN博客
STM32CubeMX+HAL(3)实现简单串口通信_芜湖_的博客-CSDN博客
STM32CubeMX+HAL(4)实现外部中断_芜湖_的博客-CSDN博客
以下为原文
STM32CubeMX快速入门
前一阵用正点原子的mini板写了个初代指纹锁,然而由于自己的年少无知,代码几乎都是用寄存器来写的,导致代码的可移植性非常的差。因此决定学习一下CubeMX和HAL库。
文章目录
- 更正
- 2022.07.03
- STM32CubeMX+HAL手摸手教学
- STM32CubeMX快速入门
- 1.软件下载
- 1.1.更新JRE
- 1.2.配置CubeMX
- 1.2.1.下载CubeMX
- 1.2.2.安装CubeMX
- 1.2.3.配置CubeMX
- 2.用CubeMX点个灯
- 2.1.选择芯片
- 2.2.点灯相关配置
- 2.2.1.SYS
- 2.2.2.RCC
- 2.2.3.LED
- 2.3.生成工程
- 2.4.在MDK中添加相关代码点灯
- 2.5.烧录
1.软件下载
1.1.更新JRE
如果你的电脑上已经有JRE则可以跳过这一步,如果不是最新版的还是建议更新至新版,不是最新版可能会导致CubeMX卡顿。
由于 STM32CubeMX 软件是基于JAVA环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用。安装JRE也非常简单,直接在官网Java | Oracle下载即可。在下载的同时可以把电脑上原先的老版JRE卸载,搜索java进行卸载即可:
下载好后安装即可。
1.2.配置CubeMX
1.2.1.下载CubeMX
在ST官网即可找到CubeMX的下载链接,具体访问STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics即可。
在这里选择需要的版本即可,以windows为例。版本可以直接选最新版本的,如果有什么特殊的需求也可以选老版。下载这个ST会给你发一个邮件,收到邮件后即可完成下载。
1.2.2.安装CubeMX
安装的过程中有几步需要注意一下。
第一条必须选,是阅读须知;第二条的话可选可不选,内容大概是是否同意ST公司收集你的个人使用信息等。
创建快捷方式勾上就可以。
1.2.3.配置CubeMX
打开CubeMX,点击Help,选择Manage embedded software packages:
然后找到你使用的芯片系列即可,笔者使用的是正点原子mini板,芯片是STM32F103RCT6,因此下载F1系列的安装包:
版本下载最新的这个即可。
2.用CubeMX点个灯
正点原子mini板的芯片是STM32F103RCT6,两个LED分别为PA8和PD2,其他不同的硬件平台还需自己看一下原理图。
2.1.选择芯片
打开CubeMX,在File里面选择New Project,搜索想要的芯片:
如果这个芯片常用,可以添加到收藏,点一下五角星即可。这样在以后用这款芯片开发时,不需要再搜索,只需要点左上角的五角星即可,笔者这里收藏了F103RCT6和F103ZET6两款:
此外,还可以按需筛选芯片,点击左侧展开即可筛选,这里不再介绍,读者可以自己探索。
2.2.点灯相关配置
左侧可以更换两种显示方式,一种是按类别,一种是按A-Z显示,笔者选择的是A-Z:
2.2.1.SYS
在SYS中要选择Debug,如果不选的话则只可以烧录一次。或者严谨地说,也可以烧录,但是比较麻烦,为了少点麻烦最好选上。笔者使用的是ST-Link,选择如下:
在SDIO中选择Disable即可:
ST-Link虽然有两大排线,但是其实只用其中4根即可,一个VCC,一个GND,另外两个如图中所示:SWCLK和SWDIO。这部分先挖个坑,以后单独写一篇博客简单介绍一下,这里就不浪费篇幅了。
2.2.2.RCC
HSE选择Crystal/Ceramic Resonnatorm,使用外部晶振:
然后点击上方的Clock Configuration,进行如下时钟源配置:
2.2.3.LED
以PA8为例(LED0),点击PA8,选择GPIO_Output:
点击左侧GPIO,然后点击PA8的这一行表格:
在下方就可以进行配置了。进行如下配置:
第一行是IO口输出高电平,这是为了让LED灭,具体原因查看mini板原理图即可;
第二行是模式,设置为推挽输出;
第三行是选择上拉/下拉,这里选上拉,原因同样查看原理图;
第四行是速度,在标准库里是具体到多少MHZ,如50MHZ、10MHZ,而在HAL库中是LOW、MEDIUM、HIGH三种,这里选低就可以。
还可以取个名字,如LED0:
LED1配置同理。配置好后如下所示:
此时左边会有警告,这些都可以暂时不管:
2.3.生成工程
点击Project Manager进行如下配置:
第一行是工程名;
第二行是地址,地址不要包含中文;
第五行是IDE选择和版本号选择,按需选择即可。
然后在左侧点击Code Generater,笔者是这样配置的:
第一个框中是三选一:
第一行是将HAL库的所有.C和.H都复制到所建工程中,这样体积大,但不需要后续再加;
第二行是只复制所需要的.C和.H,这样体积小,但后续需要再加;
第三行是不复制文件,直接从软件包存放位置导入.C和.H,这样体积更小,但是复制到别的电脑上的话可能会有麻烦。
第二个框中是多选:
第一行是每个外设生成一对.c、.h文件作为外设初始化;
第二行是重新生成时备份以前生成的文件;
第三行是重新生成时保留用户代码;
第四行是当没有重新生成时,删除以前生成的文件。
读者可以自己决定。
配置完后即可在右上角点击生成代码:
2.4.在MDK中添加相关代码点灯
打开gpio.c,可以看到用HAL库设置高电平是用了如下的函数:
打开函数的定义,可以知道,如果设置低电平只需要将SET换成RESET即可。在main函数while循环中添加如下代码:
注意添加代码的时候都要添加到 USER CODE BEGIN … 和 USER CODE END… 之间,这样如果后期再更改CubeMX中的设置的话不会丢掉自己写的代码。
(已于2022.07.03更正)
2.5.烧录
笔者使用的是ST-Link,别忘了在Debug这里配置:
配置好后Download一下即可点灯成功:
【软件入门】STM32CubeMX快速入门相关推荐
- 屏通触摸屏软件操作手册_屏通人机界面软件操作手册快速入门版.pdf
屏通人机界面软件操作手册快速入门版 PM Designer 触控大师 屏 通 人 机 界 面 软件操作手册 快速入门版 0 目 录 第一章 PM Designer触控大师软件简介3 1.1 软件功能介 ...
- python notebook软件_Jupyter notebook快速入门教程(推荐)
本文主要介绍了Jupyter notebook快速入门教程,分享给大家,具体如下: 本篇将给大家介绍一款超级好用的工具:Jupyter notebook. 为什么要介绍这款工具呢? 如果你想使用Pyt ...
- notebook软件python_Jupyter notebook快速入门教程(推荐)
本文主要介绍了Jupyter notebook快速入门教程,分享给大家,具体如下: 本篇将给大家介绍一款超级好用的工具:Jupyter notebook. 为什么要介绍这款工具呢? 如果你想使用Pyt ...
- [UML专题-2]:plantUML绘制软件设计图形快速入门
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...
- .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了
本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既 ...
- python的快速入门-Python快速入门,你想要的就在这里了!
原标题:Python快速入门,你想要的就在这里了! 学习Python您是否会面临以下问题?"网上充斥着大量的学习资源.书籍.视频教程和博客,但是大部分都是讲解基础知识,不够深入:也有的比较晦 ...
- python快速入门 pdf-Python快速入门 (第3版) PDF 下载
相关截图: 资料简介: 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,*部分讲解Python的基础知识,对Python进行概要的介绍:第二部分介绍Python编程的重点 ...
- php smarty入门,smarty 快速入门
smarty 快速入门 smarty 定义:一个开源的模板引擎 模板引擎是为了使用户界面与业务数据分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 功能 将网 ...
- python qt快速入门_PyQt5快速入门(一)
PyQt5快速入门(一) 前言 为什么选择PyQt5作为GUI框架? API与Qt一致, 学会PyQt后再使用qt很简单 开发迅速, 可视化操作,使用designer快速拖拽布局进行调试 可以将文件打 ...
最新文章
- asp.net三种重定向方法的总结
- Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate 问题
- MongoDB数据库的下载与Python交互
- 第四章 数学知识【完结】
- JAVA识别字符串是数字(英文)还是汉字,web页面进行字符截断的帮助类
- leetcode 1338. Reduce Array Size to The Half | 1338. 数组大小减半(Java)
- LeetCode 1863. 找出所有子集的异或总和再求和(DFS)
- python 连通区域_python skimage 连通性区域检测方法
- php排序算法面试题,PHP面试:尽可能多的说出你知道的排序算法
- 服务器虚拟化相关技术介绍,虚拟化技术介绍
- python模块——pytz
- 箱线图画法详解:颜色、标签、大小等
- 在一个窗体的panel控件中显示其他窗体
- 长方形的周长公式的c语言,长方形周长公式
- 一文读懂汽车功能安全
- PyAutoGUI库-模拟鼠标键盘操作
- 网络中常用的各种协议名称(中英文)和具体含义
- Tree03-TreeAndTreeMethod
- mysql 不支持分区_MySQL分区表的局限和限制
- Unity将世界坐标转为UI坐标
热门文章
- idea Error: TomEE required to support EAR/EJB deployment解决方法
- 保险丝是不是真的足够保险
- 毕设项目 - 基于SSM的大学生兼职跟踪系统(含源码+论文)
- python安装过程中关机_python关机_python 关机_python关机代码 - 云+社区 - 腾讯云
- 用 Python 轻松玩转并行编程 Taichi 加速
- chatglm常用参数 :Top-k, Top-p, Temperature
- 蓝桥杯算法提高-质数的后代 Java实现
- 2023年全球50最佳餐厅公布第51至100位排名榜单,香港2家、上海1家上榜 | 美通社头条...
- 我曾七次鄙视我的灵魂--纪伯伦
- 大学生抄袭,病根在哪?