点亮stm32开发板的led灯
简述
我使用的是STM公司stm32f103系列开发板,我们通过看原理图,对LED进行操作,以实现led灯的控制。(对于小白来说很有作用哈!废话不说,上料!)
1.查看开发文档,看led的电路图
以我的开发板为例(看图!):
各位小白!大家首先看一下电路图,是不是我们给它一个低电平,这个LED0或LED1会亮呢?当然,没毛病。所以,我们必须设置低电平让LED亮起来,设置高电平,它就会灭。(有函数控制,后面会说)
哦,对了。我们还需要看一下连接引脚图。如下:
LED0对应GPIOB5管脚
LED1对应GPIOE5管脚
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.记着要多实操哈!
我个人认为:
所有的功能实现无非就是我对它这块空间的操作而已。