单片机入坑教程(二)让你的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闪烁起来
单片机入坑教程(二)让你的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闪烁起来
举报