历史上的今天
今天是:2025年01月17日(星期五)
2021年01月17日 | STM32F0xx_TIM输入捕获(计算频率)配置详细过程
2021-01-17 来源: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 访问密码
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基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 中国拥有完整知识产权的3D电视系统已经制定完成。昨日(7月21日),《每日经济新闻》从数字音视频解码技术标准工作组 (以下简称“AVS工作组”)获悉,最新版本的标准已经于六月底完成定稿,今日将 ...… 查看全部问答> |
|
想搭建一个GPRS开发平台电源部分用LM317实现可是不管怎么调都不能将电源适配器的18V电压降到4V。电阻调到极限也只能在7V和12V之间。具体硬件是这样做的:LM317 1脚接3362 103T(最大阻值位10K)中间的那个脚;3362另一两个脚一个接地一个接输出也就 ...… 查看全部问答> |
|
我的USB插上后,电脑提示无法识别的USB设备,是怎么回事啊?各位高手请指点一下。网上大概查了一下出现这种提示的原因:一是USB连接线供电不足,二是驱动软件的问题。我还没检验过。还会不会有其他的原因啦。… 查看全部问答> |
|
芯片资料没看到如何设置过滤器ID和掩码,结果弄了好久才搞清楚,原来固件库的接口还需要自己加工一下才行。 CP_VOID CanSetFilter(CAN_NUM_TypeDef byDevNo,CP_BYTE byFilterNumber,CP_DWORD dwId,CP_DWORD dwMask,CP_BYTE bIsStdId) { & ...… 查看全部问答> |
|
国外数字系统设计经典教材--Verilog嵌入式数字系统设计教程 Verilog嵌入式数字系统设计教程 本书特别强调在数字系统设计时,除了考虑逻辑设计外,还必须考虑用现实世界的工程方法来实现嵌入式系统的设计存在的许多约束条件和制约因素,诸如电路面积、电路的互连、接口的需求、功耗和速度性能等,重点讲解 ...… 查看全部问答> |
|
求助:ZigBeeCC2530传感器组网采集终端串口接收丢包 如题,我用两块开发板(一个作为协调器,一个作为终端节点)组网采集位移计信号,可是终端节点和位移计通过485进行通信时丢包严重,一直不知道问题出在哪里。现把我在协议中添加的代码附上,求大神指点,感激不尽! 终端初始化代码: void Generi ...… 查看全部问答> |




