STM32基于HAL库实现LED闪烁


文章目录

  • 前言
  • 实验原理
  • **闪烁实现所用到的函数**
  • 主要代码
  • 总结


前言

实验环境:STM32CubeMX

实验开始之前,如果你没有安装实验环境的话,搭建教程如下:https://blog.csdn.net/qq_43279579/article/details/112213196


实验原理

LED本身是二极管,只能通过直流电,所以必须用电源将市电交流转化为直流电(除非是电池供电)。
LED的发光亮度对电流的响应时间非常短,随电流变化而变化,通过多少电,发出多少光,所以LED闪烁只与其驱动电源的输出电流的频率和纹波(无法避免)有关。
通过控制LED上管脚输出高低电平,来实现LED闪烁。
STM32基于HAL库实现LED闪烁_第1张图片

观察电路原理图,观察LED的管脚,当输出为低电平时,LED处于一个连通的状态,因此,LED被点亮。
而当LED的管脚输出高电平时,LED两边不存在电势差,就不会有电流流过,即LED被熄灭。

闪烁实现所用到的函数

本次实验将在HAL库的基础上进行,由于基于HAL库,所以我们将会被提供一些相关的方便的函数去提高我们的开发效率。它们是延时函数和写管脚函数。

  • ①延时函数(HAL_Delay)
    函数原型: void HAL_Delay (__IO uint32_t Delay)
    参数说明:Delay表示所要延时的时间大小,单位是毫秒

  • ②写管脚函数(HAL_GPIO_WritePin)
    函数原型:void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t
    GPIO_Pin, GPIO_PinState PinState)
    参数说明:
    GPIOx: 管脚组(x的取值为A~G)
    GPIO_Pin: 管脚编号(x的取值为0~15)
    PinState: 管脚的状态(取值为GPIO_BIT_RESET表示0, GPIO_BIT_SET表示1)

主要代码

由于使用了HAL库,提高了我们的开发效率,所以,实验代码也将极大地简短。

while (1)
  {
		//写循环执行的代码		
		//第一步LED 亮 PC0 设置为0
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);
		//第二步 延时
		HAL_Delay(1000);
		//第三步LED 灭
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);
		//第四步 延时
		HAL_Delay(1000);
  }

保存编译运行,可以看到开发版上的LED灯实现循环闪烁。


总结

通过本次基于HAL库实现LED灯闪烁的实验,去理解实现闪烁的原理图,用一个简单的小实验让我们去接触到像HAL一样强大的开发工具。虽然HAL的库的功能有很多,但是在开发生活中,我们只需要选取自己需要的部分去查阅HAL开发手册即可。

你可能感兴趣的:(物联网)