嵌入式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灭
		}
		
	}
}
		 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/894536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM高校普法系统的设计

管理员账户功能包括:系统首页,个人中心,学生管理,律师管理,法律知识管理,新闻类型管理,法律新闻,律师推荐管理 律师账号功能包括:系统首页,个人中心&#xf…

LibreOffice SDK是LibreOffice软件的开发工具包

LibreOffice SDK是LibreOffice软件的开发工具包,它提供了一系列工具和库,使得开发者可以基于LibreOffice进行扩展或开发新的应用程序。以下是对LibreOffice SDK的详细介绍: 一、下载与安装 下载地址: 可以在LibreOffice的官方网站…

如何在没有密码的情况下将 iPhone 13/14/15/16 恢复出厂设置

本文详细介绍了在忘记密码的情况下,如何通过多种方法在iPhone13/14/15/16上进行无需密码的出厂重置,包括设备上操作、第三方工具、Finder/iTunes以及使用iCloud。还提供了防止忘记密码的建议。 摘要由CSDN通过智能技术生成 您想知道如何在没有密码的情…

Unity Apple Vision Pro 保姆级开发教程-准备阶段

视频教程: Unity PolySpatial 开发Apple Vision Pro教程, 三十分钟快速了解 Unity Vision Pro 中文课堂教程地址: Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂 开发Apple Vision Pro 使用原生开发和unity 开发有什么区别 如果你的项目需要…

Redis 高可用:从主从到集群的全面解析

目录 一、主从复制 (基础)1. 同步复制a. 全量数据同步b. 增量数据同步c. 可能带来的数据不一致 2. 环形缓冲区a. 动态调整槽位 3. runid4. 主从复制解决单点故障a. 单点故障b. 可用性问题 5. 注意事项a. Replica 主动向 Master 建立连接b. Replica 主动向 Master 拉取数据 二、…

智能家居的“眼睛”:计算机视觉如何让家更智能

引言 在不远的未来,当我们走进家门,灯光自动亮起,空调已经调至最舒适的温度,甚至音乐也播放着我们最喜欢的歌曲。 这一切,都得益于智能家居系统的发展。而在这个系统中,计算机视觉技术扮演着至关重要的角色…

初识MySQL · 数据库

目录 前言: 数据库 简单使用 存储引擎 前言: 本文也是MySQL的第一篇文章了,新的知识点已经出现,怎么能够停止不前,穿越时空……(迪迦奥特曼乱入哈哈哈)。 言归正传,我们在本文的目标有: …

基于SpringBoot+Vue+uniapp的涪陵区特色农产品交易系统的详细设计和实现(源码+lw+部署文档+讲解等)

详细视频演示 请联系我获取更详细的视频演示 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

MATLAB(Octave)混电动力能耗评估

🎯要点 处理电动和混动汽车能耗的后向和前向算法模型(simulink),以及图形函数、后处理函数等实现。构建储能元数据信息:电池标称特性、电池标识符等以及静止、恒定电流和恒定电压等特征阶段。使用电流脉冲或要识别的等效电路模型类型配置阻抗…

day-13面向对象进阶

面向对象进阶部分学习方法: 特点: ​ 逻辑性没有那么强,但是概念会比较多。 ​ 记忆部分重要的概念,理解课堂上讲解的需要大家掌握的概念,多多练习代码。 day13 第一章 复习回顾 1.1 如何定义类 类的定义格式如…

Linux_进程控制

一&#xff1a;进程创建 fork()函数创建新进程 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a;…

KubeSphere部署Elasticsearch+Kibana

演示示例使用的是3.4.1&#xff0c;各版本有名字差异 功能是一样的 1.配置字典 名称&#xff1a;elasticsearch 键名&#xff1a;elasticsearch-conf 值&#xff1a; network.host: 0.0.0.0 http.port: 9200 transport.port: 9300 # head 插件需要这打开这两个配置,解决跨域…

面试:了解 ThreadLocal 内存泄漏需要满足的 2 个条件吗?

欢迎关注公众号 【11来了】&#xff08;文章末尾即可扫码关注&#xff09; &#xff0c;持续 中间件源码、系统设计、面试进阶相关内容 在我后台回复 「资料」 可领取 编程高频电子书&#xff01; 在我后台回复「面试」可领取 30w 字的硬核面试笔记&#xff01; 感谢你的关注&…

Vim工具使用( Linux 网络操作系统 07)

1 概念部分 vim是vimsual interface的简称&#xff0c;它可以执行输出、删除、查找、替换、块操作等众多文本操作&#xff0c;而且用户可以根据自己的需要对其进行定制。这是其他编辑程序所没有的。vim不是一个排版程序&#xff0c;它不像Word或WPS那样可以对字体、格式、段落…

记录 ruoyi-vue-plus在linux 部署遇到的问题

整理 linux 文件不要放在 /, 根目录下&#xff0c;要放在 home 文件夹下。docker 启动mysql 容器&#xff0c;映射的 my.cnf 文件不能设置太高权限&#xff0c;权限太高有安全问题&#xff0c;无法读取。 linux 使用注意事项 docker 文件夹 部署在home文件夹下 总结学习到的…

linux的随机化处理

Linux的随机化处理&#xff08;或称为地址空间布局随机化&#xff0c;ASLR&#xff09;是一种安全特性&#xff0c;旨在提高系统对抗攻击的能力&#xff0c;尤其是缓冲区溢出和代码注入攻击。随机化处理通过改变进程在内存中的布局来减少攻击者利用漏洞的可能性。 随机化处理的…

SOLIDWORKS参数化软件

在产品设计和工程领域&#xff0c;参数化设计是一种革命性的方法&#xff0c;它允许设计者通过定义一系列规则和关系来创建和修改模型。参数化设计的核心在于将设计过程分解为一系列可调整的参数&#xff0c;如尺寸、形状、材料属性等&#xff0c;这些参数之间通过数学关系相互…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第四十九章 平台总线总结回顾

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

Anaconda虚拟环境安装cuda和pytorch

首先电脑上要有Anaconda&#xff0c;使用conda创建一个虚拟环境,并激活 conda create yolov8 conda activate yolov8winR输入cmd&#xff0c;在命令窗口输入 NVIDIA-smi可以查看到自己电脑支持的cuda环境&#xff0c;如下图 再打开torch的官网 pytorch官网 查看目前支持的版…

C++ MFC 标准库 加密解密解惑

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…