要求:

一、PWM输出

 

PWM波生成原理

在此处使用TIM2生成PWM,PA1输出PWM波。CNT小于CCR时,输出高电平;CNT大于CCR时,输出低电平。 

输入捕获测量频率的原理

输入捕获的捕获意思是它在PWM波上升沿或者下降沿的时候,会产生一个中断。这里设置为每遇到一个上升沿产生一次中断。

问:如何获取周期T

答:在上升沿(中断)产生的时候,将CNT置0,在下一个上升沿(中断)产生的时候,读取CNT的值,并将该CNT的值存放在一个变量capture_value(捕获值)中,这样就可以计算周期T了。

CNT加1,所耗费的时间

应用:测量定时器产生PWM波的频率。

 通过PA15这个引脚来进行一个定时器的输入捕获,去测量555定时器产生的PWM波的一个频率。

PWM频率可调是通过电位器R40来调整的

此次输入捕获分为两个部分

1、配置PA15、PB4 这两个引脚,去输入捕获两个信号发生器(555定时器U8、U7)产生的PWM波,测量该PWM波的频率。

2、重新定义一个引脚(PA7)去测量PA1输出的PWM波的频率。(需要在PA7和PA1这两个引脚之间连上一根杜邦线)

问题

预分频的大小要介于可以测量高频率和低频信号不会溢出

为了准确地测量信号的变化,捕获定时器的频率必须至少高于输入信号的频率

第一部分:

HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) 是STM32 HAL库中用于处理输入捕获(Input Capture)事件的回调函数。当定时器捕获到输入信号时,该回调函数会被调用。

调用时机

  1. 输入捕获事件

    • 当定时器配置为输入捕获模式时,如果捕获到信号边沿(上升沿或下降沿),定时器会将当前计数器的值存入捕获寄存器,并触发中断。

    • 此时,HAL库会调用 HAL_TIM_IC_CaptureCallback 函数。

  2. 中断触发

    • 输入捕获事件会触发定时器的中断,HAL库在中断服务程序(ISR)中处理捕获事件,并调用回调函数。

典型应用场景

  • 测量脉冲宽度

    • 通过捕获信号的上升沿和下降沿,计算两次捕获之间的时间差,从而测量脉冲宽度。

  • 频率测量

    • 通过捕获两个连续上升沿或下降沿的时间差,计算输入信号的频率。

  • 事件计时

    • 记录外部事件发生的时间戳。

在STM32的定时器中,CCR(Capture/Compare Register,捕获/比较寄存器) 是用于输入捕获和输出比较功能的关键寄存器。在输入捕获模式下,CCR 中存储的值是 定时器计数器(TIMx_CNT) 在捕获事件发生时的值。


CCR 里面装的是什么值?

在输入捕获模式下:

  • 当捕获事件发生时(例如,检测到上升沿或下降沿),定时器的当前计数器值(TIMx_CNT)会被自动复制到 CCR 寄存器中。

  • 因此,CCR 中存储的值是 捕获事件发生时定时器计数器的值


输入捕获,捕获的是什么值?

输入捕获功能的核心是 捕获外部信号的边沿事件,并记录此时定时器计数器的值。具体来说:

  1. 捕获的信号

    • 输入捕获功能通过定时器的输入通道(如 TIMx_CH1、TIMx_CH2 等)捕获外部信号的 边沿(上升沿、下降沿或双边沿)。

    • 边沿的类型由定时器的配置决定(例如,配置为上升沿捕获、下降沿捕获或双边沿捕获)。

  2. 捕获的值

    • 当捕获到指定的边沿时,定时器的当前计数器值(TIMx_CNT)会被锁存到 CCR 寄存器中。

    • 这个值可以用来计算:

      • 脉冲宽度:通过捕获上升沿和下降沿的计数器值,计算两者之差。

      • 信号周期:通过捕获两个连续上升沿(或下降沿)的计数器值,计算两者之差。

      • 事件时间戳:记录某个事件发生的时刻(以定时器计数器的值为单位)。


输入捕获的工作原理

  1. 配置定时器

    • 定时器以一定的频率计数(由预分频器和自动重装载值决定)。

    • 配置输入捕获通道,设置捕获边沿(上升沿、下降沿或双边沿)。

  2. 捕获事件发生

    • 当外部信号满足捕获条件(例如,检测到上升沿)时,定时器的当前计数器值(TIMx_CNT)会被锁存到 CCR 寄存器中。

    • 同时,定时器会触发一个中断或 DMA 请求。

  3. 读取 CCR 的值

    • 在中断服务程序或回调函数中,读取 CCR 的值,用于后续计算(如脉冲宽度、信号周期等)。


示例:测量脉冲宽度

假设定时器配置为上升沿和下降沿捕获:

  1. 第一次捕获

    • 当检测到上升沿时,定时器的计数器值 TIMx_CNT 被锁存到 CCR1 中。

    • 假设此时 CCR1 = 1000

  2. 第二次捕获

    • 当检测到下降沿时,定时器的计数器值 TIMx_CNT 被锁存到 CCR2 中。

    • 假设此时 CCR2 = 3500

  3. 计算脉冲宽度

    • 脉冲宽度 = CCR2 - CCR1 = 3500 - 1000 = 2500

    • 如果定时器的计数频率为 1 MHz(每个计数代表 1 µs),则脉冲宽度为 2500 µs。


总结

  • CCR 中存储的值:捕获事件发生时定时器计数器的值(TIMx_CNT)。

  • 输入捕获的功能:捕获外部信号的边沿,并记录此时定时器计数器的值。

  • 典型应用:测量脉冲宽度、信号周期或记录事件时间戳。

通过合理配置定时器和分析 CCR 的值,可以实现精确的时间测量和信号分析。

第二部分(新建一个项目): 

 

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件IO(1)

.文件IO1.概念标准IO是有缓存的IO,文件IO没有缓存,适合于通信、硬件设备操作标准IO是库函数,文件IO是系统调用2.系统调用与库函数系统调用:是Linux内核中的代码,只能在Linux系统中使用库函数:是对系统调用的…

【AI】Pycharm中要注意Python程序文件的位置

博主试着在本地电脑用Pycharm环境运行随便一个机器学习然后做图像识别的模型,Python的程序一直报博主学习图片的路径不正确,博主查了好几遍,也没找出问题,后来借助Deepseek才知道,Python主程序的位置一定要在Project下…

TDengine 可观测性最佳实践

TDengine 介绍 TDengine 是一款开源、高性能、云原生的时序数据库,专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。它不仅提供了高效的数据存储和查询功能,还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设…

Jenkins 搭建鸿蒙打包

1、创建流水线工程 选择 Freestyle project 2、配置模板仓库、凭证 配置仓库地址 创建凭证,凭证选择账号-密码(能够访问该仓库的个人或管理员 Gitlab 账密) 到这里执行构建,便可以克隆仓库到工作目录 3、安装插件 3.1 Rebuild…

【SpringBoot】02 基础入门-什么是Spring Boot?:Spring与SpringBoot

文章目录1、Spring能做什么1.1、Spring的能力1.2、Spring的生态1.3、Spring5重大升级1.3.1、响应式编程1.3.2、内部源码设计2、为什么用SpringBoot2.1、SpringBoot优点2.2、SpringBoot缺点3、时代背景3.2、分布式分布式的困难分布式的解决3.3、云原生上云的困难4、如何学习Spri…

FFmpeg 编译安装和静态安装

FFmpeg 编译安装和静态安装 简介 FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创建的格式。本指南将详细介绍如何在 CentOS 8.5.2111 系统上从源代码编译并安装 FFmpeg 6.1.1 版本。从源代码编译安装可…

人大BABEC地平线高效率具身导航!Aux-Think:探索视觉语言导航中数据高效的推理策略

作者: Shuo Wang1,3^{1,3}1,3, Yongcai Wang1^{1}1, Wanting Li1^{1}1 , Xudong Cai1^{1}1, Yucheng Wang3^{3}3, Maiyue Chen3^{3}3, Kaihui Wang3^{3}3, Zhizhong Su3^{3}3, Deying Li1^{1}1, Zhaoxin Fan2^{2}2单位:1^{1}1中国人民大学,2^…

01. maven的下载与配置

1.maven的下载与初步配置a.下载并配置仓库地址下载maven压缩包,并解压,解压后应有如下几个文件点击conf,打开settings.xml(我用的VScode打开的),我们需要声明一下内部仓库的地址,以及私服的一些…

1701. 请输出所有的3位对称数

问题描述请输出所有的 33 位对称数,对称数指的是一个整数 nn 正过来和倒过来是一样的,比如:101、121、282…101、121、282…请从小到大输出符合条件的3位对称数,每行 11 个。输入无。输出从小到大按题意输出符合条件的数&#xff…

C++算法·排序

排序的定义 这个不用说吧 就是根据某个条件对一个数列进行有序的操作 例如要求从小到大排序、从大到小排序等等 排序的分类 比较排序(Comparison(Comparison(Comparison Sorts)Sorts)Sorts) 特点:通过元素间的比较决定顺序 时间复杂度下限:O(nO(nO(n…

微服务项目中的注册中心——Nacos配置

从零开始:Nacos服务注册与配置中心实战教程 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的服务发现、配置管理工具,集注册中心与配置中心于一体,广泛应用于微服务架构。本文将从环境搭建到实战配…

日期格式化成英文月,必須指定語言環境

如果不指定Locale.ENGLISH 在有些JDK下 輸出6月 INV USD 314,791.77,DUE 25-07 [PAID USD 503,389.56 ON 2025-07-16]Mar INV USD 52,042.00,DUE 25-07 [PAID USD 52,042.00 ON 2025-08-11]所以必…

【6】Transformers快速入门:Transformer 的注意力层 是啥?

一句话看懂注意力层作用:让 AI 像人一样 “抓重点” (比如读“猫追老鼠”,自动聚焦 “追” 这个动作,忽略无关词)1. 为什么需要注意力? 问题场景(翻译例子): 英文&#x…

集合,完整扩展

目录 前言: 一、List接口 1.1 ArrayList 1.2 LinkedList 1.3 Vector 二、Set接口 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、应用选择 前言: 本篇文章重点梳理 List 接口和 Set 接口的核心内容,结合代码案例帮大家吃透它们的…

【doris基础与进阶】3-Doris安装与部署

安装前的准备 在windows系统上通过vmwareubuntu 22.04的方式进行安装,由于资源有限,在同1台机器上同时安装fe和be(broker本次不安装,极简化安装),安装版本为2.1.10,2.x版本架构不会有大的变化&a…

关于数据结构6-哈希表和5种排序算法

哈希表1哈希算法将数据通过哈希算法映射成一个键值,存取都在同一个位置实现数据的高效存储和查找,将时间复杂度尽可能降低至O(1)2哈希碰撞多个数据通过哈希算法得到的键值相同,成为产生哈希碰撞3哈希表:构建哈希表存放0-100之间的…

AWT与Swing深度对比:架构差异、迁移实战与性能优化

全面对比分析Java AWT与Swing GUI框架的架构差异、性能表现和适用场景,提供完整的AWT到Swing迁移实战指南,包含15代码示例、性能测试数据、最佳实践建议,助你做出明智的技术选型和实现平滑迁移。 Java AWT, Swing, GUI框架对比, 代码迁移, 性…

git仓库检测工具

介绍 Gitleaks 是一款用于检测git 仓库、文件以及任何你想通过 git 传递的信息(例如密码、API 密钥和令牌)的工具stdin。如果你想了解更多关于检测引擎工作原理的信息,请查看这篇博客:正则表达式(几乎)就是你所需要的一切。 ➜ ~/code(master) gitleaks git -v○│╲│…

【4】Transformers快速入门:自然语言模型 vs 统计语言模型

一句话关系总结 统计语言模型 自然语言模型的“数学基础” (就像加减乘除是数学的基础,统计模型是AI学说话的基础工具)区别对比表(小白版)维度统计语言模型自然语言模型本质用数学公式算句子概率用神经网络模仿人脑理…

[激光原理与应用-252]:理论 - 几何光学 - 传统透镜焦距固定,但近年出现的可变形透镜(如液态透镜、弹性膜透镜)可通过改变自身形状动态调整焦距。

一、液态透镜:电润湿效应驱动曲率变化基本结构液态透镜由两种互不相溶的液体(如导电水溶液与绝缘硅油)封装在透明圆筒形容器中构成。容器壁经疏水处理,使水溶液呈圆顶型聚集在中心,与硅油形成凸状曲面。工作原理电润湿…