MCU实现对外部脉冲信号的计数功能

news2025/2/27 2:38:37

有的传感器会输出脉冲信号,MCU需要统计脉冲输入的个数,通常有如下实现方式:

 

1.GPIO中断

原理很简单,利用GPIO的上升沿或者下降沿中断,进中断的次数就是脉冲的个数。只需要在中断服务函数里计数即可。

使用GPIO中断需要注意:

  • 脉冲信号的频率不能太高,否则MCU可能处理不过来

  • GPIO中断处理程序应尽可能短,否则影响处理速度

  • GPIO中断优先级应高,否则会延迟对脉冲信号的处理

我们先用一个板子产生频率为10Khz的PWM波,时长为100ms 。

下降沿的脉冲数理论为100ms/0.1ms=1000个,实际上因为有少许误差,从上面逻辑分析仪可以看到实际脉冲数为1.009k,即1009个。然后将PWM接到另外一个板子的GPIO引脚上,开启下降沿中断,在中断服务函数中计数,可以看到实际值就是1009。

2.定时器输入捕获

输入捕获常用来测量脉冲宽度和频率,它也可以用来对脉冲计数。它的原理和上述GPIO中断类似,只不过用的是定时器的输入捕获中断。

3.定时器用作计数

定时器和计数器其实很相似,只不过定时器是对内部的时钟脉冲进行计数,计数到一定数值时就可以根据频率,计算出时间。

而计数器是对外部脉冲进行计数,即外部引脚每发生一次变化,计数器就计数一次。

可以将外部脉冲信号接入到MCU的TIMx_ETR引脚,就可以使用MCU的定时器来计数。

它的使用也很简单,主要就是配置TIMx_SMCR寄存器(slave mode control register),具体可以参考芯片参考手册。

可以看到定时器CNT的值就是脉冲的个数。

总结:

1)尽量使用TIMER ETR引脚通过计数器方式来实现脉冲计数,如果条件不允许,外部脉冲输入频率不是很高,也可以使用GPIO中断来实现,不过还是要同时考虑高频中断对整体系统的影响。比如上面MCU主频是48Mhz,将10Khz调整为100Khz,实测GPIO中断还可以准确计数,但是当再继续增大到1Mhz时,就处理不过来了,实测发出约50000个脉冲,GPIO中断只测出了10206个,而使用计数器模式则可以准确的计数。

2)如果使用GPIO中断计数,要特别注意GPIO上不能有接地的电容,否则会改变脉冲波形,导致错误的计数。

欢迎关注我们,一起学习嵌入式!

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

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

相关文章

Streaming System是第一章翻译

GIthub链接,欢迎志同道合的小伙伴一起翻译 Chapter 1.Streaming101 如今,流数据处理在大数据中是非常重要的,其主要原因是: 企业渴望对他们的数据有更及时的了解,而转换到流处理是实现更低延迟的一个好方法&#xf…

使用vite+vue3.0 创建一个cesium基础应用 ----01 项目搭建

使用vitevue3.0 创建一个cesium基础应用 ----01 项目搭建 1.使用yarn创建一个vite项目 我们可以在vite官网找到vite创建项目的命令 https://cn.vitejs.dev/ 可以使用yarn创建项目选择使用vue3.0框架,语言使用js 创建完成后结构如下: 2.找到vite社区中的…

idea通过Dockerfile上传项目到服务器

Docker通过Dockerfile上传项目 文章目录Docker通过Dockerfile上传项目1.创建一个简单的springBoot项目2.写一个简单的接口3.写Dockerfile文件4.新建docker镜像5.上传代码运行1.创建一个简单的springBoot项目 点击文件–>新建–>项目 点击选择Spring Initializer &#x…

火山引擎 DataTester:A/B 实验如何实现人群智能化定向?

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在精细化运营时代,用户需求和业务场景愈加多元,在产品功能迭代以及各类活动中,面向不同人群的兴趣点,有针对性地“精…

导师信息管理系统

技术:Java、JSP等摘要:随着我国教育产业化的飞速发展,社会对教育水平和教学管理软硬件的要求日益提高,尤其是对一个学校能够具有一整套的管理软件提出了更多的要求。为了适应这种形式,教育系统尤其是大学不仅首先要有坚…

小成本互联网创业怎么做?低成本创业的方法分享

多数人都会有想法创业,尤其是在互联网上面创业,很多人看到了商机,但是因为成本的原因又放弃了,实际上,小成本也可以互联网创业!那么,小成本互联网创业怎么做?低成本创业的方法在这里…

【React】React——redux

🚩🚩🚩 💎个人主页: 阿选不出来 💨💨💨 💎个人简介: 一名大二在校生,学习方向前端,不定时更新自己学习道路上的一些笔记. 💨💨💨 💎目…

Java 数据类型

数据类型用于对数据归类,以便开发者理解和操作。 基本数据类型 Java 确定了每种基本数据类型所占存储空间的大小,不会像其它语言那样随机器硬件架构的变化而变化,这使 Java 程序更具可移植性。 Java 中定义了如下的基本数据类型。 byte …

【MobileNet V2】MobileNet V2

目录1、简介2、论文创新点1)倒残差结构 -- Inverted residual block2)ReLU63、网络结构文献名称:MobileNetV2: Inverted Residuals and Linear Bottlenecks 发表时间:2018年 下载地址:https://openaccess.thecvf.com/c…

Vue基础入门讲义(四)-组件化

文章目录1.引言2.定义全局组件3.组件的复用4.局部注册5.组件通信5.1.父向子传递props5.2.传递复杂数据5.3.子向父的通信1.引言 在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,也会有相同的部分。例如可能会有相同的头部导航。 但是如果…

第二章SpringBoot基础学习

文章目录SpringBoot依赖管理特性依赖管理开发导入starter场景启动器SpringBoot自动配置特性自动配好Tomcat自动配好SpringMVC默认的包结构各种配置拥有默认值按需加载所有自动配置项SpringBoot注解底层注解ConfigurationImport导入组件Conditional条件装配ImportResource导入Sp…

Python入门自学进阶-Web框架——33、瀑布流布局与组合查询

一、瀑布流,是指页面布局中,在显示很多图片时,图片及文字大小不相同,导致页面排版不美观如上图,右边的布局,因为第一行第一张图片过长,第二行的第一张被挤到第二列了。示例:def flow…

大数据框架之Hadoop:MapReduce(八)常见错误及解决方案

1、导包容易出错。尤其Text和CombineTextInputFormat。 2、Mapper中第一个输入的参数必须是LongWritable或者NullWritable,不可以是IntWritable. 报的错误是类型转换异常。 3、java.lang.Exception: java.io.IOException: Illegal partition for 13926435656 (4)&…

51单片机LCD1602的使用

文章目录前言一、LCD1602简单介绍二、LCD1602中各个引脚的作用四、LCD1602命令解析1.写命令2.写数据3.清屏指令4.光标归位指令5.进入模式设置指令6.显示开关控制指令7.设定显示屏或光标移动方向指令三、LCD1602代码编写四、代码测试总结前言 本篇文章将为大家讲解LCD1602的使用…

CPU扫盲-CPU如何执行指令以及流水线技术

在CPU扫盲-CPU与指令集中阐述了CPU与指令集之间的关系,并在CPU扫盲-自研指令集中以创造者的身份深入讲解了指令集,这篇文章则是针对CPU的专场,以x86架构下的CPU为例具体分析一下CPU如何执行指令。 计算机基本硬件由控制器、储存器、运算器、输…

基于java的五子棋游戏设计

技术:Java、JSP等摘要:随着互联网迅速的发展,网络游戏已经成为人们普遍生活中不可或缺的一部分,它不仅能使人娱乐,也能够开发人的智力,就像本文所主要讲的五子棋游戏一样能挖掘人们聪明的才干与脑袋的机灵程…

【大数据 AI 人工智能】数据科学家必学的 9 个核心机器学习算法

如今,机器学习正改变着我们的世界。借助机器学习(ML),谷歌在为我们推荐搜索结果,奈飞在为我们推荐观看影片,脸书在为我们推荐可能认识的朋友。 机器学习从未像在今天这样重要。但与此同时,机器学习这一领域也充斥着各种术语,晦涩难懂,各种机器学习的算法每年层出不穷…

思科2.7.6 Packet Tracer - Implement Basic Connectivity(作业)

Packet Tracer - 实施基本连接地址分配表目标第 1 部分:对 S1 和 S2 执行基本配置第 2 部分:配置 PC第 3 部分:配置交换机管理界面背景信息在这个练习中,您会首先执行基本的交换机 配置。然后您会通过在交换机和 PC 上配置 IP 编址…

【C++】string

【C修炼秘籍】string 目录 【C修炼秘籍】string 文章目录 前言 一、标准库里的string 二、string常用接口功能简介(具体使用和底层转到模拟实现) 1、string类的常见构造函数 2、string类对象的容量操作 3、string类对象的访问及遍历操作 4、 string类对象…

数影周报:LastPass数据泄露事件最新细节

本周看点:LastPass:关键运维员工遭定向攻击;Waymo今年第二轮裁掉137名员工;国家网信办发布《个人信息出境标准合同办法》;京麦商家“取消订单页面”升级;“智研汇”获千万级天使轮投资......数据安全那些事…