当前位置: 首页 > news >正文

嵌入式STM32学习——按键的基础知识

3.5 按键基础知识

1.深入理解GPIO输入

GPIO的特点:

  • 具有内部上拉或下拉的功能
  • 可以使用外部下拉或上拉

按键连接示意图:

按键控制LED灯

灯的电路图:

软件设计流程:

  • 初始化系统

                初始化GPIO外设时钟

                初始化按键和LED的引脚

  • 检测按键输入电平来控制LED灯

运行代码:

key.c
#include "key.h"
#include "stm32f10x.h"void Key_Init(void)
{//初始化按键外设GPIO_InitTypeDef Key_Initsturct;   //初始化按键结构体//初始化按键时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC,  ENABLE);  
//打开APB2总线下GPIOA和GPIOC的时钟Key_Initsturct.GPIO_Pin=GPIO_Pin_0;      //初始化A0引脚Key_Initsturct.GPIO_Mode=GPIO_Mode_IPU;  //初始化A0为上拉输入模式GPIO_Init(GPIOA, &Key_Initsturct);    //初始化A0结构体Key_Initsturct.GPIO_Pin =GPIO_Pin_13;    //初始化C13引脚Key_Initsturct.GPIO_Mode=GPIO_Mode_IPU;  /初始化C13为上拉输入模式GPIO_Init(GPIOC, &Key_Initsturct);    //初始化C13结构体
}
key.h
void Key_Init(void); //函数声明
led.c和led.h

嵌入式STM32学习——GPIO控制之 固件库实现LED点灯-CSDN博客

main.c
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"int  main()
{//1.初始化灯和按键配置//bear_Init();Key_Init();LED_Init();GPIO_SetBits( GPIOA, GPIO_Pin_1);  //初始化led为熄灭状态while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)  //如果A0口对应的SW2按键按下{GPIO_ResetBits(GPIOA, GPIO_Pin_1);       //A1输出低电平,led亮}if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)==0)  //如果C13口对应的SW3按键按下{GPIO_SetBits( GPIOA, GPIO_Pin_1);         //C13输出高电平,led灭}}
}


http://www.mrgr.cn/news/53825.html

相关文章:

  • ENSP环回路由的配置
  • Virtuoso Layout无法显示元件,出现pcellEvalFailed错误问题解析
  • 使用休眠的方式来解决电脑合盖后偶尔不能正常睡眠的问题
  • 【OpenCV】人脸识别方法
  • Synopsys工具中命令中filter选项
  • 鸿蒙 app上怎么实现阴影效果
  • (JAVA)贪心算法、加权有向图与求得最短路径的基本论述与实现
  • 空间解析几何 4:空间中线段到圆的距离【附MATLAB代码】
  • 13.java面向对象:继承
  • 【算法——递归回溯】
  • 机器人学 目录
  • 【JS】哈希(数组)解决赎金信问题
  • RAG拉满:上下文Embedding与大模型Cache的深度融合
  • rabbitMQ消息重复问题怎么解决的?
  • 同济子豪兄--图的基本表示【斯坦福CS224W图机器学习】
  • 面试:了解 ThreadLocal 内存泄漏需要满足的 2 个条件吗?
  • 大话设计模式解读08-外观模式
  • python 函数
  • 嘉兴自闭症咨询全托机构:全面支持孩子成长的专业团队
  • 如何让审批更加的省钱?
  • 什么是DevOps,如何才能获取DevOps相关实践
  • 石墨烯磁表面等离子体
  • 对接金蝶云星空存货档案到MES系统的详细步骤及javajs动态脚本拉取的实现
  • 【C++初阶】一文讲通默认成员函数~类和对象(中)
  • Java项目-基于springboot框架的社区疫情防控平台系统项目实战(附源码+文档)
  • 【MySQL】设置二进制日志文件自动过期,从根源上解决占满磁盘的问题:通过修改 binlog_expire_logs_seconds 配置项