按键控制LED灯亮灭(STM|按键控制LED灯亮灭(STM 32)
【按键控制LED灯亮灭(STM|按键控制LED灯亮灭(STM 32)】检测按键按下与否,进而做出相应的消息响应,
按键与IO口和GND相连。
*********************************
#ifndef __KEY_H
#define __KEY_H#define KEYPORTGPIOA//IO口的宏定义
#define KEY1GPIO_Pin_0
#define KEY2GPIO_Pin_1
void KEY_Init(void);
#endif
*********************************
#include "key.h"
void KEY_Init(void){ //按键初始化
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = KEY1 | KEY2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
//当按键没有按下时,IO口检测为高电平,为上拉电阻模式,按下IO口与地连接,为低电平
//GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
//与按键相连的IO口为输入,不需要设置接口速度,只有输出才用
GPIO_Init(KEYPORT,&GPIO_InitStructure)
}
*********************************
#include "stm32f10x.h" //STM32????
#include "delay.h"
#include "key.h" int main (void){
u8 a;
RCC_Configuration();
KEY_Init();
while(1){
//方法1
if(GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读取按键的高低电平 判断按键是否按下
GPIO_ResetBits(LEDPORT,LED1);
//按下后的消息响应,此处为点灯
}else{
GPIO_SetBits(LEDPORT,LED1);
//
}
//方法2更为常用
if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){
delay_ms(20);
//延时 20ms ,硬件消抖,防止读取错误
if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1)));
while(!GPIO_ReadInputDataBit(KEYPORT,KEY1));
//等待按键起来
}
}
推荐阅读
- 我的拖延症如何控制了我,又一次
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 真正的爱
- 每天听本书《控制焦虑》
- 控制自己的心为什么这么难([追光日记(第2篇)])
- 《不要用爱控制我》
- 8、Flask构建弹幕微电影网站-搭建后台页面-密码修改、主页控制面板
- Promise|Promise 异步控制流
- 孕期血糖有点高怎么办(如何控制孕期血糖?看完觉得隐隐作痛)
- 时间管理,情绪控制,成功学,你学了这么多,为什么还是一无是处