STM32CUBMX生成HAL库进行GPIO点亮LED的超详细小白教程

一.HAL库简介

HAL库(硬件抽象层库)是一个提供对底层硬件操作的抽象的库,它使得开发者可以使用统一的接口进行硬件操作,而不必关心底层硬件的具体实现细节。HAL库通常由硬件厂商提供,用于支持其硬件设备,并为其提供标准化的接口。

HAL库的主要目的是简化底层硬件的操作,使得开发者可以更加专注于实现其应用程序的逻辑,而不是花费大量时间在硬件操作上。通过使用HAL库,开发者可以使用一些简单的函数和API来控制硬件,而不需要了解底层硬件的具体工作原理和实现细节。

HAL库通常包括一些常用的硬件操作函数和数据结构,例如GPIO(通用输入输出)操作、SPI通信、I2C通信、PWM(脉冲宽度调制)等。开发者可以使用这些函数和数据结构来操作硬件,实现其所需的功能。

总之,HAL库是一种提供对底层硬件操作的抽象的库,它使得开发者可以使用统一的接口进行硬件操作,简化开发过程,提高开发效率。

二.芯片介绍

为了限制我使用hal库,我决定使用stm32f7xx系列芯片,这款芯片或是因为太新或是因为hal库本身具有的便捷性和芯片本身的高速性,只能使用hal库,可以参考STM32【H7】理论——综述、HAL库简述_stm32h7开发指南-hal库-CSDN博客

但其实所有的芯片都一个样,只是在选择的时候注意一下就行 

三.软件准备

        1.stm32cubmx安装

                参考STM32CubMX的详细安装方法_stm32cubemx安装-CSDN博客

        2.keil5安装

                参考keil5安装教程-CSDN博客

四.基础操作——点亮led

        1.cubmx生成初始代码

点击new project进行配置

                

 选择我们的芯片

 选择要点灯的引脚,点击选择gpio_Output模式(这里我PA12离得近,就用PA12,可以任意按需求选择)

 点击边上的system core,下面有个gpio,点他,对我们的gpio,选择引脚进行配置

 接下来就可以进行配置了

 第一项output level表示的是你要输出低电平还是高电平,如果高电平对应到hal里面就是

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12, GPIO_PIN_SET);

低电平就是

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12, GPIO_PIN_RESET);

我们要接到led的正极,所以输出高电平点亮

第二行表示的是你要输出的模式,开漏输出(OD)还是推挽输出(PP),参考推挽输出、开漏输出和悬空输入等_开漏默认电平是啥-CSDN博客

总结就是尽量用PP ,当然考虑到功耗、引脚特殊情况可以用OD

下一行是上拉还是下拉还是不拉电阻,在推挽模式下都一样,所以选择no pull_up and no pull_down

下一行是输出速度,考虑本身使用情况,一般都够用,考虑功耗、延迟等因素选择,这里low就够用

最后一行是加标签,我们写上LED,这样在图上就可以看到

配置如下

 点击上面的project manager,进行文件配置

输入2.文件名 3.保存地址 4.编译器 5.版本 6.创建文件

这样我们的 代码就好了,可以选择打开文件夹还是直接打开keil,我们直接打开project

打开左边一排的main.c,不管上面一大堆代码,往下翻找到static void MX_GPIO_Init(void)配置,这样就看到了我们的代码

 往上翻,找到int函数,我们可以在有这种注释的中间写代码,这样后来再用cubmx改的时候就不会把我们写的代码刷新掉,在while()里面写表示循环执行,在while()外面写表示执行一次

 while里加入代码

  while (1)
  {
    /* USER CODE END WHILE */
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_12);
		HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }

TogglePin表示反转输出,原本低电平变高电平,原本高电平变低电平

delay表示延时,这里延时500ms

用stlink连接我们的单片机,接上led(长脚为正短脚为负)

按f7编译或者左上角的按钮,然后load

好了,我们的灯就亮了,欢迎入坑单片机,记得点赞加收藏,创作不易

物联沃分享整理
物联沃-IOTWORD物联网 » STM32CUBMX生成HAL库进行GPIO点亮LED的超详细小白教程

发表评论