stm32---输入捕获实验实操(巨详细)

news2024/11/13 11:27:18

这次来分享上次没说完的输入捕获的知识点

实验中用到两个引脚,一个是通用定时器 TIM3 的通道 1,即 PA6,用于输出 PWM 信号,另一
个是高级控制定时器 TIM1 的通道 1,即 PA8,用于 PWM 输入捕获,实验中直接用一根杜邦线
短接即可 PA6 和 PA8 即可,同时可用示波器监控 PA6 的波形,看看实验捕获的数据是否正确。

PA6:用定时器的输出比较功能输出波形。

PA8:用定时器的输入捕获功能捕获波形。

步骤

1.通用定时器产生 PWM 配置

2.高级定时器 PWM 输入配置

3.编写中断服务程序,计算测量的频率和占空比,并仿真调试看是否一致。

编程的要点主要分成两部分,一个是通用定时器的 PWM 信号输出,另一个是 PWM 信号输入捕
获。

下面就贴出代码,全文跟着我操作,可以和我实现一样的效果

1.定时器产生 PWM 配置(输出比较)

1.1 配置GPIO

由于我们用到的是PA6,那么就配置PA6复用推挽输出就行,因为他用的不是普通GPIO口的功能,而是TIM3_CH1所以要用到复用功能,同时开启复用的时钟。

1.2 初始化定时器

1.3 初始化输出比较

最后在最上面加上,使能一下TIM3的时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

这样就可以产生50%占空比的波形了,周期频率那些由Psc, arr来决定

那么现在我们用示波器量一下看看到底是不是50%的占空比

实际测量,的确是的。那么下面就开始写输入捕获的代码

2.定时器 PWM 输入配置

1.1 配置GPIO

由于我们用到的是PA8,那么就配置PA8,但是这次要配置成浮空输入模式

1.2配置中断(因为我们要用到捕获和溢出处理中断)

中断通道别选错

1.3 初始化定时器

我们可以算出计数器的计数周期为 T=72M/72=1uS,1us*1000=1MS,这个是定时
器在不溢出的情况下的最大计数周期,也就是说周期小于 1ms 的 PWM 信号都可以被捕获到,转
换成频率就是能捕获到的最小的频率为 1KHZ。

1.4 初始化输入捕获功能

因为是 PWM 输入模式,只能使用通道 1 和通道 2 ,假如我们使用的是通道 1,即 TI1,输入
的 PWM 信号会被分成两路,分别是 TI1FP1 和 TI1FP2,两路都可以是触发信号。如果选择
TI1FP1 为触发信号,那么 IC1 捕获到的是 PWM 信号的周期,IC2 捕获到的是占空比,这种
输入通道 TI 和捕获通道 IC 的映射关系叫直连,输入捕获结构体的 TIM_ICSelection 要配置为
TIM_ICSelection_DirectTI。如果选择 TI1FP2 为触发信号,则 IC2 捕获到的是周期,IC1 捕获到的是占空比,这种输入通道 TI 和捕获通道 IC 的映射关系叫非直连,输入捕获结构体的 TIM_ICSelection要配置为 TIM_ICSelection_IndirectTI。有关输入通道 TI 和捕获通道 IC 的具体映射关系见图输入通道 TI 和捕获通道 IC 的映射图 ,有直连和非直连两种。

好,我们来分析上上面的一大堆术语。

Q:如果选择TI1FP1 为触发信号,那么 IC1 捕获到的是 PWM 信号的周期,IC2 捕获到的是占空比。这句话怎么理解呢?

A点:由于上面的输入捕获的配置。当捕获到 PWM 信号的第一个上升沿时,产生中断,计数器被复位,锁存到捕获寄存器 IC1 和 IC2的值都为 0。

B点:当下降沿到来时,IC2 会捕获,对应的是占空比,但是会产生中断。

C点:当捕获到第二个上升沿时,IC1 会捕获,对应的是周期,而且会再次进入中断,这个时间就可以根据 IC1 和 IC2的值计算出频率和占空比。

中断复位函数中,我们获取输入捕获寄存器 CCR1 和 CCR2 寄存器中的值,当 CCR1 的值不为 0
时,说明有效捕获到了一个周期,然后计算出频率和占空比。在计算的时候 CCR1 和 CCR2 的值
都必须要加 1,因为计数器是从 0 开始计数的。

现在我们全速跑代码看看是否一致,还是很准的

全文就是这样,非常的简单易懂

以上仅是个人学习笔记,若对你有帮助,那么最好不过,共勉!

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

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

相关文章

第19课 在Android环境中使用FFmpeg和openCV进行开发的一般步骤

在上节课,根据模板文件我们对在Android环境中使用FFmpeg和openCV进行开发有了一个初步的体验,这节课,我们来具体看一下其工作流程。 1.程序的入口 与VS2013程序开发类似,Android程序开发也有一个入口,在这个模板中&a…

Docker 部署后端项目自动化脚本

文章目录 开机自启动docker打包后端项目Dockerfile文件脚本文件使用 开机自启动docker systemctl enable docker打包后端项目 这里的项目位置是target同级目录 1.在项目下面新建一个bin目录 新建一个package.txt 写入下方代码后 后缀改为.bat echo off echo. echo [信息] 打…

WPF 导航界面悬浮两行之间的卡片 漂亮的卡片导航界面 WPF漂亮渐变颜色 WPF漂亮导航头界面 UniformGrid漂亮展现

在现代应用程序设计中,一个漂亮的WPF导航界面不仅为用户提供视觉上的享受,更对提升用户体验、增强功能可发现性和应用整体效率起到至关重要的作用。以下是对WPF漂亮导航界面重要性的详尽介绍: 首先,引人入胜的首页界面是用户与软…

C语言爬虫程序采集58商铺出租转让信息

为了找到一个好店铺好位置,往往要花费很大精力和财力过去寻找,就有有某些出租平台但是一个个查找下来也是十分麻烦,所以我利用我们的C语言基础,给大家写个商品转租的爬虫程序,让找店铺不在那么费时费力,至少…

命令行模式的rancher如何安装?

在学习kubectl操作的时候,发现rancher也有命令行模式,学习整理记录此文。 说明 rancher 命令是 Rancher 平台提供的命令行工具,用于管理 Rancher 平台及其服务。 前提 已经参照前文安装过了rancher环境了,拥有了自己的k8s集群…

基于SSM的校园二手交易管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

使用HttpSession和过滤器实现一个简单的用户登录认证的功能

这篇文章分享一下怎么通过session结合过滤器来实现控制登录访问的功能,涉及的代码非常简单,通过session保存用户登录的信息,如果没有用户登录的话,会在过滤器中处理,重定向回登录页面。 创建一个springboot项目&#…

BSP视频教程第29期:J1939协议栈CAN总线专题,源码框架,执行流程和应用实战解析,面向车通讯,充电桩,模组通信等(2024-01-08)

视频教程汇总帖:【学以致用,授人以渔】2024视频教程汇总,DSP第12期,ThreadX第9期,BSP驱动第29期,USB实战第5期,GUI实战第3期(2024-01-08) - STM32F429 - 硬汉嵌入式论坛 …

书生·浦语大模型全链路开源体系 学习笔记 第二课

基础作业: 使用 InternLM-Chat-7B 模型生成 300 字的小故事(需截图)。熟悉 hugging face 下载功能,使用 huggingface_hub python 包,下载 InternLM-20B 的 config.json 文件到本地(需截图下载过程&#xf…

Typecho 最新XC主题 去除域名授权全解密源码

Typecho 最新XC主题 去除域名授权全解密源码 这是一款多样式主题,首页支持六种主题样式,支持Pjax优化访问速度,多种单页,如友链、说说等。评论支持表情,自定义编辑器,支持其他样式功能。该主题功能性挺高&…

【数值分析】最佳平方逼近,最佳逼近

最佳平方逼近 ∑ k 0 n W k ( f ( x k ) − ϕ ( x k ) ) 2 min ⁡ \sum_{k0}^{ n}W_k (f(x_k)-\phi (x_k))^2\min k0∑n​Wk​(f(xk​)−ϕ(xk​))2min → 节点非常多时 ∫ a b ρ ( x ) ( f ( x ) − ϕ ( x ) ) 2 d x min ⁡ \xrightarrow[]{\text{节点非常多时}} \int_…

vue3 内置组件

文章目录 前言一、过渡效果相关的组件1、Transition2、TransitionGroup 二、状态缓存组件(KeepAlive)三、传送组件(Teleport )四、异步依赖处理组件(Suspense) 前言 在vue3中 其提供了5个内置组件 Transiti…

【HarmonyOS4.0】第二篇-鸿蒙开发介绍

一、鸿蒙开发介绍 1.1.为什么要学习鸿蒙? 2019年HarmonyOS正式面世,至今鸿蒙已成长了4年,截至2023年8月,鸿蒙生态设备数量超过7亿台,已有220万开发者投入到鸿蒙生态的开发。根据Counterpoint最新数据,202…

【数据库基础】Mysql与Redis的区别

看到一篇不错的关于“Mysql与Redis的区别”的文章,转过来记录下~ 文章目录 一、数据库类型二、运行机制三、什么是缓存数据库呢?四、优缺点比较五、区别总结六、数据可以全部直接用Redis储存吗?参考资料 一、数据库类型 Redis:NOS…

uni-app如何生成骨架屏

骨架屏是页面的一个空白版本,通常会在页面完全渲染之前,通过一些灰色的区块大致勾勒出轮廓,待数据加载完成后,再替换成真实的内容。 参考效果 骨架屏作用是缓解用户等待时的焦虑情绪,属于用户体验优化方案。 生成骨…

Vue、uniApp、微信小程序、Html5等实现数缓存

此文章带你实现前端缓存,利用时间戳封装一个类似于Redis可以添加过期时间的缓存工具 不仅可以实现对缓存数据设置过期时间,还可以自定义是否需要对缓存数据进行加密处理 工具介绍说明 对缓存数据进行非对称加密处理 对必要数据进行缓存,并…

docker/华为云cce 部署nacos 2.3.0 集群模式

镜像地址 https://hub.docker.com/r/nacos/nacos-server 版本 nacos/nacos-server:v2.3.0-slim 关键环境变量 使用mysql数据源 变量值备注MODEcluster启用集群模式MYSQL_SERVICE_DB_NAME数据库名MYSQL_SERVICE_USER数据库用户名MYSQL_SERVICE_PASSWORD数据库密码SPRING_D…

线扫相机品牌汇总(国外+国内)

线扫相机品牌汇总(国外+国内) 行者 ​ 热爱生活 22 人赞同了该文章 线扫相机也叫做线阵相机,和面阵相机一样,都是重要的工业相机。 线扫相机正如其名字那样,拍照时像扫描一样,相机和被拍照物体有相对匀速运动。 Perhaps the most common example of line scan imagin…

【代码随想录算法训练营-第七天】【哈希表】454,383,15,18

454. 四数相加 II 第一遍 思路 想不出来,除了暴力解法,完全想不出来其他解法,看答案思路了…学习了两个新的方法: getOrDefault:返回指定键对应的值,如果不存在,则返回默认值containsKey&…

java Servlet体育馆运营管理系统myeclipse开发mysql数据库网页mvc模式java编程计算机网页设计

一、源码特点 JSP 体育馆运营管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统采用serlvetdaobean,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。 java Servlet体育馆运营管理系…