stm32定时器计数功能

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

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

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

外部时钟源模式1 <-->TIMx_CHx

从功能框图可以看到,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的一组窄脉冲,它就会在通过分频和滤波器后被滤除掉。,“滤波放在后面可以更多地保证得到干净的波形”,可以按照上面的分析理解

时间: 2024-08-01 13:52:27

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

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

STM32定时器概述 STM32F40x系列总共最多有14个定时器,定时器分为三类:基本定时器.通用定时器和高级定时器.它们的都是通过计数来达到定时的目的,和51的定时器差不多,基本原理都是一样的,就是功能多了一些,这些计数器都是自动重新装载初值的,使用起来非常方便,而且计数时钟频率可以通过分频系数来设置.本文章将介绍使用定时器中断来控制LED间隔1s闪烁. 计数的时钟来源主要有四个: 内部时钟CK_INT 外部时钟模式1:外部输入脚TIx 外部时钟模式2:外部触发输入ETR,仅适用于 TIM2

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

源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的). STM32中的定时器有很多用法: (一)系统时钟(SysTick) 设置非常简单,以下是产生1ms中断的设置,和产生10ms延时的函数: void RCC_Configuration(void) { RCC_ClocksTypeDef RCC_ClockFreq; SystemInit();//源自system_stm32f10x.c

第八章:STM32定时器

时间:2014年8月15日 一.定时器种类:      1.四个可同步运行的通用定时器(TIM2~TIM5),每个均有一个16位的自动加载递增/递减计数器.一个16位预分频器和4个独立的通道.       2.两个16位高级控制定时器(TIM1和TIM8)         特点:由一个可编程预分频器驱动的16为自动装载 计数器组成,与通用定时器有共同处,但功能更强大.       3.两个基本定时器(TIM6和TIM7)        特点:主要用于产生DAC触发信号,也可以当作通用的16为时基

[原创] STM32 定时器TIMx 编码器应用 函数 TIM_EncoderInterfaceConfig 分析

今天把STM32 定时器输入作为 编码器接口相关的 函数   TIM_EncoderInterfaceConfig ,好好分析了一遍 因为网上不少人对这个函数有问题 1 void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode, 2 uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity) 3 { 4 uint16_t tmpsmcr = 0; 5 uint

jQuery实现的输入文本计数功能代码

jQuery实现的输入文本计数功能代码:在一些比较人性化的留言回复功能中,都有这样的设计,那就是当输入文本的时候,能够实现计数功能,可以提示用户还能能够输入多少文字,这样可以便于用户选择更合适的语言描述,下面就是一段能够实现此功能的代码,需要的朋友可以进行一下借鉴.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author&q

Atitit.aticmd&#160;v4&#160;&#160;新特性q39&#160;添加定时器释放功能

Atitit.aticmd v4  新特性q39 添加定时器释放功能 V1  实现兰cmd V2 标准输入,标准输出,标准错误与重新定向 V3  stdout stderr统一重新定向 V4  添加定时器释放功能 V5   兼容性的.net java php V6   bigfile output的solu  ,arg sh all total ret... 作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:

相似group by的分组计数功能

之前同事发过一个语句,实现的功能比較简单,相似group by的分组计数功能,由于where条件有like,又无法用group by来实现. SELECT a.N0,b.N1,c.N2,d.N3,e.N4,f.N5,g.N6,h.N7,i.N8,j.N9 from (select count(*) N0 from tbl_loginfo_20141110 where keyrecord like '0%' or keyrecord like 'GJ_0%') a, (select count(*

STM32定时器的预装载寄存器与影子寄存器之间的关系【转】

首先转载:   STM32定时器的预装载寄存器与影子寄存器之间的关系 本文的说明依据STM32参考手册(RM0008)第10版:英文:http://www.st.com/stonline/products/literature/rm/13902.pdf中译文:http://www.stmicroelectronics.com.cn/stonline/mcu/images/STM32_RM_CH_V10_1.pdf 在STM32参考手册的第13.14章中,都有一张定时器的框图,下面是第14章中定时

类似group by的分组计数功能

之前同事发过一个语句,实现的功能比较简单,类似group by的分组计数功能,因为where条件有like,又无法用group by来实现. SELECT a.N0,b.N1,c.N2,d.N3,e.N4,f.N5,g.N6,h.N7,i.N8,j.N9 from (select count(*) N0 from tbl_loginfo_20141110 where keyrecord like '0%' or keyrecord like 'GJ_0%') a, (select count(*