通过按键实现LED灯的亮灭(含两种情况)
#include "stm32f10x.h"// 相当于51单片机中的 #include <reg51.h>
#include "stm32f10x_gpio.h"
/*通过按键实现LED灯的亮灭
*本项目是两个效果,烧程序时注意分开!!!!!
*1、LED实现的效果实是K1一直按下LED一直亮,直到K1松开LED熄灭
*2、按一下key实现LED亮,再按一下实现LED灭
*
*/ /*配置GPIO
*step1配置时钟
*结构体:Speed、Mode、Pin
*初始化
*/
int main(void)
{
//点亮红色灯
//step1:使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//结构体
GPIO_InitTypeDef a;
a.GPIO_Speed=GPIO_Speed_50MHz;
a.GPIO_Pin=GPIO_Pin_5;
//推挽输出
a.GPIO_Mode=GPIO_Mode_Out_PP;
//调用GPIO初始化函数
GPIO_Init(GPIOB,&a);
//设置PB5为低点平
//GPIO_ResetBits(GPIOB,GPIO_Pin_5);
//GPIO_SetBits(GPIOB,GPIO_Pin_5); /**************按键初始*************/ //step1:时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//step2:定义GPIO初始化结构体变量
GPIO_InitTypeDef b;
b.GPIO_Speed=GPIO_Speed_50MHz;
b.GPIO_Pin=GPIO_Pin_0;
//浮空输入
b.GPIO_Mode=GPIO_Mode_IN_FLOATING;
//stept3:调用GPIO初始化函数
GPIO_Init(GPIOA,&b);
/************************1********************************/
/*
*知识点:读取电平的函数:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
*详细见后面截图
*/ /*LED实现的效果实是K1一直按下LED一直亮,直到K1松开LED熄灭*/ while()//死循环随时检测按键的情况
{
//读取引脚的点平并赋值给i
int i = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
if(i==)//判断K1的电平是否为0
{
//为0时,设置PB5为高电平,
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
else
{ //设置PB5为低点平
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
} /***************************2*********************************/
/*********以下代码实现按键按一下LED亮,再按以下LED灭*********/
int pre=;//上一次循环按键的点平
while()
{
//读取引脚的点平
int states = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
if(states==&&pre==)//states是循环时检测的电平,难点在这???????????
{
//按键刚松开那一刻,states马上变为0,但是上一次循环中给pre赋的值还是1
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==)//再判断是否为低电平
{
//给GPIOB端口5赋值为高电平,实现LED亮
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
else
{
//给GPIOB端口5赋值为低电平,实现LED灭
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
}
pre=states;//把本次循环按键的电平赋值给上一次
}
/*******************************************************************/
}

通过按键实现LED灯的亮灭(含两种情况)的更多相关文章
- (三)开关检测来控制LED灯的亮灭
开关检测案例一: 具体电路图如下: K1--K4闭合,控制 D1—D4 亮灭 产生的问题: 1.关于 R8 R9 R7 R10 的阻值选择问题,倘若太大的话, 比如10K 不管开关断开还是闭合,好像 ...
- 6-51单片机ESP8266学习-AT指令(8266TCP服务器--做自己的AndroidTCP客户端发信息给单片机控制小灯的亮灭)
http://www.cnblogs.com/yangfengwu/p/8776712.html 先把源码和资料链接放到这里 链接: https://pan.baidu.com/s/1jpHZjW_7 ...
- 嵌入式实验一:LED灯点亮
实验一:LED灯程序 一. 实验环境 开发机环境 操作系统:ubuntu 12.04 交叉编译环境:arm-linux-gcc 4.3.2 6410板子内核源码:linux-3.0.1 目 ...
- 5-51单片机ESP8266学习-AT指令(8266TCP服务器--用手机TCP调试助手发信息给单片机控制小灯的亮灭)
http://www.cnblogs.com/yangfengwu/p/8759294.html 源码链接:https://pan.baidu.com/s/1wT8KAOIzvkOXXNpkDI7E8 ...
- 7-51单片机ESP8266学习-AT指令(8266TCP服务器,编写自己的C#TCP客户端发信息给单片机控制小灯的亮灭)
http://www.cnblogs.com/yangfengwu/p/8780182.html 自己都是现做现写,如果想知道最终实现的功能,请看最后 先把源码和资料链接放到这里 链接: https: ...
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...
- 按键控制LED灯-ESP32中断处理
#include <driver/gpio.h> #include <esp_task_wdt.h> #include <freertos/FreeRTOS.h> ...
- 独立按键控制led灯
#include "regx51.h"typedef unsigned int u16; void delay_us(u16 time){ while(time--){} }voi ...
- 第7章 使用寄存器点亮LED灯
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
随机推荐
- log4j2的配置文件log4j2.xml笔记
一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...
- AI学习吧
一:AI学习吧 项目描述 系统使用前后端分离的模式,前端使用vue框架,后端使用restframework实现. 项目需求 公司开发AI学习吧,由于公司需要一款线上学习平台,要开发具有线上视频学习.支 ...
- 论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)
前面介绍了两个文本检测的网络,分别为RRCNN和CTPN,接下来鄙人会介绍语义分割的一些经典网络,同样也是论文+代码实现的过程,这里记录一下自己学到的东西,首先从论文下手吧. 英文论文原文地址:htt ...
- 51 NOd 2006 飞行员配对(匈牙利算法二分匹配)
题目来源: 网络流24题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 第二次世界大战时期,英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一 ...
- Python生成PASCAL VOC格式的xml标注文件
Python生成PASCAL VOC格式的xml标注文件 PASCAL VOC数据集的标注文件是xml格式的.对于py-faster-rcnn,通常以下示例的字段是合适的: <annotatio ...
- Git 分支 - 分支的新建与合并
转载自:https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB ...
- CentOS 6.9 NFS安装和配置
1.安装依赖包 yum install nfs-utils rpcbind -y 2.开机启动 chkconfig rpcbind on chkconfig nfs on 3.创建一个共享目录和加权限 ...
- 《深入探索Netty原理及源码分析》文集小结
<深入探索Netty原理及源码分析>文集小结 https://www.jianshu.com/p/239a196152de
- Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库
概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...
- IO流-file
1.1 IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把 ...