STM32实战 2 | STM32CubeMX及HAL库点亮LED

举报
实柏 发表于 2021/09/30 01:41:23 2021/09/30
【摘要】 一、安装Java环境STM32CubeMX是在Java环境下运行的,所以这里我们先在电脑安装Java环境。JDK即Java Develop Kit,广泛使用的版本是JDK 8官方网站链接:https://www.oracle.com/java/technologies/downloads/下载之后运行安装包,一路next即可完成安装,建议安装到C盘默认路径。配置环境变量(重点)首先配置JA...

一、安装Java环境

  1. STM32CubeMX是在Java环境下运行的,所以这里我们先在电脑安装Java环境
    JDK即Java Develop Kit,广泛使用的版本是JDK 8
    官方网站链接:https://www.oracle.com/java/technologies/downloads/
    在这里插入图片描述

  2. 下载之后运行安装包,一路next即可完成安装,建议安装到C盘默认路径

  3. 配置环境变量(重点)
    首先配置JAVA_HOME环境变量:
    在这里插入图片描述
    然后再将JAVA_HOME配置到Path环境变量中:
    在这里插入图片描述
    检查是否配置成功:(cmd:java -version
    在这里插入图片描述

二、安装STM32CubeMX

1.STM32CubeMX官网链接:https://www.st.com/en/development-tools/stm32cubemx.html

2.选择对应平台的安装包下载,这里我选择Windows平台:
请添加图片描述
解压后双击exe文件运行安装程序
在这里插入图片描述
安装步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完成:
在这里插入图片描述

三、获取且安装STM32Cube MCU Packages

- 方式1:在线安装
打开STM32CubeMX后,选择Help->Manage embedded software packages选项
在这里插入图片描述
选择列表中需要的MCU Packages,这里我使用的STM32G070-Nucleo-64开发板,故选择STM32G0系列,点击Install Now进行安装:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
- 方式2:离线安装(ST官网下载对应的MCU Packages):
STM32Cube Ecosystem官网的列表中找到需要的型号,点击名字即可跳转到对应型号的资源页面->找到Packages->Get SoftwareGitHub压缩包(zip)两种获取方式
在这里插入图片描述
在这里插入图片描述
压缩包不要解压,打开STM32CubeMX->Package Manager,导入对应的压缩包(zip)
在这里插入图片描述

四、点亮LED

1. 准备事项

硬件:
这里我准备的是ST意法官方STM32G070的开发板(STM32G070-Nucleo-64)请添加图片描述
软件:

  • STM32CubeMX
  • 芯片对应的Package
  • Keil-MDK

2.生成MDK初始工程(HAL库)

1.MCU选择器:
在这里插入图片描述
在这里插入图片描述
2.配置时钟源(系统的“脉搏”)

  • 选用外部高速时钟HSE:外接晶振通过PLL倍频到高速),需要在System Core配置RCC
  • 选用默认的内部时钟HSI:无需外部晶振的内部时钟),可以略过这步
    这里我使用外部时钟
    在这里插入图片描述
关于时钟源的讲解:LSI 是低速内部时钟,RC 振荡器,频率为 32kHz 左右。供独立看门狗和自动唤醒单元使用。
②LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。
③HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~26MHz。当使用有源晶振时,时钟从 OSC_IN 引脚进入,OSC_OUT 引脚悬空,当选用无源晶振时,时钟从 OSC_INOSC_OUT进入,并且要配谐振电容。HSE 我们使用 8M的无源晶振。如果我们使用 HSE或者 HSE经过 PLL倍频之后的时钟作为系统时钟 SYSCLK。野火和正点原子的F429开发板接的是 25M 的晶振。安富莱的开发板是8M外接晶振。HSE 也可以直接做为系统时钟或者 PLL 输入。
④HSI 是高速内部时钟,RC 振荡器,频率为 16MHz。可以直接作为系统时钟或者用作 PLL输入。
⑤PLL 为锁相环倍频输出。STM32F4 有三个 PLL:PLL(PLL)HSE 或者 HSI 提供时钟信号,并具有两个不同的输出时钟。另外两个 PLL(PLLI2S)PLL(PLLSAI)用于生成精确时钟,在 I2SSAI1 上实现高品质音频性能。很少用先不看

3.配置LED的GPIO引脚
查找开发板相关资料:
意法开发板资料名称检索法:型号(Nucleo)+MCU型号
在这里插入图片描述
查找LED相关部分:用户LED对应引脚为PA5
在这里插入图片描述
所以我们配置PA5引脚:
在这里插入图片描述
4.配置时钟树
STM32G070最高主频:64M
STM32CubeMX可以通过图形化界面直接配置PLL,使HCLK = 64MHz即可
在这里插入图片描述

时钟树配置原理:

PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为 P(第一个输出 PLLP)或者 Q(第二个输出 PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。例如我们的外部晶振选择 8MHz。同时我们设置相应的分频器 M=8,倍频器倍频系数 N=336,分频器分频系数 P=2,那么主 PLL 生成的第一个输出高速时钟 PLLP 为:8MHZ/8*336/2=168

PLL=8MHz * N/ (M*P)=8MHz* 336 /(8*2) = 168MHz
请添加图片描述

如果我们选择HSEPLL时钟源,同时SYSCLK时钟源为PLL,那么SYSCLK时钟为 168MHz。看下面的程序也是这样的,说明计算无误。

请添加图片描述

助记:因为2大于1,所以APB2外设时钟也一定要大于APB1外设时钟。

5.工程、代码生成设置
在这里插入图片描述
在这里插入图片描述
生成代码
点击GENERATE CODE即可生成MDK-V5工程:
在这里插入图片描述
6.在MDK软件下编写、编译、下载用户代码

STM32CubeMX生成的代码目录如下:
在这里插入图片描述
进入MDK-ARM目录,打开工程:
在这里插入图片描述
main.c中的main函数中编写简单的用户代码

while (1)
 {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

  /* USER CODE END 3 */
	
	HAL_Delay(100);
	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
		
 }

编译代码(Build)
然后编译整个工程:
在这里插入图片描述
设置下载器
在这里插入图片描述
在这里插入图片描述
下载运行(Load):
在这里插入图片描述

实验现象:
成功点亮User LED
请添加图片描述

资料参考:
MCUlover666
果果小师弟
STM32意法官网

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。