当前位置:网站首页>STM32学习笔记(白话文理解版)—按键控制
STM32学习笔记(白话文理解版)—按键控制
2022-08-11 05:25:00 【LaiGuo.】
STM32学习笔记(白话文理解版)—按键控制
一、按键原理
采用正点原子mini版,根据原理图得知:
KEY0 和 KEY1 是低电平有效的,而 WK_UP 是高电平有效的,除了KEY1 有上拉电阻(与 JTDI 共用),其他两个都没有上下拉电阻,所以,需要在 STM32 内部设置上下拉。
前置条件:
也就是KEY0按下,PC5为低电平;LED灯低电平有效,低电平时LED灯亮
二、初始化按键
- 原理:按键初始化也就是读取和按键相连接引脚的电平状态,故将GPIO引脚设置为输入模式,在根据按键的电路连接情况设置相应的GPIO口工作方式。
- 引脚介绍:按键引脚PC5;LED灯引脚PA8
程序:
#include "key.h"
void KEY_Init(void){
//微动开关的接口初始化
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO的初始化枚举结构
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //选择引脚组C的5号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //选择IO接口工作方式 //上拉电阻
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) 输入模式无需设置
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
三、无锁存按键方式
(1)主函数
- 利用GPIO_ReadInputDataBit函数读取按键状态,也就是PC5引脚的状态,若按键为1,也就是按键按下,则熄灭LED灯,否则LED灯点亮
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "key.h"
int main (void)
{
KEY_Init();
LED_Init();
while(1)
{
//按键没按下,读取电平是1,则PA8置于低电平,LED点亮;按键按下,读取电平是0,PA8置于高点平,按键熄灭
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)){
GPIO_ResetBits(GPIOA,GPIO_Pin_8);}
else{
GPIO_SetBits(GPIOA,GPIO_Pin_8);}
}
}
(2)按键初始化函数
同部分二
#include "key.h"
void KEY_Init(void){
//微动开关的接口初始化
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO的初始化枚举结构
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //选择引脚组C的5号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //选择IO接口工作方式 //上拉电阻
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) 输入模式无需设置
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
四、有锁存按键方式
(1)主函数
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "key.h"
int main (void)
{
KEY_Init();
LED_Init();
while(1)
{
if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5))
{
//按键按下为低电平,!0则执行
delay_ms(20); //延时去抖动,见图解
if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5))
{
//按键还是按下的,继续执行
GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8))); //LED取反,GPIO_ReadOutputDataBit读取灯输出电平
while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)); //等待按键松开,如果按键按下,一直循环在这条语句,防止在按下后反复执行前面的程序
}
}
}
}
- 单片机读取速度很快,如果按下瞬间读取,则按键可能是或高或低的不稳定状态,故延迟20ms再读
(2)按键初始化函数
同部分二
#include "key.h"
void KEY_Init(void){
//微动开关的接口初始化
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO的初始化枚举结构
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //选择引脚组C的5号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //选择IO接口工作方式 //上拉电阻
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) 输入模式无需设置
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
边栏推荐
- Robust 3D Object Detection in Cold Weather Conditions
- 解决jupyter中import torch出错问题
- OpenPCDet installs the latest version: spconv in one step
- 自定义形状seekbar学习
- 梅科尔工作室-DjangoWeb 应用框架+MySQL数据库第三次培训
- 安全帽识别系统
- Toward a Unified Model
- Mei cole studios - fifth training DjangoWeb application framework + MySQL database
- 如何快速转行做产品经理
- 浙江大学软件学院2020年保研上机真题练习
猜你喜欢
Joint 3D Instance Segmentation and Object Detection for Autonomous Driving
安全帽识别系统
LiDAR Snowfall Simulation for Robust 3D Object Detection
CVPR2022——A VERSATILE MULTI-VIEW FRAMEWORK
Wisdom construction site safety helmet identification system
第七届集美大学程序设计竞赛(个人赛)题解
产品经理与演员有着天然的相似
Maykle Studio - HarmonyOS Application Development Fourth Training
NUC980-镜像烧录
CVPR2022——Not All Points Are Equal : IA-SSD
随机推荐
珍爱网App竞品分析报告
TAMNet: A loss-balanced multi-task model for simultaneous detection and segmentation
The working principle and industry application of AI intelligent image recognition
net6的Web MVC项目实现限流功能
aPaaS和iPaaS的区别
实时姿态估计--基于空洞卷积的人体姿态估计网络
梅科尔工作室-DjangoWeb 应用框架+MySQL数据库第五次培训
CMT2380F32模块开发6-flash例程
弱监督语义分割CLIMS(CVPR2022)
Joint 3D Instance Segmentation and Object Detection for Autonomous Driving
华为IOT平台温度过高时自动关闭设备场景试用
yolov3+centerloss+replay buffer实现单人物跟踪
Kotlin 增量编译的新方式 | 技术解析
梅科尔工作室-DjangoWeb 应用框架+MySQL数据库第二次培训
防盗链——防止其他页面通过url直接访问本站资源
智慧工地 安全帽识别系统
Toward a Unified Model
使用ActiveReports制作第一张报表
华为IOT设备消息上报和消息下发验证
Zhejiang University School of Software 2020 Guarantee Research Computer Real Question Practice