更正

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快速入门相关推荐

  1. 屏通触摸屏软件操作手册_屏通人机界面软件操作手册快速入门版.pdf

    屏通人机界面软件操作手册快速入门版 PM Designer 触控大师 屏 通 人 机 界 面 软件操作手册 快速入门版 0 目 录 第一章 PM Designer触控大师软件简介3 1.1 软件功能介 ...

  2. python notebook软件_Jupyter notebook快速入门教程(推荐)

    本文主要介绍了Jupyter notebook快速入门教程,分享给大家,具体如下: 本篇将给大家介绍一款超级好用的工具:Jupyter notebook. 为什么要介绍这款工具呢? 如果你想使用Pyt ...

  3. notebook软件python_Jupyter notebook快速入门教程(推荐)

    本文主要介绍了Jupyter notebook快速入门教程,分享给大家,具体如下: 本篇将给大家介绍一款超级好用的工具:Jupyter notebook. 为什么要介绍这款工具呢? 如果你想使用Pyt ...

  4. [UML专题-2]:plantUML绘制软件设计图形快速入门

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  5. .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既 ...

  6. python的快速入门-Python快速入门,你想要的就在这里了!

    原标题:Python快速入门,你想要的就在这里了! 学习Python您是否会面临以下问题?"网上充斥着大量的学习资源.书籍.视频教程和博客,但是大部分都是讲解基础知识,不够深入:也有的比较晦 ...

  7. python快速入门 pdf-Python快速入门 (第3版) PDF 下载

    相关截图: 资料简介: 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,*部分讲解Python的基础知识,对Python进行概要的介绍:第二部分介绍Python编程的重点 ...

  8. php smarty入门,smarty 快速入门

    smarty 快速入门 smarty 定义:一个开源的模板引擎 模板引擎是为了使用户界面与业务数据分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 功能 将网 ...

  9. python qt快速入门_PyQt5快速入门(一)

    PyQt5快速入门(一) 前言 为什么选择PyQt5作为GUI框架? API与Qt一致, 学会PyQt后再使用qt很简单 开发迅速, 可视化操作,使用designer快速拖拽布局进行调试 可以将文件打 ...

最新文章

  1. asp.net三种重定向方法的总结
  2. Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate 问题
  3. MongoDB数据库的下载与Python交互
  4. 第四章 数学知识【完结】
  5. JAVA识别字符串是数字(英文)还是汉字,web页面进行字符截断的帮助类
  6. leetcode 1338. Reduce Array Size to The Half | 1338. 数组大小减半(Java)
  7. LeetCode 1863. 找出所有子集的异或总和再求和(DFS)
  8. python 连通区域_python skimage 连通性区域检测方法
  9. php排序算法面试题,PHP面试:尽可能多的说出你知道的排序算法
  10. 服务器虚拟化相关技术介绍,虚拟化技术介绍
  11. python模块——pytz
  12. 箱线图画法详解:颜色、标签、大小等
  13. 在一个窗体的panel控件中显示其他窗体
  14. 长方形的周长公式的c语言,长方形周长公式
  15. 一文读懂汽车功能安全
  16. PyAutoGUI库-模拟鼠标键盘操作
  17. 网络中常用的各种协议名称(中英文)和具体含义
  18. Tree03-TreeAndTreeMethod
  19. mysql 不支持分区_MySQL分区表的局限和限制
  20. Unity将世界坐标转为UI坐标

热门文章

  1. idea Error: TomEE required to support EAR/EJB deployment解决方法
  2. 保险丝是不是真的足够保险
  3. 毕设项目 - 基于SSM的大学生兼职跟踪系统(含源码+论文)
  4. python安装过程中关机_python关机_python 关机_python关机代码 - 云+社区 - 腾讯云
  5. 用 Python 轻松玩转并行编程 Taichi 加速
  6. chatglm常用参数 :Top-k, Top-p, Temperature
  7. 蓝桥杯算法提高-质数的后代 Java实现
  8. 2023年全球50最佳餐厅公布第51至100位排名榜单,香港2家、上海1家上榜 | 美通社头条...
  9. 我曾七次鄙视我的灵魂--纪伯伦
  10. 大学生抄袭,病根在哪?