问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32 HAL库入门指南:点灯大师养成记

创作时间:
作者:
@小白创作中心

STM32 HAL库入门指南:点灯大师养成记

引用
CSDN
12
来源
1.
https://blog.csdn.net/as480133937/article/details/99935090
2.
https://blog.csdn.net/2201_75516394/article/details/139216168
3.
https://blog.csdn.net/qq_36528377/article/details/122462809
4.
https://blog.csdn.net/m0_63437984/article/details/134916437
5.
https://blog.csdn.net/u010168781/article/details/126471962
6.
https://blog.csdn.net/normog/article/details/139177651
7.
https://blog.csdn.net/weixin_46245859/article/details/132431546
8.
https://doc.embedfire.com/mcu/stm32/h743prov/hal/zh/latest/book/RCC.html
9.
https://doc.embedfire.com/products/link/zh/latest/tutorial/ebf_stm32_hal_tutorial.html
10.
https://www.cnblogs.com/USTHzhanglu/p/15640624.html
11.
https://www.cnblogs.com/xiaobaibai2021/p/15716909.html
12.
https://www.cnblogs.com/dongxiaodong/p/14128088.html

在嵌入式开发领域,STM32系列微控制器因其高性能、低功耗和丰富的外设资源而广受欢迎。然而,对于初学者来说,直接操作寄存器进行开发可能会感到复杂和困难。为了解决这个问题,ST公司推出了HAL(Hardware Abstraction Layer)库,它通过提供统一的API接口,大大简化了开发过程。本文将通过一个简单的点灯实验,手把手教你掌握STM32 HAL库的使用方法。

01

什么是HAL库?

HAL库是ST公司推出的一种硬件抽象层库,它将底层硬件细节封装起来,为开发者提供了一个统一的API接口。通过使用HAL库,开发者可以避免直接操作复杂的寄存器,从而简化开发过程,提高开发效率。此外,HAL库具有良好的跨平台性,同一个代码可以在不同的STM32芯片上运行,大大提高了代码的可移植性。

02

为什么选择点灯实验?

点灯实验是嵌入式开发中最基础也是最经典的实验之一。通过控制LED灯的亮灭,我们可以学习到GPIO(通用输入输出)端口的配置和使用方法,这是嵌入式开发中最基本的技能。此外,点灯实验简单易懂,能够帮助初学者快速建立起对HAL库的信心和理解。

03

准备工作

在开始之前,我们需要准备以下工具和材料:

  • STM32开发板(以STM32F4系列为例)
  • USB数据线
  • 电脑
  • STM32CubeMX软件
  • Keil MDK开发环境

安装STM32CubeMX

STM32CubeMX是ST公司推出的一款图形化配置工具,它可以帮助我们快速生成初始化代码。下载地址:STM32CubeMX官网

安装Keil MDK

Keil MDK是常用的嵌入式开发环境,用于编写和调试代码。下载地址:Keil官网

04

配置时钟

在开始任何外设配置之前,我们首先需要配置系统的时钟。时钟是微控制器的心脏,它决定了系统运行的速度。

  1. 打开STM32CubeMX,创建一个新的工程,选择你的STM32芯片型号。

  1. 在“Pinout & Configuration”界面,点击左侧的“RCC”选项,配置时钟源。选择“Crystal/Ceramic Resonator”作为高速时钟(HSE)和低速时钟(LSE)的来源。

  1. 进入“Clock Configuration”界面,设置时钟树。根据你的开发板配置外部晶振的频率,例如8MHz的HSE和32.768kHz的LSE。

  1. 确保系统时钟(SYSCLK)达到你所需的频率,例如168MHz。调整PLL(锁相环)设置以达到目标频率。
05

配置GPIO

接下来,我们需要配置GPIO引脚来控制LED灯。

  1. 在“Pinout & Configuration”界面,找到连接LED灯的引脚。假设LED灯连接到PA5引脚。

  2. 点击PA5引脚,将其配置为“GPIO_Output”。

  1. 在弹出的配置窗口中,选择“GPIO_Output”模式,设置输出类型为“Push Pull”(推挽输出),输出速度为“High”(高速)。

  1. 点击“GPIO”选项,确保PA5引脚的配置正确。
06

生成代码

完成所有配置后,点击右上角的“GENERATE CODE”按钮,生成初始化代码。选择保存路径,等待代码生成完成。

07

编写代码

打开生成的工程文件,使用Keil MDK打开。

  1. 在main.c文件中,找到main()函数。我们需要在主循环中添加控制LED灯闪烁的代码。
#include "main.h"

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();

  while (1)
  {
    // 控制LED灯亮灭
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // LED灯亮
    HAL_Delay(500); // 延时500ms
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // LED灯灭
    HAL_Delay(500); // 延时500ms
  }
}
  1. 解释关键函数:
  • HAL_GPIO_WritePin():用于设置GPIO引脚的输出电平。第一个参数是端口(如GPIOA),第二个参数是引脚号(如GPIO_PIN_5),第三个参数是电平状态(GPIO_PIN_SET表示高电平,GPIO_PIN_RESET表示低电平)。
  • HAL_Delay():用于延时,单位是毫秒(ms)。
08

下载程序

  1. 将开发板通过USB线连接到电脑。
  2. 在Keil中点击“Download”按钮,将程序下载到开发板。
  3. 点击“Run”按钮,运行程序。
09

实验结果

如果一切配置正确,你应该能看到LED灯以1秒的周期闪烁。这表明你已经成功使用HAL库控制了GPIO端口。

10

总结

通过这个简单的点灯实验,我们学习了STM32 HAL库的基本使用方法,包括:

  1. 使用STM32CubeMX配置时钟和GPIO
  2. 生成初始化代码
  3. 编写控制LED灯闪烁的程序

这只是HAL库功能的冰山一角。通过掌握这些基础知识,你可以进一步探索其他外设功能,如串口通信、定时器、ADC等。希望这篇文章能帮助你开启STM32嵌入式开发的新篇章!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号