#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. C++ friend友元函数和友元类(转)

    一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们来介绍一种例外情 ...

  2. 关于C++ const 的全面总结 (转)

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...

  3. 论文阅读笔记十三:The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation(FC-DenseNets)(CVPR2016)

    论文链接:https://arxiv.org/pdf/1611.09326.pdf tensorflow代码:https://github.com/HasnainRaz/FC-DenseNet-Ten ...

  4. ActiveSync之HTTP

    Exchange ActiveSync:HTTP协议让客户端能够同步存储在服务器上的数据. 互联网工程工作小组(IETF)要求所有互联网协议都比支持UTF-8编码.因此,ActiveSync传输所使用 ...

  5. javascript 相关小的知识点集合

    本文主要是列出一些javascript 相关的,不限于javascript的,容易记错或者遗忘的小知识,小技巧. 1.javascript中的false 在 JavaScript,常见的 false ...

  6. kickstart-E

    A题 简答模拟题 #include <iostream> #include<stdio.h> #include <set> #include <algorit ...

  7. 令人疑惑的 std::remove 算法

    摘自<Effective STL>第32条 remove的声明: template<class ForwardIterator, class T> ForwardIterato ...

  8. alpha冲刺5/10

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺5 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 最近事情有点多,只是跟进了下进度,写了写博客 接下来 ...

  9. PrintDocument打印、预览、打印机设置和打印属性的方法

    WindowsForm 使用 PrintDocument打印.预览.打印机设置和打印属性的方法. private void Form1_Load(object sender, System.Event ...

  10. python 进阶读书笔记1 -- 理解python一切皆对象

    理解python一切皆对象: 1.所有的类都是由type创建的 2.所有的类的基类都是object 3.type是类,也是实例,type的基类是object,type对象是由type创建的 4.obj ...