合肥中科深谷嵌入式项目实战——人工智能与机械臂(五)

news2024/11/17 15:41:31
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
  • python项目实战

    Python编程基础教程系列(零基础小白搬砖逆袭)

  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 🌟最近更新

合肥中科深谷嵌入式项目实战——人工智能与机械臂(四)

⭐️定时器和按键消抖

我们前面介绍了实现stm32通过GPIO控制蜂鸣器响。本文会介绍定时器原理和按键消抖的相关知识。

🌟定时器

✨什么是定时器

STM32定时器是一种存在于STM32单片机中的外设,用于实现定时功能。STM32总共有8个定时器,包括2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6)。不同种类的定时器具有不同的功能和特点。

✨定时器的作用

STM32定时器具有多种功能,包括:

  1. 计时:STM32定时器可以用于生成精确的定时时间,通过预分频器设置定时器的计数频率,以及通过重装载值(arr)设置定时器的计数量,从而控制定时器的计时时间。
  2. 中断:定时器可以产生中断,当定时器计数到设定值时,会产生一个中断信号,可以用于触发其他操作或中断处理程序。
  3. PWM产生:定时器可以配置为产生脉冲宽度调制(PWM)信号,用于控制电机速度、LED亮度调节、风扇风速调节等应用。
  4. 输入捕获:定时器可以监测外部信号的边沿并记录时间戳,用于测量脉冲宽度、频率或捕获外部事件的时间点,以及捕获高低电平长度。
  5. 编码器接口功能:一些定时器还具有编码器接口功能,可以处理旋转编码器的输入信号,并提供方向和计数功能,在电机上使用较多。

总的来说,STM32定时器通过多种功能实现了精确的定时操作,适用于各种不同的应用场景。

🌟按键消抖

✨什么是按键消抖

按键消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。由于机械触点的弹性作用,按键开关在闭合时不会立刻稳定的接通,在断开时也不会一下子断开,按键在闭合和断开的瞬间会有一连串的抖动。按键消抖的关键是提取稳定的低电平(或高电平)状态,滤除按键稳定前后的抖动脉冲。

✨按键抖动

       通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。
       抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。

✨按键消抖方法

硬件消抖

适用于按键较少时

  • (1)RS触发器

       图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为0;当键按下时,输出为1。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),只要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。

  • (2)电容器

       利用电容的放电延时,采用并联电容法,也可以实现硬件消抖。如图所示,由于电容两端电压不能突变,使得按键两端的电压平缓变化,直至电容充放电到达一定电压阈值时,单片机才读取到电平变化。

软件消抖

如果按键较多,常用软件方法消抖

  • (1)延时函数按键消抖

       检测出键闭合后执行一个延时程序,5ms~10ms(取决于机械特性)的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
优点:简单方便
缺点:程序在空跑浪费CPU资源、不够精准

  • (2)定时器按键消抖

       原理:按键采用中断驱动方式,当按键按下以后触发按键中断,在按键中断中开启一个定时器,定时周期为 10ms,当定时时间到了以后就会触发定时器中断,最后在定时器中断处理函数中读取按键的值,如果按键值还是按下状态那就表示这是一次有效的按键。

⭐️总结

我们学习了定时器的相关知识,以及在实际编程中遇到了按键消抖要怎么处理。

🌟下节预告

我们今天介绍了定时器原理和按键消抖的相关知识。我们下一篇来介绍呼吸灯的实现。

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

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

相关文章

阿里云2核2G3M带宽轻量服务器87元一年,经济型e实例99元一年

2023阿里云双十一优惠活动2核2G3M轻量应用服务器一年优惠价87元,云服务器ECS经济型e实例优惠价格99元一年,也是2核2G配置,自带3M带宽,并且续费不涨价,阿里云百科aliyunbaike.com还是很建议大家选择e实例的,…

Java日志组件介绍之一

一、前言 前段时间爆出Log4j安全漏洞的事情,XX云因未及时报告漏洞被工信部暂停网络安全威胁和漏洞信息共享平台合作单位(https://www.cstis.cn/),话说Java的日志组件真是多而且也比较乱,后续几篇文章就聊一下各日志组…

大客户销售怎么做?CRM系统来帮您

大客户对企业的重要程度不言而喻,企业该如何更好地维护大客户?想要做好大客户销售,可以借助CRM销售管理系统,实现销售流程的数字化管理,深入挖掘了解客户,从而创造更多的收益。那么CRM系统对大客户销售有什…

Oracle数据库创建Sequence序列的基本使用

1.作用就是批量插入数据的时候可以给一个主键 sequence dose not exist_sequence not exist_拒—绝的博客-CSDN博客 Oracle创建Sequence序列_TheEzreal的博客-CSDN博客 Oracle序列(sequence)创建失败,无法取值(.nextval&#x…

LeetCode:2003. 每棵子树内缺失的最小基因值(C++)

目录 2003. 每棵子树内缺失的最小基因值 题目描述: 实现代码与解析: dfs 启发式合并 原理思路: 2003. 每棵子树内缺失的最小基因值 题目描述: 有一棵根节点为 0 的 家族树 ,总共包含 n 个节点,节点编…

局域网内远程控制电脑的软件

局域网内远程控制电脑的软件在日常办公中,非常常见了。它可以帮助用户在局域网内远程控制其他电脑,实现文件传输、桌面展示、软键盘输入等功能。 局域网内远程控制电脑的软件有很多种,其中比较实用的有域之盾软件、安企神软件、网管家软件等等…

[论文笔记]BGE

引言 今天介绍论文BGE,是智源开源的语义向量模型,BAAI General Embedding。 作者发布了C-Pack,一套显著推进中文嵌入领域的资源包。包括三个重要资源: 1) C-MTEB是一个全面的中文文本嵌入基准,涵盖了6个任务和35个数据集。 2) C-MTP是一个从标记和未标记的中文语料库中选…

RabbitMQ 运维 扩展

1、集群管理与配置 1.1、集群搭建 关于Rabbitmq 集群的搭建,详见以下文章。简单说来就是将多个单机rabbitmq服务,通过给到一致的密钥(.erlang.cookie)并且开放rabbitmq服务的 25672 端口,允许多节点间进行互相通讯&am…

leetCode 137. 只出现一次的数字 II + 位运算 + 模3加法器 + 真值表(数字电路) + 有限状态机

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 常规解法:哈希(hash) …

运行项目报错error in ./node_modules/marked/lib/marked.umd.js

今天跑项目时发现一个报错,问题出在marked这个包,然后翻看package.json里面也没有这个包,全局搜索项目也没有这个包相关的信息,可它就是报错,索性直接把它给卸载发现还是报错 报错原因:包的版本太高 解决…

AI:47-基于深度学习的人像背景替换研究

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

「完美修复」concrt140.dll丢失的修复方法

concrt140.dll是一个动态链接库文件,它是Microsoft Visual C 2015 Redistributable的一部分。这个文件通常位于Windows系统的System32文件夹中,它提供了一些用于多线程编程的函数和类。当你在运行某些程序时,系统会调用这个文件中的函数来执行…

系列三十五、Spring AOP失效原因以及解决方式

一、Spring AOP失效原因 (1)内部调用不会触发AOP; (2)方法是private修饰的,AOP会失效; 解决方法:改成public (3)目标类没有配置为bean&#xf…

【P2P owt】owt-client-native-p2p-e2e-test vs2017构建7:依赖库及路径

依赖库 G:\CDN\LiveServiceMesh\cdnsignal\third_party\libeva\thirdparty\janbar-openssl\out32\ssl\Debug\libssl-

vue面试题-原理层

虚拟dom 虚拟dom是什么?虚拟dom在vue中做了什么? vue 渲染两条线 虚拟dom是如何提升vue的渲染效率的? 局部更新节点数据将直接操作dom的地方拿到两个js对象之中去做比较 虚拟dom生成三要素 节点类型/目标元素 [必须有]节点属性子节点 Diff中的patch 虚拟dom 虚拟dom是什么…

编写Groovy Hello World 程序

使用 IntelliJ IDEA 打开 IntelliJ IDEA,并创建一个新的 Groovy 项目。 在项目中创建一个新的 Groovy 类文件,命名为 HelloWorld.groovy。 在 HelloWorld.groovy 文件中,编写以下代码: class HelloWorld {static void main(Stri…

初识Java 16-3 字符串

目录 扫描输入(Scanner) Scanner的分隔符 使用正则表达式扫描 StringTokenizer 本笔记参考自: 《On Java 中文版》 扫描输入(Scanner) 先看看在Scanner类加入之前,Java是如何处理文件或标准输入的&…

国际物流常见风险如何规避_箱讯科技

外贸物流是国际贸易的重要环节,其管理和效率的高低直接影响着贸易的成本和效益。因此,外贸企业应该重视物流的组织和管理,提高物流运作的效率。 国际物流基础知识 01什么是“双清包税”和“双清不包税” 双清包税上门又叫双清包税到门&…

接口测试学习手册

很多人会谈论接口测试。到底什么是接口测试?如何进行接口测试?这篇文章会帮到你。 前端和后端 在谈论接口测试之前,让我们先明确前端和后端这两个概念。 前端是我们在网页或移动应用程序中看到的页面,它由 HTML 和 CSS 编写而成…

天软特色因子看板(2023.10 第13期)

该因子看板跟踪天软特色因子A05005(近一月单笔流涌金额占比(%),该因子为近一个月单笔流通金额占比因,用以刻画股票在收盘时,主力资金在总交易金额中所占的比重。 今日为该因子跟踪第11期,跟踪其在SW801150 (申万医药生物) 中的表现…