3.3 GPIO输入

news2024/11/13 15:52:59
  1. 按键

1.1 按键介绍

•按键:常见的输入设备,按下导通,松手断开

•按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动

1.2 按键的四种接法

P1是最常用的接法,p1中按键按下为低电平,但必须要求是上拉输入,否则会出现引脚电压不确定的错误现象,此时为引脚悬空,PA0为高电平。所以按下按键为高电平,松开按键为低电平。

P2中外部接了一个上拉电阻,当按键松手时,套用弹簧模型(模型在下面),弹簧上拉,引脚为高电平,当按键按下,引脚接GND,下面的弹簧有无穷大的力,引脚为低电平。不存在悬空状态,可以配置为浮空输入或上拉输入。

P3按键按下为高电平,松手为低电平。PA0必须为下拉输入。

P4 PA0需要配置为下拉输入模式或者浮空输入模式。

2. 传感器模块介绍

2.1 实物展示

传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出

从左往右依次为:光敏电阻传感器、热敏电阻传感器、对射式红外传感器、反射式红外传感器

2.2 电路原理

  • 使用上下拉电阻分析电路

举例方便说明上下拉电阻的工作逻辑

将AO输出端想象成一个放在屋里的水平杆,R1上拉电阻相当于拴在屋顶的弹簧将杆子往上拉,N1下拉电阻相当于栓在地面的弹簧,将杆子往下拉,电阻的阻值越小,弹簧的拉力越强。在模型中,弹簧中间的电压为VCC或者GND,当两个弹簧相互拉扯的时候,中间的输出端就会向拉力强的一端偏移,偏移量取决于弹簧之差,如果上下拉弹簧的弹力相同,杆子位于居中位置,电路输出VCC/2的电压。如果上阻值小,拉力强,输出电压变高,下面阻值小,输出电压就变低,阻值为0电路中为短路,相当于两个无穷大拉力在对抗。

  • 二值化电压比较器

本质上是一个运算放大器,当同相输入端的电压大于反相输入端电压时,输出瞬间升高到最大值,也就是说输出接VCC,反之当同相输入端电压小于反相输入端电压时,输出就会瞬间降为最小值,也就是输出接GND。

2.3 传感器模块接法

DO数字输出接端口,用于读取数字量。

3. STM32单片机关于C语言的知识储备

3.1 C语言数据类型

注意:区别于51单片机中int占16位

3.2 C语言宏定义

•关键字:#define

•用途:用一个字符串代替一个数字,便于理解,防止出错;提取程序中经常出现的参数,便于快速修改

//定义宏定义:
  #defineABC 12345//用ABC字符串来替代12345这个参数
//引用宏定义:
  int a = ABC;  //等效于int a= 12345;

3.3 C语言typedef

•关键字:typedef

•用途:将一个比较长的变量类型名换个名字,便于使用

//定义typedef:
    typedef unsigned char uint8_t;
//引用typedef:
    uint8_t a;    //等效于unsigned char a;

3.4 C语言结构体

•关键字:struct

•用途:数据打包,不同类型变量的集合

//定义结构体变量:
  struct
  {
    charx; 
    int y; 
    float z;
  } StructName;
//定义一个结构体变量叫StructName里面包含了charx; int y; float z三个子选项
 // 因为结构体变量类型较长,所以通常用typedef更改变量类型名
  typedef struct
  {
    charx;
    int y; 
    float z;} StructName_t;
  //此时我们重新定义只需要
  StructName_t a;
  StructName_t b;
//使用.运算符引用结构体成员:
  StructName.x = 'A';
  StructName.y = 66;
  StructName.z = 1.23;
//或  pStructName->x= 'A';  
//pStructName为结构体的地址  
  pStructName->y= 66;
  pStructName->z = 1.23;

3.5 C语言枚举

•关键字:enum

•用途:定义一个取值受限制的整型变量,用于限制变量取值范围;宏定义的集合

//定义枚举变量:
  enum
  {
    FALSE = 0,
   TRUE = 1
  } EnumName;
// 因为枚举变量类型较长,所以通常用typedef更改变量类型名
  typedef enum
  {
    FALSE = 0, 
    TRUE = 1
  } EnumName;
//引用枚举成员:只能按照枚举的定义
  EnumName = FALSE;
  EnumName = TRUE;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【小程序】django学习笔记1

网页能用,不知道小程序能不能用。应该能吧。。。。。创建django程序文件包,xxx处是给该文件夹起个名django-admin startproject xxx一个project是由很多个app(小应用)组成的在文件夹目录下创建一个app,xxx处给该app起个…

脑雾到来的6个症状

在阳康后的一段时间里,很多人发现自己脑力不似从前,长时间的修养也没能彻底恢复,以为自己有后遗症,十分紧张。其实,脑雾不是专业的医学名词,它是对一类症状的统称:健忘、注意力不集中、思维迟钝…

第17天-整合Redis缓存改造三级分类,并解决缓存击穿、穿透、雪崩、一致性问题

1.缓存 1.1.缓存使用 为了系统性能的提升,一般都会将部分数据放入缓存中,达到快速响应的目的。而数据库承担数据落盘工作。 哪些数据适合放入缓存? 即时性、数据一致性要求不高的访问量大且更新频率不高的数据(读多&#xff0c…

布隆过滤器Bloom -> Redisson系列-3

接上文:RBucket对象桶 -> Redisson系列-1(让redis操作更优雅)_子书少卿的博客-CSDN博客 本质上布隆过滤器是一种数据结构,是一种比较巧妙的概率性数据结构,特点是可以高效的插入和查询,可…

浅谈一下虚拟机栈

虚拟机栈 概述 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的…

SpringBoot学习笔记(二)配置文件

1、配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的;application.propertiesapplication.yml配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML:以数…

MySQL常用函数整理

MySQL常用函数整理sql函数分类一、流程控制1、判断值为null或空字符串2、IF函数3、IFNULL函数4、CASE函数(1) 相当于switch case的作用(2) 相当于if elseif的作用5、COALESCE函数二、字符串类(GBT答案)1、用于select、insert等子句中2、用于where子句中其…

来吧!接受Kotlin 协程--线程池的7个灵魂拷问

前言 之前有分析过协程里的线程池的原理:Kotlin 协程之线程池探索之旅(与Java线程池PK),当时偏重于整体原理,对于细节之处并没有过多的着墨,后来在实际的使用过程中遇到了些问题,也引发了一些思考,故记录之…

从零开始学习c语言|21、动态内存管理

一、malloc函数 1、什么是malloc函数 malloc是memery(内存)和allocate(分配)的缩写,顾名思义,malloc函数为动态分配内存的意思 2、malloc函数语句 int *p(int *)malloc(sizeof(int))malloc函数的形参为申请的内存空间大小,上述申请了一个i…

“巨亏成名”的魔鬼交易员,你知道几个?

谁说在期货市场上只有赚大钱才能出名?殊不知还有这样一群特殊的交易员靠着巨额亏损而“一战成名”,亏得是老东家元气大伤,外号“魔鬼交易员”——“不亏不成魔”!接下来火象就给大家盘点几位代表性魔鬼交易员,看看他们…

论文阅读 | 轻量级网络 MobileNets/Xception/ShuffleNet

前言:重温经典,整理了一些几年前做轻量级网络的论文,其中的深度可分离卷积和通道shuffle的思想至今也在沿用 (这几天都没看论文然而实验还是没跑出来,不卷会议了,开始摆烂…) 论文地址&#xff…

JavaScript Math 算数对象

文章目录JavaScript Math 算数对象Math 对象Math 对象属性Math 对象方法算数值算数方法JavaScript Math 算数对象 Math(算数)对象的作用是:执行常见的算数任务。 Math 对象 Math(算数)对象的作用是:执行普…

规划数据指标体系方法(上)——OSM 模型

之前我已经有写过文章讲了数据指标体系的搭建思路,但有同学还是不太清楚要从何入手,今天我就来跟大家讲一讲搭建数据指标体系之前第一步要先做的事情——规划数据指标体系。 规划数据指标体系,在业内有三种比较常见的方法,分别是&…

MySql索引失效的情况

文章目录1、对索引字段进行了运算或者使用了函数2、查询的数据类型与字段类型不一致3、违反了索引的最左匹配原则4、全表扫描更快5、where语句中索引列使用了负向查询,可能会导致索引失效6、索引字段可以为null,使用is null或is not null时,可…

2022年MathorCup数学建模C题自动泊车问题解题全过程文档加程序

2022年第十二届MathorCup高校数学建模 C题 自动泊车问题 原题再现 自动泊车是自动驾驶技术中落地最多的场景之一,自动泊车指在停车场内实现汽车的自动泊车入位过程,在停车空间有限的大城市,是一个比较实用的功能,减少了驾驶员将…

又一新闻,Meta研发了超越chatGPT的新平台LLAMA

一、Meta 全新大语言模型 LLaMA 正通过种子公开发放2 月 24 日,Meta 公司发布了新的大模型系列 —— LLaMA(Large Language Model Meta AI)。Meta 宣称,LLaMA 规模仅为竞争对手 ChatGPT 的“十分之一”,但性能却优于 O…

Win10安装MySQL5.7.22 解压缩版(手动配置)方法

1.下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后: 2.可以把解压的内容随便放到一个目录,我的是如下目录(放到C盘的话,可能在修改ini文件时涉及权限问 题,之后…

第13章 二叉树模型及其扩展

这学期会时不时更新一下伊曼纽尔德曼(Emanuel Derman) 教授与迈克尔B.米勒(Michael B. Miller)的《The Volatility Smile》这本书,本意是协助导师课程需要,发在这里有意的朋友们可以学习一下,思…

lattice

Chinese NER Using Lattice LSTM 阅读笔记_Ono_online的博客-CSDN博客 【NER-1】-2018 ACL Lattice-LSTM_latticelstm代码_应有光的博客-CSDN博客 lattice model(结合上面两个博客来看) 18分钟彻底搞懂LSTM网络原理,NLP,深度学习,自然语言处理_哔哩哔哩_bilibili 如何从RNN起…

无代码时代洪流,高灵活,所见即所得

发布的《2022年中国低代码/零代码行业研究报告》表明,在最近的一项调查中,超过90%的企业用户都希望能够使自己的产品开发更加灵活和有效,并且希望能够通过减少开发费用来优化其投入产出比。从众多研究机构的正面评价来看&#xff…