1.软件及工程环境搭建
- 就不介绍了,可以直接用现成的
链接:https://pan.baidu.com/s/1GaSYpNm6yh-lZZmqRdXxvQ
提取码:dy63 - 相关库文件
链接:https://pan.baidu.com/s/19PLYdtiuSoZZGdVD7_tumQ
提取码:mrw8
2.按键key实现控制led灯
- 首先添加一下库函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210304190707772.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTI0NzQ2Ng==,size_16,color_FFFFFF,t_70#pic_center)
- 看一下开发板原理图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210304191153902.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTI0NzQ2Ng==,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021030419120340.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTI0NzQ2Ng==,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021030419121380.png#pic_center)
得到对应的按键对应KEY1->PA0,KEY2->PD2,KEY3->PC12;
点击KEY1是为高电平,KEY2,KEY3分别是低电平。 - 说这么多有用?快快上代码吧!
- 先LED初始化,就不写了,第一天的有,不会的可以去看看,那就KEYInit初始化
#include "key.h"
void KEYInit(void)
{
GPIO_InitTypeDef GPIO;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO.GPIO_Pin = GPIO_Pin_0;
GPIO.GPIO_Mode = GPIO_Mode_IN;
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOA,&GPIO);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO.GPIO_Pin = GPIO_Pin_2;
GPIO.GPIO_Mode = GPIO_Mode_IN;
GPIO.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOD,&GPIO);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
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<n;i++);
}
- (主要的来了来了,他来了)按键点击控制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);
}
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);
}
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);
}
#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();
KEYInit();
while(1)
{
flag_key1();
flag_key2();
flag_key3();
}
- 到此完美实现按键key实现控制led灯,最后感谢大家阅读,如果需要其他相关资料请联系我。