STM32:按键模块 传感器模块 以及 相关C语言知识(详细讲解)

news2025/5/20 10:53:27

目录

按键

传感器模块

C语言知识

C语言数据类型

C语言宏定义

C语言typedef

C语言结构体

C语言枚举


按键

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

按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动,所以要对这一连串的抖动进行处理,最简单的方式就是加延时,把抖动的时间耗过去。

传感器模块

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

N1为传感器,R1是用来和传感器进行分压的,当N1的阻值增大,N1的下拉作用增强,AO输出电压减小,极端情况下,N1的电阻无穷大,强下拉作用,AO输出电压为0,上拉作用同理,就是N1的电阻小于R1时,体现为上拉作用,极端情况下,当N1的电阻为0时,体现为强上拉,AO输出为VCC。

上拉下拉电阻工作原理模型

  • 电阻作用类比 :将 AO 输出端类比为屋里水平杆子,R1 上拉电阻比作拴在屋顶的弹簧,下拉电阻比作拴在地面的弹簧,电阻阻值大小对应弹簧拉力强弱,电路中的电压类比为杆子高度。

  • 单弹簧作用结果 :只有上拉弹簧时,杆子被拉到屋顶,电路中间点电压为 VCC;只有下拉弹簧时,杆子被拉到地面,电路中间点电压为 GND。

  • 双弹簧相互作用 :两个弹簧相互拉扯时,中间输出端向拉力强的一端偏移,偏移程度取决于两弹簧弹力之差;弹力一致,杆子处于居中位置,电路输出二分之 VCC 的电压。

  • 阻值变化影响 :上拉电阻阻值小,拉力强,输出电压变高;下拉电阻阻值小,输出电压变低;阻值为 0 时相当于短接,拉力无穷大;上下拉电阻阻值都为 0 则电源短路,应避免。

  • 上拉下拉电阻在单频机电路应用

    • 电阻特性分类 :在单频机电路中有弱上拉、弱下拉、强上拉、强下拉等情况,强和弱指电阻值大小即弹簧弹力大小。

    • 连接方向含义 :上拉是接到 VCC,即杆子拉向屋顶;下拉是接到 GND,即杆子拉向地面。

    • 输出电压情况 :最终输出电压由弹簧拉扯决定,可用此感知和弹簧模型分析上拉和下拉电阻相关问题以加深理解 。

C2为一个滤波电容,是给中间的输出电压进行滤波的,用来滤除一些干扰,保证输出电压的平滑(在电路中一般一端接地,一端接在电路中,遇到之后可以考虑是不是滤波电容)如果滤波电容,说明并不是电路的主要框架,是为了保持电路稳定的,在分析的时候就可以不看它。

  • 数字输出:模块支持对AO进行二值化的数字输出,由LM393芯片完成,此芯片有两个独立电压比较器电路 ,工作原理与运算放大器有关。

  • 运算放大器作比较器

    • 同向大于反向:当同向输入端电压大于反向输入端电压时,输出瞬间升为最大值即接VCC。

    • 同向小于反向:当同向输入端电压小于反向输入端电压时,输出瞬间降为最小值即接GND,以此实现模拟电压二值化。

  • 数字输出实际应用: -

    • 电位器作用:同向输入端接AO模拟电压,负端接电位器,拧动电位器可生成可调阈值电压,与模拟电压比较后输出数字电压DO

    • 指示灯与排针:左边为电源指示灯(通电就来亮)和DO输出指示灯(用来指示DO的输出电平,低电平点亮,高电平熄灭),DO输出接引脚输出端(3引脚),P1排针分别为VCC、GND、DO和AO 。

    • R5上拉电阻:是为了保证默认的输出为高电平。

  • 不同传感器模块

    • 光敏与热敏:对于光敏电阻传感器和热敏电阻传感器,N1分别为光敏电阻和热敏电阻。

    • 红外传感器:红外传感器的N1为红外接收管,还有发射管发射红外光,接收光强度以模拟电压表示,部分模块电位器换为两个电阻分压实现固定阈值二值化 ,有的用于检测通断,有的用于寻迹小车。

    • 下面传感器分别为光敏电阻,热敏电阻, 红外传感器(左,通常用来检视通断)和 红外传感器(向下发射红外光可用于与循迹小车)

  • 按键的四种接法

    • 下接按键一:按键常用接法,选gpio口如PA0通过按键接GND,按键按下PA0为低电平,松手PA0悬空,要求PA0为上拉输入模式

    • 下接按键二:外部接上拉电阻,按键松手时引脚因上拉作用为高电平,按下为低电平,PA0可配置为浮空或上拉输入。 如果配置为上拉输入时,两个上拉电阻共同作用,高电平更稳定,但是当按键按下时,强行拉到低时,损耗也会大一些。

    • 上接按键一:PA0通过按键接3.3伏,要求PA0配置为下拉输入模式,按键按下为高电平,松手为低电平。

    • 上接按键二:在上述接法基础外接下拉电阻,PA0可配置为下拉输入或浮空输入模式。

    • 上面两种接法按键按下为低电平,松手为高电平。

    • 下面两种接法按键按下为高电平,松手为低电平。

  • 传感器模块电路

    • 供电与端口连接:VCC接3.3伏,GND接GND供电,DO数字输出接如PA0端口用来读取数据量,AO模拟输出后续学ADC模数转换器时再处理。

C语言知识

C语言数据类型

关键字位数表示范围stdint关键字ST关键字
char8-128 ~ 127int8_ts8
unsigned char80 ~ 255uint8_tu8
short16-32768 ~ 32767int16_ts16
unsigned short160 ~ 65535uint16_tu16
int32-2147483648 ~ 2147483647int32_ts32
unsigned int320 ~ 4294967295uint32_tu32
long32-2147483648 ~ 2147483647
unsigned long320 ~ 4294967295
long long64-(2^64)/2 ~ (2^64)/2-1int64_t
unsigned long long640 ~ (2^64)-1uint64_t
float32-3.4e38 ~ 3.4e38
double64-1.7e308 ~ 1.7e308

C语言宏定义

C语言typedef

C语言结构体

C语言枚举

枚举只能在他给定的参数类表中赋值。如果week = 100;会报警告。

 

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

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

相关文章

C++23 std::mdspan:多维数组处理新利器

文章目录 引言C23简介std::mdspan的定义与特点定义特点 std::mdspan的优势零成本抽象的多维数据访问减少内存开销提高代码灵活性 std::mdspan的应用场景科学计算图形学 相关提案示例代码使用动态扩展使用静态和动态扩展 总结 引言 在C的发展历程中,每一个新版本都带…

基于高德MCP2.0的智能旅游攻略系统设计与实现

前言:旅游规划的技术革命 在数字化旅游时代,MCP2.0(Map-based Collaborative Planning)系统代表着旅游攻略技术的最新演进。作为对1.0版本的全面升级,MCP2.0通过深度整合高德地图API和智能算法,实现了从静…

【时时三省】(C语言基础)用函数实现模块化程序设计

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 为什么要用函数? 已经能够编写一些简单的C程序,但是如果程序的功能比较多,规模比较大,把所有的程序代码都写在一个主函数(main函数)中&#x…

Flink流处理:实时计算URL访问量TopN(基于时间窗口)

目录 代码分析 背景知识拓展 代码调优 1. 性能优化 1.1 使用 KeyedStream 和 ProcessWindowFunction 替代 windowAll 1.2 使用 ReduceFunction 优化聚合 2. 功能扩展 2.1 支持动态窗口大小 2.2 支持多维度统计 2.3 支持持久化存储 3. 代码可读性 3.1 提取公共逻辑 …

华为OD机试真题——考勤信息(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

Go语言测试用例的执行与分析

在软件开发过程中,测试用例是确保代码质量的关键环节。Go语言作为一种现代的编程语言,它内置了强大的测试框架,可以帮助开发者轻松编写和执行测试用例。本文将介绍如何在 Go 语言中编写、执行测试用例,并对测试结果进行分析。 ## …

MyBatis:动态SQL

文章目录 动态SQLif标签trim标签where标签set标签foreach标签include标签和sql标签 Mybatis动态SQL的官方文档: https://mybatis.net.cn/dynamic-sql.html 动态SQL 动态SQL是 MyBatis的强大特性之一,如果是使用JDBC根据不同条件拼接sql很麻烦,例如拼接…

游戏引擎学习第280天:精简化的流式实体sim

回顾并为今天的内容做铺垫 今天的任务是让之前关于实体存储方式的改动真正运行起来。我们现在希望让实体系统变得更加真实和实用,能够支撑我们游戏实际所需的功能。这就要求我们对它进行更合理的实现和调试。 昨天我们基本让代码编译通过了,但实际上还…

王树森推荐系统公开课 排序03:预估分数融合

融合预估分数 p c l i c k ⋅ p l i k e p_{click} \cdot p_{like} pclick​⋅plike​ 有实际意义,等于在曝光中点赞的概率。 p c l i c k ⋅ p c o l l e c t p_{click} \cdot p_{collect} pclick​⋅pcollect​ 同理。 按多种排名做 ensemble sort。 某电商的融…

网络I/O学习-poll(三)

一、为什么要用Poll 由于select参数太多,较于复杂,调用起来较为麻烦;poll对其进行了优化 二、poll机制 poll也是一个系统调用,每次调用都会将所有客户端的fd拷贝到内核空间,然后进行轮询,判断IO是否就绪…

k8s(12) — 版本控制和滚动更新(金丝雀部署理念)

金丝雀部署简介: 1、基本概念 金丝雀部署是一种软件开发中的渐进式发布策略,其核心思想是通过将新版本应用逐步发布给一小部分用户(即 “金丝雀” 用户),在真实环境中验证功能稳定性和性能表现,再逐步扩大发…

Google设置app-ads.txt

问题: 应用上架后admob后台显示应用广告投放量受限,需要设置app-ads.txt才行。 如何解决: 官方教程: 看了下感觉不难,创建一个txt,将第二条的代码复制进行就得到app-ads.txt了。 然后就是要把这个txt放到哪才可以…

docker安装rockerMQ

参考Docker部署RocketMQ5.x (单机部署配置参数详解不使用docker-compose直接部署)_rocketmq不推荐用docker部署-CSDN博客 镜像拉取 镜像地址: https://hub.docker.com/r/apache/rocketmq/tags 我在部署的时候最新发行版是5.1.0可以根据需求自行选择一个5.x的版本&a…

交叉引用、多个参考文献插入、跨文献插入word/wps中之【插入[1-3]、连续文献】

我们在写论文时,需要插入大量参考文献。 有时,一句话需要引用多个文献,如:[1-3]或者[1,3,4]这种形式多个文献插入、跨文献插入。 在上一篇文章中,我们提到可以直接打“-”或者“,”,但是word导出…

PLC双人舞:profinet转ethernet ip网关奏响施耐德与AB的协奏曲

PLC双人舞:ethernet ip转profinet网关奏响施耐德与AB的协奏曲 案例分析:施耐德PLC与AB PLC的互联互通 在现代工业自动化中,设备之间的互联互通至关重要。本案例旨在展示如何通过北京倍讯科技的EtherNet/IP转Modbus网关,将施耐德P…

缺乏团队建设活动,如何增强凝聚力?

当一个团队缺乏系统性的建设活动时,成员之间容易产生疏离感、误解与信任缺失,最终影响整体执行力和目标达成。要有效增强团队凝聚力,应从设计高参与感的团队活动、结合业务与人文目标、营造持续共创的文化机制、推动跨层级协作互动等层面着手…

力扣HOT100之二叉树:230. 二叉搜索树中第 K 小的元素

这道题直接用最笨的办法来做的&#xff0c;用递归来做&#xff0c;我们定义一个全局变量vector<int> element&#xff0c;然后使用中序遍历&#xff0c;每当碰到一个非空节点就将其加入到向量中&#xff0c;这样依赖当向量中的元素小于k时&#xff0c;就返回0&#xff0c…

Linux面试题集合(5)

把文件1的内容追加到文件2 cat 文件1>>文件2 把文件1和文件2合并成文件3 cat 文件1 文件2>文件3 使用less查看文件时&#xff0c;搜寻ab字符 /ab 用more和less如何查看文件 more&#xff1a; CtrlF -- 向下滚动一屏 CtrlB -- 返回上一屏 f -- 向下翻屏 b -- 向上翻屏 …

python动漫论坛管理系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…

Web 技术与 Nginx 网站环境部署

这里写目录标题 一. Web基础域名和DNS域名的概念域名的结构域名结构类型 Hosts文件Hosts文件的作用修改Hosts文件 DNS域名注册 网页与HTML网页概述HTML概述HTML基本标签HTML语法规则HTML文件结构 网站和主页Web1.0 与 Web2.0 静态网页与动态网页静态网页动态网页动态网页语言 H…