延时函数HAL_Delay实现LED闪烁-STM32电控学习笔记04

本文介绍如何使用STM32 HAL库实现LED灯的闪烁效果。通过HAL_Delay函数控制LED的亮灭时间,达到视觉上的闪烁效果。适用于初学者了解STM32的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

延时函数实现LED闪烁-STM32电控学习笔记04

day4:2022/9/22

【函数介绍】

我们传统的STM32开发中,都是直接对寄存器操作,从而实现功能,然而这种方式虽然编译效率很高,但是对单片机底层的知识要求也很高,操作前要查询各个外设的寄存器地址也很麻烦(大佬除外啊啊大佬除外),因此ST公司在后来开发了HAL库并大力推荐使用,在HAL库中封装着许多函数,它将最底层的东西封装起来,我们只需要调用一个个HAL库函数即可实现所需要的功能,例如上一篇帖子说的点灯,我们只有一行函数就实现了引脚的高电平输出,如果小伙伴想深入学习STM32底层原理的话,可以着重学习一下寄存器等,笔者觉得够用就行,大家自行bilibili即可。
上一篇帖子说了点亮LED灯就是给它一个高电平,那么反过来,想要它变暗就给它一个低电平,那倘若我们在高低电平的切换中加个几秒或者零点几秒的时间,那是不是可以做出LED灯闪烁的效果
因此为了实现这个功能,我们需要知道HAL库的延时函数,在这里我大概说几种(够用就行)大家也可以去看手册上的,会完整严谨一点,我这里纯粹为了简化。

1.计数延迟:我们对电机的精度要求并没有到毫秒微秒级别,所以一般不用这个函数,因此想要学习这个函数的小伙伴可以参考手册或者自行百度
2.nop函数延迟,原理和计时器类似
3.HAL_Delay()函数延迟,这个函数我们用的最多,括号内填的是一个数字,单位是毫秒ms,因此1000就代表1s,因此需要做出LED闪烁的效果,只需要按如下步骤循环

    高电平 <--> 延迟1s <--> 低电平
while(1)
{
    HAL_GPIOWritePin(GPIOH, GPIO_PIN_10,GPIO_PIN_SET);
    HAL_GPIOWritePin(GPIOH, GPIO_PIN_11,GPIO_PIN_SET);
    HAL_GPIOWritePin(GPIOH, GPIO_PIN_12,GPIO_PIN_SET);
    //首先给RGB灯一个高电平,让它亮起来
    HAL_Delay(1000);
    //延迟1s
    HAL_GPIOWritePin(GPIOH, GPIO_PIN_10,GPIO_PIN_RESET);
    HAL_GPIOWritePin(GPIOH, GPIO_PIN_11,GPIO_PIN_RESET);
    HAL_GPIOWritePin(GPIOH, GPIO_PIN_12,GPIO_PIN_RESET);
    //再给RGB灯一个低电平,让它暗下去
    HAL_Delay(1000);
    //延迟1s
}

烧录进入单片机就发现,LED灯以1S为半周期不断闪烁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SZTU_ELIAS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值