stm32的外部时钟源模式2和外部时钟源模式1都可以用来实现计数功能,他们的区别是什么呢?

以上2种模式对应不同的管脚输入:

外部时钟源模式2 <-->TIMx_ETR

外部时钟源模式1 <-->TIMx_CHx (只能在CH1和CH2实现该功能)

从功能框图可以看到,ETR模式下多了一个分频器ETPS,搜索该分频器的寄存器,有如下解释:外部触发信号ETRP的频率必须最多是TIMxCLK频率的1/4。当输入较快的外部时钟时,可以使用预分频降低ETRP的频率

每个定时器只能对一路信号计数,但每个定时器可同时捕捉4路信号。

如果需要采样多路信号的脉宽和频率,采用捕获模式。

ETR的滤波器是通过配置TIMx_SMCR的ETF[3:0]位选择,而这4位可以选择的滤波方式如下:

0000: 无滤波,以fDTS采样
0001: 采样频率为fCK_INT, N=2.
0010: 采样频率为fCK_INT, N=4.
0011: 采样频率为fCK_INT, N=8.
0100: 采样频率为fDTS/2, N=6.
0101: 采样频率为fDTS/2, N=8.
.......
 
上面的fDTS由TIMx_CR1中的CKD配置:
00: tDTS = tCK_INT
01: tDTS = 2 × tCK_INT
10: tDTS = 4 × tCK_INT
11: 保留

假定选ETF=0101,即“采样频率为fDTS/2, N=8”;选CKD=01,即“tDTS = 2 × tCK_INT”;并假定fCK_INT=72MHz。

这时可以算出,采样频率为72MHz/2/2=18MHz,因为N=8,即在滤波器上可以滤除掉输入端上小于444.4ns的脉冲。

根据这一原理,我的理解是把滤波器放在分频的后面是为了保证通过的信号频率不超过某个限定,而不是为了滤除窄脉冲。但如果ETR上出现较高频率的窄脉冲,例如当分频因子为4时,如果ETR上出现了超过9MHz的一组窄脉冲,它就会在通过分频和滤波器后被滤除掉。,“滤波放在后面可以更多地保证得到干净的波形”,可以按照上面的分析理解

 

stm32定时器计数功能的更多相关文章

  1. STM32学习笔记(五)——通用定时器计数延时

    STM32定时器概述 STM32F40x系列总共最多有14个定时器,定时器分为三类:基本定时器.通用定时器和高级定时器.它们的都是通过计数来达到定时的目的,和51的定时器差不多,基本原理都是一样的,就 ...

  2. STM32 定时器用于外部脉冲计数

    STM32 定时器用于外部脉冲计数 第一步,设置GPIO GPIO_InitTypeDef GPIO_InitStructure; /* PA0,PA12-> 左右脉冲输入 */GPIO_Ini ...

  3. STM32 定时器用于外部脉冲计数(转)

    源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的). STM32中的定时器有很多用法: ( ...

  4. STM32定时器时间的计算方法

    本文出自:https://wenku.baidu.com/view/e3bdfb7601f69e31433294c4.htmlSTM32定时器时间的计算方法STM32中的定时器有很多用法:(一)系统时 ...

  5. STM32定时器级联 -- AN2592

    Master configuration When a timer is selected as a master timer, the corresponding trigger output si ...

  6. stm32 定时器初步

    今天学习STM32 的通用定时器:TIMx (TIM2.TIM3.TIM4 和 TIM5). 定时器比较复杂,功能繁多,这里我们就说最基本的计数功能. 1.定时器的时钟从哪里来? 定时器的时钟来源有 ...

  7. stm32定时器学习二——PWM设置

    /* STM32 嵌入式学习入门(5)——PWM的实现 上一篇博文介绍了定时器和PWM的基本的原理,本篇博文从代码层面来介绍PWM的具体实现.同样,还是以博主所用的开发板——正点原子开发板STM32F ...

  8. 用STM32定时器测量信号频率——测频法和测周法[原创cnblogs.com/helesheng]

    工业测试与控制系统中,经常需要对未知信号的频率进行测试.对于10MHz以下的信号,用单片机(MCU)定时器完成这项任务显然是最常见和最佳的选择.目前性价比最高的单片机STM32拥有功能强大且数量众多的 ...

  9. STM32定时器学习---基本定时器

    STM32F1系列的产品,除了互联网产品外,工作8个,3种定时器,其中一种就是基本定时器.那么STM32单片机的基本定时器如何操作以及编程呢? 下面我们就来详细的了解一下 STM32F1系列的产品,除 ...

随机推荐

  1. SafeVarargs的用法

    转载自:http://softlab.sdut.edu.cn/blog/subaochen/2017/04/safevarargs%E7%9A%84%E7%94%A8%E6%B3%95/ @SafeV ...

  2. 代码格式化工具 AStyle

    Astyle是一个用来对C/C++代码进行格式化的工具,在windows或者linux都有对应的版本,下面介绍几个本人比较常用的参数 --style=linux  个人比较喜欢linux风格,即函数的 ...

  3. jenkins报错解决

    https://www.cnblogs.com/yangxia-test/p/4368778.html https://blog.csdn.net/xlyrh/article/details/5138 ...

  4. QQ群关系数据库处理

    1.附加数据库 EXEC sp_attach_single_file_db @dbname= 'GroupData1_Data' , @physname= '/media/disk4/share/Da ...

  5. How to remove duplicate lines in a large text file?

    How would you remove duplicate lines from a file that is  much too large to fit in memory? The dupli ...

  6. GB、GBDT、XGboost理解

    GBDT和xgboost在竞赛和工业界使用都非常频繁,能有效的应用到分类.回归.排序问题,虽然使用起来不难,但是要能完整的理解还是有一点麻烦的.本文尝试一步一步梳理GB.GBDT.xgboost,它们 ...

  7. MySQL数据操作语句精解

    用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句. 言外之意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INS ...

  8. .NET Core WebApi中返回 json 数据首字母大小写问题

    public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddJsonOptions(opt =& ...

  9. UEFI+GPT下安装Win10和Ubuntu16.04双系统相关问题(引导、无线连不上网)

    1.安装双系统 1)先制作U盘启动,制作过程不再赘述 2)进入bios,设置从U盘启动 3)如下图,选择第二项为安装Ubuntu 4)前几不没什么问题,就直接往下走,选择语言,往下拉有中文选项 5)下 ...

  10. python基础知识(集合)

    集合 可变集合set()/不可变集合frozenset() {}  大写的拉丁字母 用于保存不重复元素.无序不能通过索引来获取 集合的创建 空集合 使用set()函数 变量名 = set() 集合的添 ...