STM32 定时器输入捕获3——捕获超长高电平

        第一章:https://blog.csdn.net/m0_73671341/article/details/134773615?spm=1001.2014.3001.5501

        第二章:https://blog.csdn.net/m0_73671341/article/details/134938332?spm=1001.2014.3001.5501

        从第一章的定时器捕获我们可以知道,即使把定时器捕获时长设置到最大也只有65.536ms,而第二章就说明了,高电平小于65.536ms的时候,如何捕获高电平时间。那么如果高电平时间溢出中断时间65.536ms怎么办?

  • 原先的TIM2(高电平输出)
	TIM_TimeBaseStructure.TIM_Period = 19999;TIM_TimeBaseStructure.TIM_Prescaler = 71;
TIM_SetCompare2(TIM2,10000);//占空比为50%,即10ms高电平

现在把TIM2改成

	TIM_TimeBaseStructure.TIM_Period = 19999;TIM_TimeBaseStructure.TIM_Prescaler = 719;

此时TIM2分频系数放大十倍,则频率降低十倍,周期放大十倍。

TIM_SetCompare2(TIM2,10000);//占空比为50%,即100ms高电平

        很明显已经超过最大值65.536ms了。 

这时候如果执行代码,输出高电平时间,会输出34.464ms,很明显65.536+34.464=100ms,65.536是一次周期的时间,所以我们可以得出一个结论:高电平时间=n次周期+最后捕获的时间

        所以我们在TIM3配置中,使能TIM_IT_Update(中断标志位),在TIM3中断函数中,清除TIM_IT_Update。

        代码逻辑:如果定时器在捕获,TIM_IT_Update为Set,并且此时处于高电平。peroid_times++,然后清楚TIM_IT_Update,重复此过程,每次溢出都会让peroid_times++。

void TIM3_IRQHandler(void)
{static unsigned char high_flag = 0;if(high_complete_flag == 0){if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)//溢出{if(high_flag == 1){peroid_times++;}}if(TIM_GetITStatus(TIM3,TIM_FLAG_CC1)==SET){if(high_flag == 0)//上升沿{high_flag = 1;high_value = 0;TIM_SetCounter(TIM3,0);TIM_OC1PolarityConfig(TIM3,TIM_OCPolarity_Low);}else//下降沿{high_value = TIM_GetCounter(TIM3);TIM_OC1PolarityConfig(TIM3,TIM_OCPolarity_High);high_flag = 0;high_complete_flag = 1;}}}TIM_ClearITPendingBit(TIM3,TIM_FLAG_CC1|TIM_IT_Update);
}
int main(void)
{TIM2_PWM_Configuration();TIM3_InputCaputure_Configuration();//PA1:发出《————》PA6:接收Uart1_Configuration();TIM_SetCompare2(TIM2,10000);//占空比为50%,即100ms高电平while(1){if(high_complete_flag == 1){printf("%d us",peroid_times * 65536+high_value);high_complete_flag = 0;}Delay_s(10);}
}

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

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

相关文章

杂记:使用 mac 和 windows 以及编辑器的总结

Chrome 扩展 Grammarly 语法检查 DM Integration Module idm 下载扩展 JSON Formatter json 格式化查看 uBlock Origin Ad block 油猴 任意网站都可以使用的脚本管理工具 Mac 快捷键整理 截图到剪贴板 shift command control 4 (不按 shift 存储为文件) 切换输入法…

JavaScript基础(27)_内联样式的获取和修改、获取元素当前显示的样式

内联样式的获取和修改 获取元素的内联样式: 语法:元素.style.样式名 注意:通过style属性设置和读取的都是内联样式,无法读取样式表中的样式。 修改元素的内联样式: 语法:元素.style.样式名 样式值比如…

子文件夹中一个.py文件导入父文件夹中某个.py文件

虽然各种Python语言编程书籍中一再强调,自从Python 3.3版本后,构建Python的Package结构,不用在每个文件夹下添加__init__.py文件。上面这句话,仅仅针对的是从主文件夹中的主要.py来导入各个子文件夹的模块结构来说的。自己亲自试验…

并发编程之深入理解AQS

目录 什么是AQS? AQS的特性 AQS总结 什么是AQS? java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer&a…

WordPress后台仪表盘自定义添加删除概览项目插件Glance That

成功搭建WordPress站点,登录后台后可以在“仪表盘 – 概览”中看到包括多少篇文章、多少个页面、多少条评论和当前WordPress版本号及所使用的主题。具体如下图所示: 但是如果我们的WordPress站点还有自定义文章类型,也想在概览中显示出来应该…

【经验分享】美赛报名以及注册方法-以2024年美赛为例

1 进入美赛官网 首先点击COMAP的官网链接: https://www.comap.com/然后选择Contests目录下的MCM/ICM 选择 Learn More and Register 然后选择 register for contest 接下来开始注册环节,注册分为两个步骤:顾问(指导教师&#xf…

Jsqlparser简单学习

文章目录 学习链接模块访问者模式parser模块statement模块Expression模块deparser模块 测试TestDropTestSelectTestSelectVisitor 学习链接 java设计模式:访问者模式 github使用示例参考 测试 JSqlParser使用示例 JSqlParse(一)基本增删改…

力扣(leetcode)第819题最常见的单词(Python)

819.最常见的单词 题目链接:819.最常见的单词 给你一个字符串 paragraph 和一个表示禁用词的字符串数组 banned ,返回出现频率最高的非禁用词。题目数据 保证 至少存在一个非禁用词,且答案 唯一 。 paragraph 中的单词 不区分大小写 &…

MCU 是指微控制器单元(Microcontroller Unit)

MCU 是指微控制器单元(Microcontroller Unit)。 微控制器是一种集成了处理器核心、存储器、输入/输出接口和其他外围设备的集成电路。它通常用于嵌入式系统中,负责控制和执行特定任务,例如控制家电、汽车电子、工业自动化等。 M…

GitHub API使用--获取GitHub topic

目录标题 技术简介申请token简单使用使用Java调用获取GitHub topic总结 技术简介 GitHub API是一个功能强大的工具,为开发者提供了访问和操作GitHub平台上资源的途径。无论是构建个人工具,集成自动化流程,还是开发应用程序,GitHu…

用js做小功能

css <style>th,td,tr {width: 100px;border: 1px solid red;}table {/* border: 1px solid red; */border-collapse: collapse;text-align: center;}</style> html <table><thead><tr><th>序号</th><th>书名</th><t…

【Git】任何位置查看git日志

需求 现需要查看指定项目中的某个文件的 Git 日志。如有 项目代码 jflowable &#xff0c;需要查看其下文件 D:\z_workspace\jflowable\src\main\java\com\xzbd\jflowable\controller\TestController.java 的日志。 分析 一般的思路是&#xff0c;进入 jflowable 项目&#…

网络抓包命令tcpdump

网络抓包命令tcpdump "tcpdump -i any -nn -vv tcp port 9095 -s 0 -w dump.cap"命令是一个网络抓包命令&#xff0c;用于捕获流经指定网络接口的TCP协议、端口号为9095的网络数据包&#xff0c;并将这些数据包写入到名为"dump.cap"的文件中。 具体参数解…

ES 之索引和文档

本文主要介绍ES中的数据组成结构单元。 一、文档(Document) 1、概念 ES的数据存储单元是面向文档的&#xff0c;文档是所有数据存储&#xff0c;搜索的最小单元。 你可以把ES中的文档对应成mysql中的一条条数据记录。到时候你存进ES的数据就是一个个文档。 文档存入ES是序列…

conda:Collecting package metadata (current_repodata.json): failed

使用conda install和conda create命令会出现下面的问题&#xff1a; Collecting package metadata (current_repodata.json): failed Collecting package metadata (current_repodata.json): failed>>>>>>>>>>>>>>>>>>…

MySQL、Oracle 常用SQL:建表、建视图、数据增删改查、常用condition

目录 1 MySQL、Oracle 建表语句整理1.1 MySQL 建表1.2 Oracle 建表1.3 补充1.3.1 主键&#xff1a;新增、删除1.3.2 字段&#xff1a;新增、修改、删除 2 MySQL、Oracle 建视图3 数据&#xff1a;增删改查3.1 插入数据3.1.1 MySQL、Oracle 插入一条数据3.1.2 MySQL、Oracle 插入…

BRC20通证的诞生与未来展望!如何导入bitget教程

BRC-20通证是什么&#xff1f; 嘿&#xff01;你知道BRC-20通证吗&#xff1f;这可是比特币区块链上的超级明星&#xff01;它们不依赖智能合约&#xff0c;而是把JSON代码刻在聪上&#xff0c;聪可是比特币的最小单位哦&#xff01;就像在比特币的乐高积木上盖房子&#xff0…

dubbo入门案例!!!

入门案例之前我们先介绍一下&#xff1a;zookeeper。 Zookeeper是Apacahe Hadoop的子项目&#xff0c;可以为分布式应用程序协调服务&#xff0c;适合作为Dubbo服务的注册中心&#xff0c;负责服务地址的注册与查找&#xff0c;相当于目录服务&#xff0c;服务提供者和消费者只…

自动驾驶轨迹规划之碰撞检测(一)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.碰撞检测的意义 2.安全走廊 3 计算几何 4 AABB与OBB 1.碰撞检测的意义 对于自动驾驶汽车或机器人的路径规划&#xff0c;碰撞检测是其…

Python 数据类型转换:数据世界的形态转换术

在 Python 中&#xff0c;数据类型转换是一项关键的技能。数据类型的转换使得我们能够在不同类型的数据之间进行转换和操作&#xff0c;提升了我们对数据的处理能力。本文将深入探讨 Python 中的数据类型转换&#xff0c;包括常见的数据类型、转换方法和使用技巧。 常见的数据类…