STM32
直播中

nhcp

15年用户 1135经验值
私信 关注
[问答]

大神教你如何让你的LED灯闪烁起来

如何让你的LED灯闪烁起来?

单片机点亮LED灯的程序该怎样去写呢?

回帖(1)

何羽衣

2021-11-25 15:26:56
单片机入坑教程(二)让你的LED灯闪烁起来

唠唠两句

上一个博客已经说了点亮一个LED灯的具体方法了,本次来说说如何让你的LED灯闪烁起来。
LED灯无非只有亮和灭两种状态,这两种状态其实我们都已经会了:给它加所需要的电压即亮,撤去电压即灭。这个可以根据实际电路给LED灯高低电平就可以了。一个小的LED灯,3.3v20ms足够了,直接用单片机的IO口就可以了。但是如果是大功率的小灯或者LED灯的数量比较多,还是建议外接驱动电路,不然会烧坏单片机。驱动电路无非就是搞个三极管搭一下电路,如果不会百度搜一下,有很多。我们主要说一下程序的写法。
配置方法

建立led.c文件,初始化LED小灯对应的端口(本例是PA8)
void LED_Init(void)
{
       
        GPIO_InitTypeDef GPIO_InitStruct;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  //使能GPIOA时钟
                           
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStruct);//初始化
        GPIO_SetBits(GPIOA,GPIO_Pin_8);//拉高电平
}


建立led.h文件,申明void LED_Init(void)函数
#ifndef _LED_H_
#define _LED_H_


#include "stm32f10x.h"
void LED_Init(void);


#endif


在main文件中包含led.h和delay.h文件,delay文件是原子哥封装好的延时函数,我们直接调用就可以了。(不经意间又给原子哥打了个广告,原子哥给我发点广告费呗)
初始化LED和delay
在while中实现逻辑:高电平-延时低电平-延时
#include "LED.h"
#include "delay.h"


int main()
{
        LED_Init();
        delay_init();
        while(1)
        {
                GPIO_SetBits(GPIOA,GPIO_Pin_8);
                delay_ms(2000);
               
                GPIO_ResetBits(GPIOA,GPIO_Pin_8);
                delay_ms(2000);
        }
}


程序已经过实测验证,可使LED闪烁起来
举报

更多回帖

发帖
×
20
完善资料,
赚取积分