本次的代码全是在上次代码之上添加的.

1.user下新建文件夹key,新建bsp_key.h bsp_key.c文件.

2.keil项目添加bsp_key.c,魔术棒C/C++中include path添加key文件夹.

3.相应的源码为:

bsp_key.h中内容

//条件编译,防止重复定义头文件(stm32f10x.h在这里引入,但是在主函数中仍然引入,会被加载两次,若没有添加编译会报错.)
#ifndef BSP_KEY_H_
#define BSP_KEY_H_ #include "stm32f10x.h" #define KEY_ON 1
#define KEY_OFF 0 #define KEY_LED_GPIO_PIN GPIO_Pin_13
#define KEY_LED_GPIO_PORT GPIOC
#define KEY_LED_GPIOC_CLOCK RCC_APB2Periph_GPIOC void KEY_LED_Config(void);
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin); #endif

bsp_key.c中内容

//只需要包含自身的头文件即可
#include "bsp_key.h"

//配置按键的GPIOC,配置完成后通过检测GPIOC的pin13引脚(对应的寄存器为GPIOC-IDR-PIN13)的高低电平 判断键是否被按下,高--按下,低--未按下
void KEY_LED_Config(void){ GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(KEY_LED_GPIOC_CLOCK, ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin=KEY_LED_GPIO_PIN; GPIO_Init(KEY_LED_GPIO_PORT, &GPIO_InitStruct); }
//检测案件是否按下函数 GPIO_ReadInputDataBit 库函数中函数,含义为 检测某个GPIOX的某个pin的电平
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin){ /*检测是否有按键按下 */ if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin)==KEY_ON){ /*等待按键释放 */ while(GPIO_ReadInputDataBit( GPIOx, GPIO_Pin)==KEY_ON) ; return KEY_ON ; }else return KEY_OFF; }

main函数中内容

#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
#include "bsp_led.h"
#include "bsp_key.h" #define SOFT_DELAY Delay(0x0FFFFF);
//void Delay(__IO u32 nCount);
void Delay( uint32_t count){
for( ;count!=0;count--); } int main(void)
{
// 来到这里的时候,系统的时钟已经被配置成72M。
LED_GPIO_Config();
//默认情况,灯为灭的.(LED电路图为低电平点亮,配置完成后默认为低电平,即便是不赋值也会亮起来)
LED_OFF;
KEY_LED_Config();
while(1){
if(Key_Scan(KEY_LED_GPIO_PORT,KEY_LED_GPIO_PIN)==KEY_ON){ LED_TOGGLE; //有按键按下,灯的亮灭翻转一次 } } }

GPIO输入—按键检测(开关控制小灯)的更多相关文章

  1. 第12章 GPIO输入—按键检测

    第12章     GPIO输入—按键检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...

  2. 第12章 GPIO输入-按键检测—零死角玩转STM32-F429系列

    第12章     GPIO输入—按键检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...

  3. Arduino 开关控制小灯持续亮之具体思路

    Arduino 开关控制小灯持续亮之具体思路 为什么写这篇文章: 我们用开关控制灯的亮灭的时候,希望只需要按一下按键就可以做到灯一直亮着.而在<Arduino魔法书>中——有弹性的按键这一 ...

  4. 第13章 GPIO输入—按键检测

    本章参考资料:<STM32F76xxx参考手册>.库帮助文档<STM32F779xx_User_Manual.chm>. 按键检测使用到GPIO外设的基本输入功能,本章中不再赘 ...

  5. GPIO 输入—按键检测

    这里要用到一定的模电知识.电容两端电压不能突变,电感两端电流不能突变.这里利用了电容的放电延时实现硬件消抖.按键按下会有抖动,波形有毛刺,使得高低电平显现不明显,而按键按下时,电容放电一下,马上又被充 ...

  6. 硬件——nrf51822第三篇,按键控制小灯

    现象是按键按下,小灯亮,按键抬起,小灯灭. 从这一节我们细致剖析gpio口的设置: nrf51822片上一共有32个数字引脚,分为4个port,如下: port 0 pin 0-7 port 1 pi ...

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

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

  8. STM32嵌入式开发学习笔记(三):使用按键控制小灯

    按键和小灯一样,也是通过GPIO外设与主板连接,也是通过GPIO_InitStruct类型结构体控制其工作. 查阅技术手册,按钮连接GPIOA控制下的管脚0. 但与之不同的是,按键是一种输入设备,输入 ...

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

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

随机推荐

  1. [WEB安全]phpMyadmin后台任意文件包含漏洞分析(CVE-2018-12613)

    0x00 简介 影响版本:4.8.0--4.8.1 本次实验采用版本:4.8.1 0x01 效果展示 payload: http://your-ip:8080/index.php?target=db_ ...

  2. GO语言反射

    反射可以作为了解,不必深入! 反射介绍 Go语音提供了一种机制在运行时更新变量和检查它们的值.调用它们的方法和它们支持的内在操作,但是在编译时并不知道这些变量的具体类型.这种机制被称为反射.反射也可以 ...

  3. 使用INDY解决BASE64回车换行问题

    使用INDY解决BASE64回车换行问题 使用DELPHI EncodeStream(),对流数据进行BASE64编译以后,每隔75个字符,就会添加回车换行符(#$D#$A),这会造成许多问题. 网上 ...

  4. linux物理内存与虚拟内存

    http://www.360doc.com/content/14/0123/14/14450281_347336709.shtml 1.查看内存占用情况 $ free -m -h total used ...

  5. OpenJudge计算概论-整数的个数

    /*========================================================== 整数的个数 总时间限制: 1000ms 内存限制: 65536kB 描述 给定 ...

  6. JS pc端和移动端共同实现复制到剪贴板功能实现

    JS pc端和移动端实现复制到剪贴板功能实现 在网页上复制文本到剪切板,一般是使用JS+Flash结合的方法,网上有很多相关文章介绍.随着 HTML5 技术的发展,Flash 已经在很多场合不适用了, ...

  7. NPM 私服

    下载https://nodejs.org/en/download/ linux binaries x64版本xz -d ....xztar -xvf ....tar导入path修改~/.bashrc加 ...

  8. IDEA新建本地项目关联远程git仓库

    现在远程git仓库创建一个repository,然后本地创建项目,最后进行关联.三板斧,打完收工. 第一步.第二步地球人都知道,略过不表,第三步比较关键,举个例子: 0.创建本地Git仓库:VCS - ...

  9. 123457123456#1#-----com.threeapp.qianShuiTingYX01-----潜水艇跑酷游戏01

    com.threeapp.qianShuiTingYX01-----潜水艇跑酷游戏01

  10. WIN 10 看不到SAMBA共享的硬盘

    1.SMB1.0/CIFS协议默认被关闭了,之前的勒索病毒就是用的这个协议的漏洞,所以你去“启动和关闭windows功能”下手动勾选启用SMB1.0/CIFS协议 2.管理员身份执行 sc.exe c ...