STM32学习----通用定时器的应用(输入捕获,测量周期和占空比)

2023-11-07

输入捕获的应用

输入捕获一般是用来测量输入信号的频率,占空比这些信息。

输入捕获的原理

 

 捕获的原理:

        1、信号从某个通道输入,比如通道1(CH1);

        2、经过滤波和边沿检测后产生两个一模一样的信号TI1FP1和TI1FP2,TI1FP1送给捕获通道IC1,TI1FP2送给捕获通道IC2;

        3、定时器设置为复位模式,将TI1FP1作为复位触发信号,将捕获通道IC1设置为上升沿触发,这样每当TI1FP1上升沿到来的时候,就将定时器复位;

        4、当首次检测到TI1FP1的上升沿,定时器复位,计数器CNT的值为0;

        5、IC2设置为下降沿触发,当TI1FP2的下降沿到来时,CCR2记录CNT寄存器此时的值X;

        6、当IC1再次检测到TI1FP1上升沿的时候,CCR1记录CNT此时CNT寄存器的值Y;

        这个X是不是可以理解为高电平持续的时间,这个Y是不是可以理解为整个信号的周期,X/Y就是信号的占空比了。

        基本思想就是让两个捕获通道来检测同一个信号,捕获通道IC1检测信号的上升沿,捕获通道IC2检测信号的下降沿,第一个上升沿来复位定时器,第二个上升沿来记录信号的周期值,下降沿就是

使用STM32CubeMX配置,用TIM3的CH1通道来捕获

 

 用定时器2来产生一个频率1000Hz,占空比为50%的周期信号作为信号源,让TIM3来捕获

extern uint16_t CCR1_Cnt;
extern uint16_t CCR2_Cnt;
extern float duty;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)    
	{
		CCR1_Cnt = HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1);
		duty = (float)(CCR2_Cnt+1) / (CCR1_Cnt+1);
	}
	if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
	{
		CCR2_Cnt = HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2);
	}
}

main函数中开启输入捕获

  HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_1);
  HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_2);
  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);

  while (1)
  {
    
    printf("Frequency = %d \r\n",(uint16_t)(CCR1_Cnt+1));
    printf("Duty = %.2f \r\n",duty*100);
    HAL_Delay(1000);
  }

完整的工程代码在链接

STM32定时器输入捕获资源-CSDN文库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32学习----通用定时器的应用(输入捕获,测量周期和占空比) 的相关文章

随机推荐

  • 解决Xavier编译ROS工程中cv_bridge找不到的问题

    0 背景 Jetson 系列Xavier 系统18 04 刷机自带opencv4 1 1版本 普通机器安装18 04系统后会自带opencv3 2版本 ROS自18 04 Melodic 不再自带opencv 依赖系统opencv 因此ro
  • spring boot+vue+nginx前后端分离详细部署过程心得!(不包含nginx集群和负载均衡)

    前期准备 spring boot项目 vue 服务器 或者linux虚拟机可联网 环境准备 服务器上有数据库 java环境即可 java会打包 vue使用build打包项目 1 安装nginx到服务器 虚拟机 下载的相关包 nginx安装包
  • Kafka各个版本差异总结

    Kafka各个版本差异总结 问题导读 1 Kafka如何做到升级不停机 2 Kafka各个版本有哪些显著变化 3 Kafka新版本设计哪些协议 Kafka 2 0 0引入了线程协议的变化 通过遵循下面建议的滚动升级计划 您可以保证在升级期间
  • python语言开发环境搭建_Python学习之路 (一)开发环境搭建-Go语言中文社区

    目录 目录 正文 前言 python3应该是Python的趋势所在 当然目前争议也比较大 这篇随笔的主要目的是记录在centos6 7下搭建python3环境的过程 以及碰到的问题和解决过程 另外 如果本机安装了python2 尽量不要管他
  • SpringCloud-服务网关

    服务网关 GateWay 核心简介 上一代zuul 1 x官网 Gateway官网 概述 Cloud全家桶中有个很重要的组件就是网关 在1 x版本中都是采用的Zuul网关 但在2 x版本中 zuul的升级一直跳票 SpringCloud最后
  • # Vue 配置前端后端路由地址

    Vue 配置前端后端路由地址 文章目录 Vue 配置前端后端路由地址 前端路由配置 配置项目地址 配置页面路由 路径跳转 后端路由配置 配后端请求地址 前端路由配置 配置项目地址 修改 config index js的配置文件 proxyT
  • jvm监控工具之jvisualvm&jmc

    一 jvisualvm 监控 方法一 使用 jstatd 1 创建策略文件 jstatd all policy 内容如下 grant codebase file java home lib tools jar permission java
  • 许奔创新社-第7问:构建创意的液态网络需要哪些条件?

    在 创意诞生的关键要素 中 我们曾提到一个非常重要的问题 对于体量差异不大的液态网络 为什么有的能产出大量高价值的创意 而剩下的却如一潭死水般无法产出分毫创意 造成此等差距的原因究竟是什么 液态网络这个词 是由创新者史蒂文 约翰逊 Stev
  • iptables 命令

    NAME iptables administration tool for IPv4 packet filtering and NAT SYNOPSIS iptables ADC 指定链的规则 A 添加 D 删除 C 修改 iptables
  • 【Neo4j】第 4 章:图形数据科学Library and Path Finding

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Java RMI 入门

    Java RMI 入门 如何通信 实战 完整代码 Java RMI 指 JDK 内置的关于实现远程方法调用 Remote Method Invocation 的 API 这些 API 位于包 java rmi 中 通过 Java RMI 可
  • java事件监听机制(观察者设计模式的实际运用)

    package cn yang test controller java的事件监听机制和观察者设计模式 Created by Dev yang on 2016 3 1 public class Demo public static void
  • QT-MQTT客户端和服务端介绍

    MQTT Message Queuing Telemetry Transport 是一种基于发布 订阅模式的消息传递协议 在QT中使用MQTT 可以轻松地创建MQTT客户端和服务端 并实现设备之间的通信 在QT中 可以使用Qt MQTT模块
  • 7个Python有趣的lambda应用

    7个Python有趣的lambda应用 1 排序sort 2 寻找最大值max 3 查找最小值min 4 filter 5 map 6 reduce 7 Sorted 源码 1 排序sort 2 寻找最大值max 3 查找最小值min 4
  • javascript数据验证

    校验是否全由数字组成 function isDigit s var patrn 0 9 1 20 if patrn exec s return false return true 校验登录名 只能输入5 20个以字母开头 可带数字 的字串
  • 2021美赛E题

    2021年 问题E 重新优化食物系统 最近的事件向我们表明 我们的全球粮食系统即使在世界的某些地区也是不稳定的 它通常服务于全世界 这些不稳定的部分原因是我们目前的全球气候变化 庞大的国内和国际食品生产商和经销商体系 这个食物系统 使食物的
  • 2022-15-Java 设计模式-抽象工厂模式

    在工厂方法模式中 我们使用一个工厂创建一个产品 一个具体工厂对应一个具体产品 但有时候我们需要一个工厂能够提供多个产品对象 而不是单一的对象 这个时候我们就需要使用抽象工厂模式 在介绍抽象工厂模式前 我们先厘清两个概念 产品等级结构 产品等
  • 【Java书笔记】:《Redis 深度历险:核心原理和应用实践》分布式锁,延时队列,位图,HyperLogLog,布隆过滤器,漏斗限流,GeoHash,Scan,管道,事务,主从,Redis源码

    Redis 深度历险 核心原理和应用实践 目 录 开篇 授人以鱼不若授人以渔 Redis 可以用来做什么 7 由 Redis 面试想到的 7 小册的内容范围 8 Redis 可以做什么 8 基础 万丈高楼平地起 Redis 基础数据结构 1
  • 备战数学建模34-BP神经网络预测2

    目录 一 辛烷值的预测 1 题目分析与原理介绍 2 神经网络建立过程 3 预测结果分析 BP神经网络模型 包含输入层 隐含层和输出层 正向传播过程是通过输入样本到输入层 通过输入层经过各层隐藏层 最后到达输出层 若输出层输出值与期望值的输出
  • STM32学习----通用定时器的应用(输入捕获,测量周期和占空比)

    输入捕获的应用 输入捕获一般是用来测量输入信号的频率 占空比这些信息 输入捕获的原理 捕获的原理 1 信号从某个通道输入 比如通道1 CH1 2 经过滤波和边沿检测后产生两个一模一样的信号TI1FP1和TI1FP2 TI1FP1送给捕获通道