1.软件及工程环境搭建
2.按键key实现控制led灯
- 首先添加一下库函数
- 看一下开发板原理图
得到对应的按键对应KEY1->PA0,KEY2->PD2,KEY3->PC12;
点击KEY1是为高电平,KEY2,KEY3分别是低电平。
- 说这么多有用?快快上代码吧!
- 先LED初始化,就不写了,第一天的有,不会的可以去看看,那就KEYInit初始化
#include "key.h"
/*******************************************************
*函数名:KEYInit
*功 能:按键初始化
*参 数:无
*返 回:无
*备 注:脚PA0,PD2,PC12
********************************************************/
void KEYInit(void)
{
//KEY1
GPIO_InitTypeDef GPIO;//自定义
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//外部时钟A使能
GPIO.GPIO_Pin = GPIO_Pin_0;//选择引脚
GPIO.GPIO_Mode = GPIO_Mode_IN;//选择模式
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;//选择上下拉
GPIO_Init(GPIOA,&GPIO);//写入寄存器
//KEY2
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//外部时钟D使能
GPIO.GPIO_Pin = GPIO_Pin_2;//选择引脚
GPIO.GPIO_Mode = GPIO_Mode_IN;//选择模式
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;//选择上下拉
GPIO_Init(GPIOD,&GPIO);//写入寄存器
//KEY3
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//外部时钟C使能
GPIO.GPIO_Pin = GPIO_Pin_12;//选择引脚
GPIO.GPIO_Mode = GPIO_Mode_IN;//选择模式
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;//选择上下拉
GPIO_Init(GPIOC,&GPIO);//写入寄存器
}
给一个自定义的延迟函数(这延迟函数好烦,早晚不要他)
void dalyg(int n)
{
int i;
for(i=0;i
}
(主要的来了来了,他来了)按键点击控制led1灯开和关
/*******************************************************
*函数名:flag_key1
*功 能:实现key1按键一点击控制led1灯开和关
*参 数:无
*返 回:无
*备 注:
********************************************************/
void flag_key1(void)
{
static int k=1,i;
if(KEY1==1 && k==1)
{
i++;
k=0;
dalyg(50);
}
else if(KEY1==0)
{
k=1;
dalyg(50);
}
if(i%2)
GPIO_SetBits(GPIOC,GPIO_Pin_11);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_11);
}
/*******************************************************
*函数名:flag_key2
*功 能:实现key2按键一点击控制led2灯开和关
*参 数:无
*返 回:无
*备 注:
********************************************************/
void flag_key2(void)
{
static int k=1,i;
if(KEY2==0 && k==1)
{
i++;
k=0;
dalyg(50);
}
else if(KEY2==1)
{
k=1;
dalyg(50);
}
if(i%2)
GPIO_SetBits(GPIOC,GPIO_Pin_10);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_10);
}
/*******************************************************
*函数名:flag_key3
*功 能:实现key3按键一点击控制led3灯开和关
*参 数:无
*返 回:无
*备 注:
********************************************************/
void flag_key3(void)
{
static int k=1,i;
if(KEY3==0 && k==1)
{
i++;
k=0;
dalyg(50);
}
else if(KEY3==1)
{
k=1;
dalyg(50);
}
if(i%2)
GPIO_SetBits(GPIOC,GPIO_Pin_13);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
}
.h需要引用这个三句
//宏定义KEY1,KEY2,KEY3的输出状态
#define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KEY2 GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_2)
#define KEY3 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)
主函数调用相关的函数
LEDInit();//LED初始化
KEYInit();//按键初始化
while(1)
{
flag_key1();
flag_key2();
flag_key3();
}
- 到此完美实现按键key实现控制led灯,最后感谢大家阅读,如果需要其他相关资料请联系我。
1.软件及工程环境搭建
2.按键key实现控制led灯
- 首先添加一下库函数
- 看一下开发板原理图
得到对应的按键对应KEY1->PA0,KEY2->PD2,KEY3->PC12;
点击KEY1是为高电平,KEY2,KEY3分别是低电平。
- 说这么多有用?快快上代码吧!
- 先LED初始化,就不写了,第一天的有,不会的可以去看看,那就KEYInit初始化
#include "key.h"
/*******************************************************
*函数名:KEYInit
*功 能:按键初始化
*参 数:无
*返 回:无
*备 注:脚PA0,PD2,PC12
********************************************************/
void KEYInit(void)
{
//KEY1
GPIO_InitTypeDef GPIO;//自定义
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//外部时钟A使能
GPIO.GPIO_Pin = GPIO_Pin_0;//选择引脚
GPIO.GPIO_Mode = GPIO_Mode_IN;//选择模式
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;//选择上下拉
GPIO_Init(GPIOA,&GPIO);//写入寄存器
//KEY2
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//外部时钟D使能
GPIO.GPIO_Pin = GPIO_Pin_2;//选择引脚
GPIO.GPIO_Mode = GPIO_Mode_IN;//选择模式
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;//选择上下拉
GPIO_Init(GPIOD,&GPIO);//写入寄存器
//KEY3
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//外部时钟C使能
GPIO.GPIO_Pin = GPIO_Pin_12;//选择引脚
GPIO.GPIO_Mode = GPIO_Mode_IN;//选择模式
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;//选择上下拉
GPIO_Init(GPIOC,&GPIO);//写入寄存器
}
给一个自定义的延迟函数(这延迟函数好烦,早晚不要他)
void dalyg(int n)
{
int i;
for(i=0;i
}
(主要的来了来了,他来了)按键点击控制led1灯开和关
/*******************************************************
*函数名:flag_key1
*功 能:实现key1按键一点击控制led1灯开和关
*参 数:无
*返 回:无
*备 注:
********************************************************/
void flag_key1(void)
{
static int k=1,i;
if(KEY1==1 && k==1)
{
i++;
k=0;
dalyg(50);
}
else if(KEY1==0)
{
k=1;
dalyg(50);
}
if(i%2)
GPIO_SetBits(GPIOC,GPIO_Pin_11);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_11);
}
/*******************************************************
*函数名:flag_key2
*功 能:实现key2按键一点击控制led2灯开和关
*参 数:无
*返 回:无
*备 注:
********************************************************/
void flag_key2(void)
{
static int k=1,i;
if(KEY2==0 && k==1)
{
i++;
k=0;
dalyg(50);
}
else if(KEY2==1)
{
k=1;
dalyg(50);
}
if(i%2)
GPIO_SetBits(GPIOC,GPIO_Pin_10);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_10);
}
/*******************************************************
*函数名:flag_key3
*功 能:实现key3按键一点击控制led3灯开和关
*参 数:无
*返 回:无
*备 注:
********************************************************/
void flag_key3(void)
{
static int k=1,i;
if(KEY3==0 && k==1)
{
i++;
k=0;
dalyg(50);
}
else if(KEY3==1)
{
k=1;
dalyg(50);
}
if(i%2)
GPIO_SetBits(GPIOC,GPIO_Pin_13);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
}
.h需要引用这个三句
//宏定义KEY1,KEY2,KEY3的输出状态
#define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KEY2 GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_2)
#define KEY3 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)
主函数调用相关的函数
LEDInit();//LED初始化
KEYInit();//按键初始化
while(1)
{
flag_key1();
flag_key2();
flag_key3();
}
- 到此完美实现按键key实现控制led灯,最后感谢大家阅读,如果需要其他相关资料请联系我。
举报