#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. 刚发了两个关于极光推送的网上Demo,再次自己结合官网总结一下,以便加深印象

    简单源码如下: //Map<String, String> parm是我自己传过来的参数,同学们可以自定义参数public static void jpushAndroid(Map< ...

  2. zabbix 3.2.4 使用详解

    一:zabbix简介及原理 二:zabbix添加主机: /usr/share/zabbix/include/locales.inc.php   #这里为zabbix语言包路径‘zh_CN’ 为true ...

  3. ID3算法下的决策树

    网上的内容感觉又多又乱,自己写一篇决策树算法.希望对别人有所启发,对自己也是一种进步. 决策树 须知概念 信息熵 & 信息增益 熵: 熵(entropy)指的是体系的混乱的程度,在不同的学科中 ...

  4. 在IDEA中编写Spark的WordCount程序

    1:spark shell仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在IDE中编制程序,然后打成jar包,然后提交到集群,最常用的是创建一个Maven项目,利用Maven来管理jar包 ...

  5. HDFS的一些配置文件修改

    sbin/start-dfs.sh 和 sbin/stop-dfs.sh 在第二行增加如下内容 HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hd ...

  6. SpringBank 开发日志 使用maven构建dubbo服务的可执行jar包

    写这篇日志的时候,我已经完成了这个目标,并且中间经历了一次面试.现在回过头看,已经觉得印象不那么深刻了,果然还是一边思考,一边记录这样最好.但我还是严格要求自己,从新做了梳理,对相关配置进行了整理和说 ...

  7. 【转】利用 selenium 的 webdrive 驱动 headless chrome

    1.参考 使用 headless chrome进行测试 2.概念 Headless模式解决了什么问题: 自动化工具例如 selenium 利用有头浏览器进行测试,面临效率和稳定性的影响,所以出现了 H ...

  8. python全栈开发day77-博客主页

    1.文章分类 2.标签 3.归档 1) MySQL的日期格式化函数 DATE_FORMAT(字段名,格式) 2) Django ORM中如何执行SQL原生语句 (1) models.Article.o ...

  9. TypeScript学习笔记 (一)基础特性

    一. 字符串新特性 1. 多行字符串 var str = ``; 2. 字符串模板 var world = "world"; var str = `hello ${world}`; ...

  10. Docker镜像、容器剖析

    我们通常所说的docker是什么? 在这里英文本意为“搬运工”这里指的的docker搬运点的是集装箱,集装箱装的是够任意类型的APP,开发者通过Docker可以将app变成一种标准化,可移植的.自管理 ...