0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-07 10:57 次阅读

前言

关于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基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Tim
    Tim
    +关注

    关注

    0

    文章

    76

    浏览量

    17710
  • 信号捕获
    +关注

    关注

    0

    文章

    6

    浏览量

    8632
  • STM32F0
    +关注

    关注

    0

    文章

    61

    浏览量

    16997
收藏 人收藏

    评论

    相关推荐

    STM32F0系列TIM1内部刹车源,LOCKUP如何应用?

    STM32F0系列 TIM1 内部刹车源有5种,求大佬们解答下: 1、请问LOCKUP 如何应用?我制造错误进入hardfault后,并没有刹住。 2、F0全系列都有LOCKUP刹车源吗?其他几种
    发表于 04-03 07:21

    STM32F103的TIM14输入捕获极性CC1P可设置为双沿吗?

    STM32F103手册中介绍,TIM14输入捕获极性CC1P(bit1-2)可设置为11,为双沿捕获,但是手册又描述了bit2为保留,哪些芯
    发表于 04-03 06:50

    使用STM32H743做外部方波的频率计算,为什么会产生误差?

    我在使用STM32H743做外部方波的频率计算。外部高速晶振25M,SYSCLK=400MHz, 使用了两种方法都有误差。 方法一,TIM5,200Mhz没有分频,捕获两次上升沿时间,
    发表于 04-01 07:04

    STM32F4定时器TIM22设置为编码器模式时,PA0正常捕获,PA1无反应怎么解决?

    我需要TIM2的32位定时器作为我的外部编码器的脉冲捕获,PA0正常,但PA1不捕获脉冲!软件配置正常,因为我同样
    发表于 04-01 06:26

    STM32G030C8T6 TIM16 CH1输入捕获值怎么是递增的呢?

    _CLOCKDIVISION_DIV1; TIM_InitStruct.RepetitionCounter= 0; LL_TIM_Init(TIM16,
    发表于 03-29 07:24

    在利用“通用定时器”捕获PWM信号的过程中,中断服务函数是设置为如下的哪一种模式呢?

    ); IC2Value = TIM_GetCapture2(GENERAL_TIM); // 注意:捕获寄存器CCR1和CCR2的值在计算占空比和
    发表于 03-22 07:55

    在使用一个定时器捕获两路PWM的频率时,中断函数应该如何配置呢?

    上升沿中断,计数器会被复位,锁存到CCR1寄存器的值是0,CCR2寄存器的值也是0 * 无法计算频率和占空比。当第二次上升沿到来的时候,CCR1和CCR2
    发表于 03-22 06:39

    STM32F103VE搭建的PWM输入捕获功能,移植到STM32F103VD无法捕获的原因?

    利用STM32F103VE芯片搭建的PWM输入捕获功能,移植到STM32F103VD的时候,无法捕获。主要存在的问题:进入不了中断服务函数(
    发表于 03-20 08:21

    STM32F723ZET6定时器输入捕获通道的GPIO不能上拉的原因?

    我在使用STM32F723ZET6的TIM捕获外部的信号上升沿,发现外部的信号经过电路元件后到达捕获通道引脚后,幅值变得很小,不能被STM32
    发表于 03-07 07:28

    AT32F4xx定时器输入捕获模式

    AT32F4xx定时器输入捕获模式展示如何使用AT32F4xx系列的定时器输入捕获功能。
    发表于 10-27 08:25

    利用TIM5_CH1来做输入捕获

    本实验利用TIM5_CH1来做输入捕获,我们将捕获PA0上的高电平脉宽,并将脉宽时间通过串口打印出来,可以通过按WK_UP按键,模拟
    发表于 10-07 08:45

    stm32f103最高能捕获多高的频率

    stm32f103最高能捕获多高的频率
    发表于 09-21 06:35

    STM32F0 CRC计算单元介绍

    继续,而不在应用程序中重新启动( 优先级更高的中断、多次CRC计算等)  每次 应用CRC重置,默认值为0xFFFF_FFFF以保持 与STM32F1xx系列的兼容性
    发表于 09-12 08:07

    STM32 TIM—基本定时器

    STM32F4xx系列控制器有共有14个TIM定时器。其中2个高级控制定时器TIM1和TIM8、10 个通用定时器TIM2TIM5和
    的头像 发表于 07-22 17:05 3335次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>TIM</b>—基本定时器

    STM32定时器(三)输入捕获

    STM32的定时器是支持信号输入捕获的,何为输入捕获?主要做什么应用?
    的头像 发表于 07-21 14:58 2715次阅读
    <b class='flag-5'>STM32</b>定时器(三)<b class='flag-5'>输入</b><b class='flag-5'>捕获</b>