按键实现控制LED灯

简介: 按键实现控制LED灯功能简述宏定义与预处理初始化主函数


功能简述


按键控制LED灯分两种情况
1:按下一亮,直到第二次按下熄灭
2:按一下常亮,松开就熄灭


宏定义与预处理


/************LED.h文件************/
#ifndef  _ LED.h
#define _ LED.h
#include “stm32f10x.h”
//宏定义LED灯
#define  LEDPORT  GPIOB  //IO组
#define  LED1     GPIO_Pin_0  //定义LED1
#define  LED2     GPIO_Pin_1  //定义LED2
//宏定义按键
#define  KEYPORT  GPIOA
#define  KEY1  GPIO_Pin_0
/************LED.h文件************/
/************LED.c文件************/
#include “LED.h”


初始化


//LED灯初始化
Void Init_Led(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;   
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能其所在时钟  
GPIO_InitStructure.GPIO_Pin= LED1|| LED2  //设置引脚          
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置模式        
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置速度     
GPIO_Init(LEDPORT,&GPIO_InitStructure);
}
//按键初始化
Void Init_ Key(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;    
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能其所在时钟     
GPIO_InitStructure.GPIO_Pin= KEY1;  //设置引脚          
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置模式        
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置速度     
GPIO_Init(KEYPORT,&GPIO_InitStructure);
}


主函数


/************LED.c文件************/
//第一种情况1:按下一亮,直到第二次按下熄灭
main()
{
Int num = 0;
While(1)
{
//假设按下states = 0
int states = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
if(states==0&&((num%2)==0))
       {
             //按键刚松开那一刻,states马上变为0             if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//再判断是否为低电平
             {
                 //给GPIOB端口5赋值为高电平,实现LED亮
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
                 Num ++;
             }
}
             else
            {
                if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)
{
                 //给GPIOB端口5赋值为低电平,实现LED灭
                      GPIO_SetBits(GPIOB,GPIO_Pin_5);
                Num ++;
             }
}  
}
}
//2:按一下常亮,松开就熄灭
//过程省略
int states = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
//如果按下了,就亮
if (states == 0)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
//如果松开了,就熄灭
Else
{
  GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
相关文章
|
3月前
|
机器人 Linux 异构计算
实例1:控制树莓派板载LED灯闪烁
本文是一个关于如何使用Python编程控制树莓派板载LED灯闪烁的实验教程,涵盖了树莓派的基本概念、LED控制文件的读写操作、Python `open()` 和 `sleep()` 函数的使用方法,以及具体的实验步骤和代码实现,目的是让读者通过实践熟悉树莓派操作和Linux文件读写。
74 1
实例1:控制树莓派板载LED灯闪烁
|
3月前
|
机器人 异构计算 SoC
实例2:树莓派GPIO控制外部LED灯闪烁
本文是一个关于使用树莓派GPIO控制外部LED灯闪烁的实验教程,介绍了树莓派的基本概念、GPIO接口的使用、RPi.GPIO库的基本操作,以及通过Python编程实现LED灯周期性闪烁的详细步骤和代码示例。
90 1
实例2:树莓派GPIO控制外部LED灯闪烁
|
6月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
|
6月前
|
C语言
点亮一个LED+LED闪烁+LED流水灯——“51单片机”
点亮一个LED+LED闪烁+LED流水灯——“51单片机”
|
C语言
单片机控制LED灯
单片机控制LED灯
271 0
单片机点亮LED与LED闪烁
单片机点亮LED与LED闪烁
83 0
单片机点亮LED与LED闪烁
|
编译器
【51单片机】按键操作(单个灯闪烁&&流水灯)
按键操作(单个灯闪烁&&流水灯)
547 0
STM32控制GPIO完成点亮LED灯
STM32控制GPIO完成点亮LED灯
351 0
STM32控制GPIO完成点亮LED灯
单片机开关控制LED的点亮及闪烁
单片机开关控制LED的点亮及闪烁
343 0