按键实现控制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);
}
相关文章
|
10月前
|
存储 安全 Cloud Native
从数据风险出发的云上数据安全最佳实践
本文介绍了从数据风险出发的云上数据安全最佳实践,涵盖数据泄露现状及原因分析,以及基于云的安全机制。文章详细探讨了以云为基础实现数据全链路可视可控的方法,包括资产可见可控、数据安全中心、治理闭环和自动化智能化的数据安全治理能力。通过云原生方案,企业可以更高效地识别、预警和处置数据风险,确保数据安全。文中还提到多项免费工具和服务,帮助企业降低数据泄露风险并减少安全投入。
358 60
|
网络协议 算法 数据库
IS-IS原理与配置
IS-IS原理与配置
|
数据可视化
漏刻有时数据可视化Echarts组件开发(17):环图显示设备状态正常故障的解决方案
漏刻有时数据可视化Echarts组件开发(17):环图显示设备状态正常故障的解决方案
162 0
|
机器学习/深度学习 数据采集 运维
Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战
Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战
|
存储 缓存 固态存储
Linux设备全览:从字符到块,揭秘每种设备的秘密
在Linux的世界里,设备是构成系统的基础,它们使得计算机能够与外界互动。Linux设备可以大致分为几种类型,每种类型都有其独特的特性和用途。🌌让我们一起探索这些设备类型及其特性。
|
Kubernetes 负载均衡 网络协议
K8s如何实现服务发现与配置管理
K8s在实现负载均衡与配置管理上的原理是咋样的呢?
|
SQL 数据库
SQL INSERT INTO 语句详解:插入新记录、多行插入和自增字段
SQL INSERT INTO 语句用于在表中插入新记录。
1661 0
|
数据可视化 关系型数据库 MySQL
MySql命令报错:Duplicate entry ‘10‘ for key ‘PRIMARY‘解决方案
MySql命令报错:Duplicate entry ‘10‘ for key ‘PRIMARY‘解决方案
1132 0
|
网络协议 Linux 开发工具
Centos7配置阿里云DNS
Centos7配置阿里云DNS
Centos7配置阿里云DNS
|
Shell 网络安全 数据安全/隐私保护
使用 ssh-agent,实现多台机器 ssh 免密码登陆
使用 ssh-agent,实现多台机器 ssh 免密码登陆
754 0