蓝桥杯—STM32G431RBT6(TIM定时器输入捕获频率和占空比)

news2024/11/17 23:48:59

一、什么是输入捕获?对比输出捕获区别?

输入捕获是指对输入信号的特定事件进行检测和记录它主要用于测量输入信号的时间间隔、频率等参数。而输出捕获则是对输出信号的特定事件进行控制和监测。两者的主要区别在于作用对象不同,输入捕获关注的是输入信号,而输出捕获关注的是输出信号。

输入捕获能够对输入信号的上升沿和下降沿进行捕获,并且记录下捕获时定时器的数值以及触发中断。根据功能分为两类:

  1. 普通输入捕获(只能测频率)

  1. PWM输入模式(可以测频率和占空比)(双通道)

二、使用步骤

1.配置工程


2.输入捕获频率

如图有两个信号发生器,R40和R39可调整信号发生器的频率,PA15和PB4可设置为定时器输入捕获模式,用于采集他所发出的信号

定义变量

 uint32_t cap1,cap2,R39_frq,R40_frq;
  uint32_t cap1_2,cap2_2,R39_duty,R40_duty;

 开启定时器

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

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

中断回调函数

htim的实例为TIM2时:

  • 如果htim的通道为HAL_TIM_ACTIVE_CHANNEL_1,则执行以下操作:
    • cap1 = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1):读取定时器 2 的通道 1 的捕获值并存储到cap1中。
    • cap1_2 = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2):读取定时器 2 的通道 2 的捕获值并存储到cap1_2中。
    • TIM2->CNT=0:将定时器 2 的计数器清零。
    • R40_frq = 80000000 / 80 / cap1:计算与定时器 2 相关的频率值,其中80000000是系统时钟频率,80是预分频值,cap1是捕获值。
    • R40_duty = (1.0 * cap1_2) / (1.0 * cap1) * 100:计算与定时器 2 相关的占空比值。
    • HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1)HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2):重新启动定时器 2 的通道 1 和通道 2 的输入捕获中断。
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)//输入捕获频率
{
if(htim->Instance==TIM2)
{
	if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)
	{
 cap1 = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);
cap1_2=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2);	
TIM2->CNT=0;
	R40_frq =80000000/80/cap1;
	R40_duty=(1.0*cap1_2)/(1.0*cap1)*100;
	HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
		HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);
		
	}
	
}
if(htim->Instance==TIM3)
{
if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)
	{
 cap2 = HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1);
cap2_2=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2);	
TIM3->CNT=0;
	R39_frq =80000000/80/cap2;
	R39_duty=(1.0*cap2_2)/(1.0*cap2)*100;
	HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
		HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);
	}
}

LCD显示 

	sprintf(buf,"   R39_frq:%dHZ    ",R39_frq);//输入捕获频率
	LCD_DisplayStringLine(Line6,(uint8_t*)buf);
		sprintf(buf,"   R40_frq:%dHZ    ",R40_frq);
	LCD_DisplayStringLine(Line7,(uint8_t*)buf);
		sprintf(buf,"   R39_duty:%d%%    ",R39_duty);//输入捕获频率
	LCD_DisplayStringLine(Line8,(uint8_t*)buf);
		sprintf(buf,"   R40_duty:%d%%    ",R40_duty);
	LCD_DisplayStringLine(Line9,(uint8_t*)buf);

三、效果展示

四、代码开源 

通过网盘分享的文件:18-TEST8-TIM输入频率和占空比.zip
链接: https://pan.baidu.com/s/1SWKCUrFRDdp6I0CK3vGMtA?pwd=0820 提取码: 0820

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

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

相关文章

JavaWeb图书借阅系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…

2022浙江省赛G I M

G - Easy Glide 题意 思路 由于数据范围比较小&#xff08;1e3&#xff09;,把所有的移动的时间转化为图论上的边权就可以了,再用dijkstra解决,注意如果用的是邻接表存的话要建双向边 代码 #include <map> #include <set> #include <queue> #include <…

【Linux】修改用户名用户家目录

0、锁定旧用户登录 如果旧用户olduser正在运行中是无法操作的&#xff0c;需要先禁用用户登录&#xff0c;然后杀掉所有此用户的进程。 1. 使用 usermod 命令禁用用户 这将锁定用户账户&#xff0c;使其无法登录&#xff1a; sudo usermod -L olduser2. 停止用户的进程 如…

Python中的机器学习:从入门到实战

机器学习是人工智能领域的一个重要分支&#xff0c;它通过构建模型来使计算机从数据中学习并做出预测或决策。Python凭借其丰富的库和强大的生态系统&#xff0c;成为了机器学习的首选语言。本文将从基础到实战&#xff0c;详细介绍如何使用Python进行机器学习&#xff0c;涵盖…

论文解读 | ACL'24最佳论文:利用扩散模型破译甲骨文语言

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 作者简介 管海粟&#xff0c;华中科技大学本科生在读。 主要研究方向为图像生成、图像分割、多模态大模型。获得国家奖学金、校三好学生奖学金、华中科技大学本科特…

开源AI智能名片小程序源码:私域电商构建独特竞争力的新机遇

摘要&#xff1a;本文旨在探讨私域电商如何利用开源AI智能名片小程序源码构建独特竞争力。在强调独特性是通向成功的必要条件的基础上&#xff0c;分析开源AI智能名片小程序源码在私域电商发展独特性方面的作用及相关策略。 一、引言 在竞争激烈的商业环境中&#xff0c;让自己…

西陆家政系统V1.0.1

微信小程序开发的西陆家政服务管理系统小程序 V1.0.1bug修复优化 1.修复首页轮播不能自动轮播问题;2.修复订单详情价格显示问题;3.修复在开放城市模式下,其他城市可以下单问题;4.修复个人二维码跳转小程序路径异常问题;5.修复小程序编辑我的地址选择定位后不刷新问题&#xf…

LeetCode 每周算法 8(栈、堆)

LeetCode 每周算法 8&#xff08;栈、堆&#xff09; 栈算法&#xff1a; class Solution { public: // 判断括号是否有效的函数 bool isValid(string s) { int n s.size(); // 获取字符串s的长度 // 如果字符串长度为奇数&#xff0c;则括号无法有效匹配&#xff0c;直…

利用多模态输入的自我中心运动跟踪与理解框架:EgoLM

随着增强现实(AR)和虚拟现实(VR)技术的发展,对自我中心(第一人称视角)运动的精确跟踪和理解变得越来越重要。传统的单一模态方法在处理复杂场景时存在诸多局限性。为了解决这些问题,研究者们提出了一种基于多模态输入的自我中心运动跟踪与理解框架——EgoLM。本文将详细…

群晖套娃:群晖+飞牛fnOS二合一,群晖nas安装飞牛fnOS系统实录(飞牛fnOS初体验,如何挂载网盘视频,轻松实现影视刮削)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 飞牛fnOS 📒📝 什么是飞牛fnOS?📝 准备工作📝 安装飞牛fnOS📝 影视刮削⚓️ 相关链接 ⚓️📖 介绍 📖 最近有一款很火的国产NAS系统吸引了不少用户的注意。你是否曾想过,将这种新兴系统安装到你的群晖设备上,实…

选读算法导论5.2 指示器随机变量

为了分析包括包括雇佣分析在内的许多算法&#xff0c;我们将使用指示器随机变量&#xff0c;它为概率和期望之间的转换提供了一个便利的方法&#xff0c;给定一个样本空间S和事件A&#xff0c;那么事件A对应的指示器随机变量&#xff1a; Xa 1 如果A发生    0 如果…

EEditor中的redo/uodo机制

本文分析EEditor中的redo/undo机制&#xff0c;并比较与常见的C中的undo/redo机制的区别。 内容 和传统的C中Command设计模式一致&#xff0c;EcommandManager管理命令&#xff0c;同时提供了命令类ECommand。其中EcommandManager中存在两个列表&#xff0c;一个为可撤销命令列…

网页设计进阶:favicon 图标、CSS 隐藏样式与鼠标样式

目录 非 VIP 用户可前往公众号回复“css”进行免费阅读 favicon图标 CSS 隐藏样式 鼠标样式 非 VIP 用户可前往公众号回复“css”进行免费阅读 favicon图标 在网页中引入 favicon 图标时,可采用如下的页面引入方法: <link rel="shortcut icon" hre…

3种解决Docker容器中配置运行环境的方法

1. dockerfile用于通过脚本生成镜像 2.进入docker容器后&#xff0c;配置环境完&#xff0c;导出容器快照为镜像&#xff0c;拷贝到另一个主机&#xff0c;再进行加载&#xff1b; 3.在本地将依赖库等需要的文件按照目录整理好&#xff0c;映射到docker中。 1. dockerfile用于…

衡石分析平台系统管理手册-功能配置之资源管理

资源管理​ 系统管理员可以对系统中的所有资源进行查看、转移所有权、删除操作&#xff1b; 可以查看特定用户持有的资源&#xff0c;从而可用在资源转移/删除后&#xff0c;删除用户、释放系统资源&#xff1b; 在组织用户变动较大时&#xff0c;可以实现资源的整理和回收。…

力扣 最小覆盖子串

最小覆盖子串 https://leetcode.cn/problems/minimum-window-substring/ 题目描述 题目分析f 覆盖子串&#xff1a;首先根据题意&#xff0c;要求目标字符串的元素必须都在子串中出现过&#xff0c;这表明可以是乱序出现。所以在解决问题是我们需要对子串和目标字符串做匹配&a…

408数据结构解析模版

第一题&#xff1a; 解析&#xff1a; 答案选A。 第二题&#xff1a; 解析&#xff1a; 答案选A。 第三题&#xff1a; 解析&#xff1a; 答案选A。 第四题&#xff1a; 解析&#xff1a; 答案选A。 第五题&#xff1a; 解析&#xff1a; 答案选A。 第六题&#xff1a; 解析…

数据结构与算法——Java实现 22.有效的括号

目录 22. 有效的括号 思路 接口 数组实现类 有效的括号 力扣 直到有一天&#xff0c;我不会再问离开的人为什么 —— 24.9.28 22. 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。…

鸿蒙开发(NEXT/API 12)【硬件(传感器开发)】传感器服务

使用场景 Sensor Service Kit&#xff08;传感器服务&#xff09;使应用程序能够从传感器获取原始数据&#xff0c;并提供振感控制能力。 Sensor&#xff08;传感器&#xff09;模块是应用访问底层硬件传感器的一种设备抽象概念。开发者可根据传感器提供的相关接口订阅传感器…

新电脑需要安装杀毒软件吗?

以下是关于新电脑是否需要安装杀毒软件的建议&#xff1a; 如果您经常访问各类网站&#xff0c;下载未知来源的文件&#xff0c;或者使用外部存储设备交换数据&#xff0c;那么安装杀毒软件是有必要的。 操作步骤&#xff1a;选择一款知名的杀毒软件&#xff0c;如 360 杀毒、腾…