一、通过一个按键来控制LED的亮灭
实现两个功能:按键按下,LED点亮 ;按键释放,LED熄灭。
二、Proteus仿真图
三、代码(includes.h main.c led.h led.c key.h key.c)
1. includes.h
//includes.h
#include "stm32f10x.h"
#include "vartypes.h"
#include "led.h"
#include "key.h"
2.main.c
//main.c
#include "includes.h"
int main(void)
{
LEDInit();
KeyInit();
LED(0);
while (1)
{
if(KeyScan() ==KEY_ON)
{
LED(1);
}
if(KeyScan() ==KEY_OFF)
{
LED(0);
}
}
}
3.led.h
//led.h
#include "vartypes.h"
#ifndef _LED_H
#define _LED_H
void LEDInit(void );
void LED(Int08U );
#endif
4.led.c
//led.c
#include "includes.h"
void LEDInit(void )
{
GPIO_InitTypeDef g;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA ,ENABLE );
g.GPIO_Pin =GPIO_Pin_1 ;
g.GPIO_Mode =GPIO_Mode_Out_PP ;
g.GPIO_Speed =GPIO_Speed_10MHz ;
GPIO_Init(GPIOA,&g );
}
void LED (Int08U state)
{
if(state==0)
{
GPIO_SetBits(GPIOA ,GPIO_Pin_1);
}else
{
GPIO_ResetBits(GPIOA ,GPIO_Pin_1);
}
}
5.key.h
//key.h
#include "vartypes.h"
#ifndef _KEY_H
#define _KEY_H
#define KEY_ON 1
#define KEY_OFF 0
void KeyInit(void );
Int08U KeyScan(void );
#endif
6、key.c
//key.c
#include "includes.h"
void KeyInit()
{
GPIO_InitTypeDef g;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB,ENABLE );
g. GPIO_Pin =GPIO_Pin_0 ;
g. GPIO_Mode =GPIO_Mode_IPD ;
GPIO_Init (GPIOB ,&g);
}
Int08U KeyScan()
{
return GPIO_ReadInputDataBit (GPIOB,GPIO_Pin_0 );
}