蓝桥杯STM32 G431 hal库开发速成——输入捕获

蓝桥杯的输入捕获较为简单,基本不涉及溢出的问题。所以这里就不介绍溢出了。文末有源码。

核心思想:在第一次上升沿的时候计第一个数,第一次下降沿的时候计第二个数,第二次上升沿的时候计第三个数。
在这里插入图片描述

占空比 =(第二个数-第一个数) / (第三个数-第一个数)

其实这个占空比公式并没有写全,是简写了,写完了应该是:

占空比=高电平的时间/周期。即:(第二个数-第一个数) 乘 计一个数的时间 / (第三个数-第一个数) 乘 计一个数的时间,简写是因为正好约去了

周期 = (第三个数-第一个数) 乘 计一个数所需要的时间

计一个数所需要的时间 = psc / pclk

一、Cubemx配置

在这里插入图片描述

二、代码编写

1.在捕获回调函数中


void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM3)
	{
		switch(count)
		{
			case 1:
			{
				jishu1=__HAL_TIM_GET_COUNTER(&htim3);
			  __HAL_TIM_SET_CAPTUREPOLARITY(&htim3, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_FALLING);
				count++;
				break;
			}
			
			case 2:
			{
				jishu2=__HAL_TIM_GET_COUNTER(&htim3);
			  __HAL_TIM_SET_CAPTUREPOLARITY(&htim3, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);
				count++;
				break;
			}
			case 3:
			{
				jishu3=__HAL_TIM_GET_COUNTER(&htim3);
				count++;
				HAL_TIM_IC_Stop_IT(&htim3,TIM_CHANNEL_1);
				break;
			}
		}
	}
}

2.在main函数中

 LCD_Init();
  LCD_Clear(White);
  HAL_TIM_IC_Stop_IT(&htim3, TIM_CHANNEL_1);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  switch(count)
	  {
		  case 0:
		  {
			  __HAL_TIM_SET_COUNTER(&htim3, 0);
			  HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_1);
			  __HAL_TIM_SET_CAPTUREPOLARITY(&htim3, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);
			  count++;
			  break;
		  }
		  
		  case 4:
		  {
			  fre=1000000.0/(jishu3-jishu1);
			  zkb=(jishu2-jishu1)*100.0/(jishu3-jishu1);
//			  频率为占空比为
			  sprintf(buff,"zkb:%.2f%% fre:%.2f",zkb,fre);
			  LCD_DisplayStringLine(Line4, buff);
			  count=0;
			  break;
		  }
		  
	  }
  }
  /* USER CODE END 3 */
}

三、现象

通过调节开发版上的旋钮改变占空比跟频率
在这里插入图片描述
小编的源码输入捕获源码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年必用的九大顶级Java分析器:性能优化的利器

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

基于Java的桃花峪滑雪场租赁系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

性能测试丨GreatSQL TPC-H 性能测试报告正式发布!

1、测试背景概述 本次测试针对GreatSQL开源数据库基于标准 TPC-H 场景的测试。 TPC-H(商业智能计算测试)是美国交易处理效能委员会(TPC,TransactionProcessing Performance Council)组织制定的用来模拟决策支持类应用…

数据容器-序列-集合-Python

师从黑马程序员 序列 序列的常用操作-切片 切片:从一个序列中,取出一个子序列 语法:序列[起始下标:结束下标,步长] 注:此操作不会影响序列本身,而是会得到一个新的序列 my_list[0.1,2,3,4,5,6] result1…

【大模型】VS Code(Visual Studio Code)上安装的扩展插件用不了,设置VS Code工作区信任

文章目录 一、找到【管理工作区信任】二、页面显示处于限制模式,改为【信任】三、测试四、总结 【运行环境】win 11 相关文章: 【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程 【问题】之前在 VS Code上安装 CodeGeeX 插件后&…

C语言中如何动态分配内存并进行操作

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…

100个openharmony开源demo:1.日历

准备用开发者手机写100个开源的demo不知道能不能实现,日拱一卒,期待蜕变。 第一个demo:日历,借鉴了网上的日历算法,自己用arkts写了界面和点击事件,各位可根据此demo写自己的日历选择器等组件。 1.目录结…

Go——map操作及原理

一.map介绍和使用 map是一种无序的基于key-value的数据结构,Go语言的map是引用类型,必须初始化才可以使用。 1. 定义 Go语言中,map类型语法如下: map[KeyType]ValueType KeyType表示键类型ValueType表示值类型 map类型的变量默认…

python总结-Linux系统使用

设置变量并输出 [rootldpbzhaonan py]$ cat var01.py str1hello str2worldprintf "${str1} ${str2} \n" printf ${str1} ${str2} \n\n就是代表换行,使用printf输出的话,没有自动换行。 不使用换行如下图显示 [rootldpbzhaonan py]$ cat var0…

C语言学习 五、一维数组与字符数组

5.1一维数组 5.1.1数组的定义 数组特点: 具有相同的数据类型使用过程中需要保存原始数据 C语言为了方便操作这些数据,提供了一种构造数据类型——数组,数组是指一组具有相同数据类型的数据的有序集合。 一维数组的定义格式为 数据类型 数…

虚拟+现实,刷新线上直播的“打开方式”

近年来,短视频和线上直播大热,成为我们看世界的途径之一,我们渐渐习惯了看屏幕里面的虚拟世界。随着AIGC技术的不断革新,让虚拟直播间的体验感越来越真实,给我们带来了不同寻常的体验。 虚实融合,超越传统…

将ORB-SLAM3用图像增强的方式打开

ORB-SLAM3在复杂光照环境下,特征提取和特征匹配的性能明显下降,其准确性和鲁棒性收到很大影响,尤其是当周围环境获取的ORB特征点数量不足时,位姿的估计过程无法进行,甚至或导致初始化和跟踪失败的情况,目前…

03、Lua 基本语法

Lua 基本语法 Lua 基本语法第一个 Lua 程序交互式编程脚本式编程 注释单行注释多行注释 标示符关键词全局变量 Lua 基本语法 Lua学习起来非常简单,我们可以创建第一个 Lua 程序! 第一个 Lua 程序 交互式编程 Lua提供了交互式编程模式。我们可以在命令…

开始喜欢上了runnergo,JMeter out了?

RunnerGo是一款基于Go语言、国产自研的测试平台。它支持高并发、分布式性能测试。和JMeter不一样的是,它采用了B/S架构,更灵活、更方便。而且,除了API测试和性能测试,RunnerGo还加上了UI测试和项目管理等实用功能,让测…

蓝桥杯刷题-串的处理

串的处理 代码 s input().split() l_new [] for i in s:i list(i)new""for j in range(len(i)-1): # 遍历newi[j]if i[j].isdigit() and i[j1].isalpha(): # 在字母和数字之间添加“_”new_if i[j].isalpha() and i[j1].isdigit(): # 同上new_newi[-1]l_new.appe…

K3 计划订单投放时,将“关联物料”传递到采购和生产订单的“组部件”字段

参考K/3 WISE 中MRP计算投放过程中 销售订单自定义字段怎么携带到任务单这篇文章,进行优化。 在表ICMrpDestBills下增加触发器,代码如下 CREATE TRIGGER [dbo].[ICMrpDestBills_update]ON [dbo].[ICMrpDestBills]AFTER INSERT,UPDATE AS BEGINSET NO…

mysql 设置初始密码

link 1.首先输入以下指令: sudo cat /etc/mysql/debian.cnf运行截图如下: 2. 再输入以下指令: mysql -u debian-sys-maint -p//注意! //这条指令的密码输入是输入第一条指令获得的信息中的 password ZCt7QB7d8O3rFKQZ 得来。//请根据自己的实…

【CKA模拟题】如何发布一个SVC资源

题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetesYou have an existing Nginx pod named nginx-pod . Perform the following steps: Expose the nginx-pod internally within the cl…

Linux系统部署Paperless-Ngx文档管理系统结合内网穿透实现公网访问

文章目录 1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 Paperless-ngx是一个开源的文档管理系统,可以将物理文档转换成可搜索的在线档案,从而减少纸张的使用。它内置…

二手车交易网站|基于JSP技术+ Mysql+Java+ B/S结构的二手车交易网站设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…