点亮stm32开发板的led灯

点亮stm32开发板的led灯

简述
我使用的是STM公司stm32f103系列开发板,我们通过看原理图,对LED进行操作,以实现led灯的控制。(对于小白来说很有作用哈!废话不说,上料!)

1.查看开发文档,看led的电路图
以我的开发板为例(看图!):
点亮stm32开发板的led灯
各位小白!大家首先看一下电路图,是不是我们给它一个低电平,这个LED0或LED1会亮呢?当然,没毛病。所以,我们必须设置低电平让LED亮起来,设置高电平,它就会灭。(有函数控制,后面会说)
哦,对了。我们还需要看一下连接引脚图。如下:

LED0对应GPIOB5管脚
点亮stm32开发板的led灯
LED1对应GPIOE5管脚
点亮stm32开发板的led灯
2.使用软件keil编写代码
对于keil软件的使用就不详说,不懂就去学,这篇文章的重点不在于帮你搞软件。
编写步骤:
1.建立一个led.c和led.h文件
源文件我们对它进行初始化配置;头文件对它进行声明;
代码后边有注解,看不懂就留言,我来给你强行解释。

头文件如下:

#ifndef _LED_h   //这种写法你们要熟记于心
#define _LED_h

#include "stm32f10x.h"  
#include "system.h"  

void LED_Init(void);//初始化函数

#endif

源文件如下:

#include "LED.h"
#include "SysTick.h"

void LED_Init()         //LED的初始化函数
{
	GPIO_InitTypeDef GPIO_InitStructure;  //定义结构体,配置IO口的状态
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOA,ENABLE);   //开启系统时钟,因为stm32f103系列中GPIO挂接在APB2总线上,如果大家不会写,就go to define,第二个参数我们就使能它enable;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; //配置引脚,因为上图中都是5号引脚
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//配置推挽输出模式,
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置输出速度
	
	GPIO_Init(GPIOB,&GPIO_InitStructure);   //初始化GPIOB
	GPIO_Init(GPIOE,&GPIO_InitStructure);   //初始化GPIOE
	
	GPIO_SetBits(GPIOB, GPIO_Pin_5);        //设置LED0为高电平
	GPIO_SetBits(GPIOE, GPIO_Pin_5);        //设置LED1为高电平
	
}


void LED_l()  //LED灯的亮灭实现函数
{
	
	while(1)					//死循环
	{
		ledg=0;					//绿灯亮
		ledr=1;					//红灯灭
		delay_ms(500);
		ledr=0;					//绿灯灭
		ledg=1;					//红灯亮
		delay_ms(500);			//系统延时函数
	}
}



附录
1.这时候大家肯定有疑惑,ledg是个啥鬼?ledg是我宏定义的,(哈哈,想白嫖,不可能。)
2.GPIO_SetBits(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin),这是设置高电平函数。
3.GPIO_ResetBits(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin)
,这是设置低电平函数。
4.我们也可以用这两个函数来控制灯的亮灭,实现起来很简单,你们就调用这两个函数
5.对于延时函数来说。如果没接触过晶振,我可以给大家一个比较接近1秒的数字。那就是来一个576次循环。比如for(int i=1;i<576;i++);
6.记着要多实操哈!

我个人认为:
所有的功能实现无非就是我对它这块空间的操作而已。

上一篇:stm32寻迹小车,占空比调速,0基础学习


下一篇:WPF教程二:理解WPF的布局系统和常用的Panel布局