KEIL 5 点亮LED灯的实现方法

1本节从调用固件库来点亮LED灯;使用的是指南者的板子,选择的KEIL5编辑,

一,构建文件库并将相应的文件导入;

   创建文件,加入相应的文件库 工程创建完毕,这里不会可以在网上下载一个工程,把需要的复制过来再导入就可以了!

二,逻辑

  导入相关文件后开始书写,确保.h的文件导入

1,为了文件的调用重复采用,采用条件编译

#ifndef _BSP_LED_H
#define _BSP_LED_H

#endif

2.操作LED灯,操作其GPIO    LED_GRIO_Config()初始化

  添加要控制的参数,引脚(Pin),模式,速度;

  做好在头文件里面的宏定义;  

  调用一个初始化函数,将三个值写道CRL寄存器里面;

3,打开时钟,时钟是我们的心脏

可以看到这里的时钟RCC在APB2 上面是由端口的 GPIOB,所以操作GPIOB及”使能“

4,初始化函数,操作ODR,查找GPIO.C文件调用SetBits和ResetBits控制灯光的关灭;

5,采用了一个延世函数,让灯光闪烁,亮起来不枯燥!

三,实际代码

1,bsp_led.c文件,相关的GPIO函数,都是在固件库里面查找使用的!

//bsp:board suport package 板机支持包
#include "bsp_led.h"  

void LED_GPIO_Config(void)//初始化GPIO
{
	GPIO_InitTypeDef GPIO_InitStruct;//初始化结构体
	
	//开时钟 RCC
	RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE);//ENABLE 使能

	GPIO_InitStruct.GPIO_Pin= LED_G_GPIO_PIN ;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//通用推挽输出
	GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;//速度 50MHZ
	
  GPIO_Init(LED_G_GPIO_PORT,&GPIO_InitStruct);//初始化 端口  初始化的结构体(变量指针取地址)

	
}

 2,bes_led.h文件

 

#ifndef _BSP_LED_H
#define _BSP_LED_H


#include "stm32f10x.h"

#define LED_G_GPIO_PIN     GPIO_Pin_0   //GREEN 灯
#define LED_G_GPIO_PORT    GPIOB        //端口
#define LED_G_GPIO_CLK              RCC_APB2Periph_GPIOB

#define ON    1
#define OFF   0

#define LED_G(a)    if(a)\
	GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN );\
else GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN );

void LED_GPIO_Config(void);


#endif /*_BSP_LED_H*/


3.main.c文件

#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>


#include"bsp_led.h"

void Delay(uint32_t count)
{
	for(;count!=0;count--);
}
int main(void)
{
	// 来到这里的时候,系统的时钟已经被配置成72M。
	LED_GPIO_Config();
	
	while(1)
	{
	
	//GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN );//灭
		LED_G(OFF);  //带参宏
	Delay(0xFFFFF);
	//GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN );//亮
		LED_G(ON);
	Delay(0xFFFFF);
	}
}

运行成功!!

附加:流水灯

1.流水灯就是使灯在灯闪烁时,亮起来不同的颜色,三基色RGB,这里只需要定义另外两个灯的引脚和条件,依次亮起来就可以了,也可以使同一时间,两个或者三个都打开,产生更多的颜色,增加趣味性!

物联沃分享整理
物联沃-IOTWORD物联网 » KEIL 5 点亮LED灯的实现方法

发表评论