#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灯的亮灭(含两种情况)的更多相关文章

  1. (三)开关检测来控制LED灯的亮灭

    开关检测案例一: 具体电路图如下: K1--K4闭合,控制 D1—D4 亮灭 产生的问题: 1.关于 R8 R9 R7 R10 的阻值选择问题,倘若太大的话,  比如10K 不管开关断开还是闭合,好像 ...

  2. 6-51单片机ESP8266学习-AT指令(8266TCP服务器--做自己的AndroidTCP客户端发信息给单片机控制小灯的亮灭)

    http://www.cnblogs.com/yangfengwu/p/8776712.html 先把源码和资料链接放到这里 链接: https://pan.baidu.com/s/1jpHZjW_7 ...

  3. 嵌入式实验一:LED灯点亮

    实验一:LED灯程序 一. 实验环境 开发机环境 ​ 操作系统:ubuntu 12.04 ​ 交叉编译环境:arm-linux-gcc 4.3.2 ​ 6410板子内核源码:linux-3.0.1 目 ...

  4. 5-51单片机ESP8266学习-AT指令(8266TCP服务器--用手机TCP调试助手发信息给单片机控制小灯的亮灭)

    http://www.cnblogs.com/yangfengwu/p/8759294.html 源码链接:https://pan.baidu.com/s/1wT8KAOIzvkOXXNpkDI7E8 ...

  5. 7-51单片机ESP8266学习-AT指令(8266TCP服务器,编写自己的C#TCP客户端发信息给单片机控制小灯的亮灭)

    http://www.cnblogs.com/yangfengwu/p/8780182.html 自己都是现做现写,如果想知道最终实现的功能,请看最后 先把源码和资料链接放到这里 链接: https: ...

  6. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  7. 按键控制LED灯-ESP32中断处理

    #include <driver/gpio.h> #include <esp_task_wdt.h> #include <freertos/FreeRTOS.h> ...

  8. 独立按键控制led灯

    #include "regx51.h"typedef unsigned int u16; void delay_us(u16 time){ while(time--){} }voi ...

  9. 第7章 使用寄存器点亮LED灯

    第7章     使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

随机推荐

  1. Java 获取图片的大小、宽、高

    参考:https://www.cnblogs.com/hongten/archive/2012/11/26/hongten_java_ImageReader_BufferedImage.html im ...

  2. spring cloud 路由网关zuul的高可用

    Zuul的高可用非常关键,因为外部请求到后端微服务的流量都会经过Zuul.故而在生产环境中,我们一般都需要部署高可用的Zuul以避免单点故障. 笔者分两种场景讨论Zuul的高可用. Zuul客户端也注 ...

  3. chart API笔记

    1. 参数说明 http://chart.apis.google.com/chart? chs=250x100 &chd=t:60,40 &cht=p3 &chl=Hello| ...

  4. DNS解析中的A记录、AAAA记录、CNAME记录、MX记录、NS记录、TXT记录、SRV记录、URL转发等

    AA记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录 NSNS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录 SOASO ...

  5. Linux(CentOS7)安装Tomcat

    概述 Tomcat是运行Jsp文件的容器服务,能够处理URL请求,类似于IIS.相对于IIS,Tomcat可以部署到Linux.Windows.IOS等操作系统.这里主要整理将Tomcat部署到Lin ...

  6. onclick传对象

    用onclick传对象的时候,用jquery无法进行操作 onclick=(this) 接收到参数后只需要转化一下 console.log($(obj).html());

  7. NEST - Elasticsearch 的高级客户端

    NEST - High level client Version:5.x 英文原文地址:NEST - High level client 个人建议:学习 NEST 的官方文档时,按照顺序进行,不宜跳来 ...

  8. 【Arduino】Arduino接收字符串

    [Arduino]Arduino接收字符串 相关文章 [Arduino]开发入门[十]Arduino蓝牙模块与Android实现通信 在[Arduino]开发入门[十]Arduino蓝牙模块与Andr ...

  9. python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)

    day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...

  10. BZOJ1095 [ZJOI2007]Hide 捉迷藏 动态点分治 堆

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ1095.html 题目传送门 - BZOJ1095 题意 有 N 个点,每一个点是黑色或者白色,一开始所 ...