STM32F0xx_TIM输入捕获(计算频率) 配置详细过程

发布者:SereneWanderer最新更新时间:2021-03-04 来源: eefocus关键字:输入捕获  计算频率 手机看文章 扫描二维码
随时随地手机看文章

关于STM32的定时器,可谓是功能强大,估计没有多少人研究完STM32定时器的所有功能(包括我也没有),只是使用常用的一些功能,后续我会推出关于STM32定时器的更多功能。


STM32芯片多数为16位计数,但基本上都有1个或两个32位的定时器,可惜的是我们最常使用的F1系列芯片中没有32位的定时器,F030中也没有,具体请看数据手册。


今天主要总结关于STM32F0系列输入捕获,捕获信号频率,即所谓逻辑分析仪检测数字频率的功能。


今天使用32位的TIM2作为捕获的定时器,为什么是32位,原因很简单,就是为了捕获(采集)更宽频率的波形,今天提供的工程可以采集0Hz - 10MHz的波形(建议2MHz一下,串口打印需要时间)。而16位就不行,提醒使用F1的朋友要注意这一点。官方提供的例程也是16位,检测的范围同样有限。


下载


ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。


今天的软件工程下载地址(360云盘):


https://yunpan.cn/cSztEbetLczKY访问密码 06d0


STM32F0xx的资料可以在我360云盘下载:


https://yunpan.cn/cS2PVuHn6X2Bj访问密码 8c37


今天工程测试效果(视频):


https://yunpan.cn/cSziVGGZbMagj访问密码 5731


准备工作


今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。今天将源代码添加在timer.c文件里面,就不需要新建文件了。


捕获原理


看系统框图,今天使用分频的方式来采集波形,官方提供的例程是没有配置TimeBase参数,也没有分频,分频的好处在于不是非常实时的获取波形,这样有利于提供精度(可以说是计算平均值)。捕获外部8个脉冲,前后读取一下计数的值,这个值就是外部脉冲的差值,从而计算出频率。



配置过程详情


①RCC时钟


该函数位于bsp.c文件下面;


我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于忘记配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。


注意:


外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);这样能编译过,但是错误的】


我每次都提醒RCC时钟,是因为很多人就是因为时钟而导致软件运行有问题,所以,提醒更多人要注意配置RCC.


②捕获引脚配置


该函数位于timer.c文件下面;


重点注意:


引脚配置要和对应通道匹配才行(请看数据手册中的引脚说明)。


复用功能同样也是需要配置。


③TIM捕获配置



该函数位于timer.c文件下面;


这里的分频值配置为一样,方便计算。


④捕获频率的计算


该函数位于stm32f0xx_it.c文件下面;


这个函数就是捕获中断函数,采集8个脉冲的前后中断一次,即读取一下计数值,通过计数值的差就可以算出频率了。


说明


STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片(具体请看手册、或者亲自测试)。


今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。


关键字:输入捕获  计算频率 引用地址:STM32F0xx_TIM输入捕获(计算频率) 配置详细过程

上一篇:XPT2046触摸屏实验过程详解与STM32代码解析
下一篇:一种基于STM32的便携式人机界面系统的设计

推荐阅读最新更新时间:2024-11-09 21:07

利用STM8的PWM输入捕获测红外码程序
实例说明: 1、本实例是利用STM8单片机定时器TIM1的PWM输入捕获模式测量红外遥控码。 2、红外遥控码格式为NEC红外编码。 3、红外接收信号输入接PC1(TIM1输入通道1)。 4、采用外部晶振16M。 5、采用IAR FOR STM8开发环境。 6、程序代码如下: //-------------------------------------------------------------------- #include iostm8s105s4.h #define uchar unsigned char #define uint unsigned int uchar IrRecSte
[单片机]
STM32输入捕获(一)
今天,就参照芯片的数据手册,来编写程序,实现输入捕获功能,首先看一下输入捕获的实现原理:(这里只拿通道1为例,其他通道与之类似) 首先来看这张图 (图中的U代表更新事件,UI表示可以产生更新条件) 蓝色框出的部分就是一条完整的输入捕获通道,红色画出的就是信号采集后的路径,而这只是一个粗略的路径,我们来看下一幅图: (蓝色方框标注的是相应的控制位) 从上图可以很清晰的看出输入信号的流程:输入部分对相应的TI1输入信号采样(f_DTS是指采样频率),并产生一个滤波后的信号TI1F。然后,一个带极性选择的边缘检测器产生一个信号(TI1FP1),它可以作为从模式控制器的输入触发或者作为捕获控制。该信号通过预分频进入捕获
[单片机]
STM32<font color='red'>输入</font><font color='red'>捕获</font>(一)
STM32的通用定时器
STM32F1 的定时器非常多,由 2 个基本定时器(TIM6、TIM7)、4 个通用定时器(TIM2-TIM5)和 2 个高级定时器(TIM1、TIM8)组成。 1、定时器有哪些,以及对应有什么功能 (1)基本定时器: 功能最为简单,类似于 51 单片机内定时器。 (2)通用定时器: 是在基本定时器的基础上扩展而来,增加了输入捕获(可以测量输入信号的脉宽)与输出比较(产生输出波形)等功能。 (3)高级定时器: 是在通用定时器基础上扩展而来,增加了可编程死区互补输出、重复计数器、带刹车(断路)功能,这些功能主要针对工业电机控制方面。 2、通用定时器配置 #include stm32f10x.h
[单片机]
使用STM32CubeMx配置STM32输入捕获功能
输入捕获原理 在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中。当发生捕获事件时,相应的CCxIF标志(TIMx_SR寄存器)被置1,如果开放了中断或者DMA操作,则将产生中断或者DMA请求。如果发生捕获事件时CCxIF标志已经为高,那么重复捕获标志CCxOF(TIMx_SR寄存器)被置1。写CCxIF=0可清除CCxIF,或读取存储在TIMx_CCRx寄存器中的捕获数据也可清除CCxIF。写CCxOF=0可清除CCxOF。 摘自《STM32参考手册中文》 简单解释:定时器一直在计数,如果检测到设置的极性边沿,会把当前的计数值存下来,并触发中断; 比如,
[单片机]
使用STM32CubeMx配置STM32<font color='red'>输入</font><font color='red'>捕获</font>功能
【STM32模块化程序】定时器输入捕获实现超声波测距
一、输入捕获介绍 输入捕获模式可以用来测量脉冲宽度或者测量频率。 除了基本定时器,通用和高级均有输入捕获功能。 TIMx_CCMR1(捕获/比较模式寄存器) - 通道1和2的控制 TIMx_CCMR2(捕获/比较模式寄存器) - 通道3和4的控制 以下将分别使用通用定时器和高级定时器实现超声波测距。需要说明的是,代码中的TIM×CH×_CAPTURE_STA我们定义其低八位含义如下: 二、通用/高级定时器实现超声波测距 通用定时器输入捕获以TIM3的CH3为例,对应IO为PB1。PB0实现触发功能 当然还需要配合printf一起使用, 参考这里 完整工程可见github 传送门 timer.c #i
[单片机]
【STM32模块化程序】定时器<font color='red'>输入</font><font color='red'>捕获</font>实现超声波测距
STM32F103C8T6使用外部中断法和输入捕获法进行编码器测速
01 前言 如果我们想对 电机 进行速度或者转角的精确控制,需要使用到很多 算法 ,比如非常经典的 PI D控制算法,或者一些只能算法,但这些算法都需要 传感器 来提供转速或转角的反馈值,对于电机来说, 编码器 是非常流行并且实用的电机配套传感器,本文使用 STM32 F103C8T6+L298N+MG513P30电机进行直流电机的编码器测速。 02 编码器原理 1.分类 光电 式编码器的精准度比霍尔式要高,但是由于它需要 红外 线发生器和 接收器 ,相对来说造价要贵一些。现在我们比较常用的是霍尔式增量编码器,有很多电机都会自带编码器。 2.测速方法分类 (1)M法测速 编码器输出的脉冲个数代表了位置,那么单位时间里的
[单片机]
STM32F103C8T6使用外部中断法和<font color='red'>输入</font><font color='red'>捕获</font>法进行编码器测速
STM32PWM频率计算
PWM计算 PWM频率 = 定时器频率/(分频系数 x 自动重装载值) PWM占空比 = CCRx / 自动重装载值。 period = CLOCK/Freq -1; pulse = (period+1)*Dutycycle / 100; 注意:如果需要高精度,可以使用32位定时器
[单片机]
lc振荡电路频率怎么计算_lc振荡电路频率计算计算公式)
LC振荡电路,是指用电感L、电容C组成选频网络的振荡电路,用于产生高频正弦波信号,常见的LC正弦波振荡电路有变压器反馈式LC振荡电路、电感三点式LC振荡电路和电容三点式LC振荡电路。LC振荡电路的辐射功率是和振荡频率的四次方成正比的,要让LC振荡电路向外辐射足够强的电磁波,必须提高振荡频率,并且使电路具有开放的形式。 LC振荡电路运用了电容跟电感的储能特性,让电磁两种能量交替转化,也就是说电能跟磁能都会有一个最大最小值,也就有了振荡。不过这只是理想情况,实际上所有电子元件都会有损耗,能量在电容跟电感之间互相转化的过程中要么被损耗,要么泄漏出外部,能量会不断减小,所以实际上的LC振荡电路都需要一个放大元件,要么是三极管,要么是集
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved