stm32f407通用定时器输入捕获
stm32f407 输入捕获两路方波

stm32f407 输入捕获两路方波,测下降沿时间间隔2017年08月07日18:49:23 muyepiao1阅读数:1303 标签:stm32f407输入捕获记录调试过程:实现方法:用TIM3,TIM4设置为输入捕获(下降沿触发),使能捕获中断,更新事件中断。
有时候两个下降沿间隔时间太久,超过溢出值,所以要开更新中断。
更新中断手册上有讲:“●发生如下事件时生成中断/DMA 请求:—更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)—触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)—输入捕获—输出比较”·(计数器溢出,UDIS =0 ) --- (生成更新事件)--- 生成(更新中断或者DMA 请求)( URS =0 )·计数器溢出,生成更新事件,(UDIS =1,禁止更新事件,所以此处还需UDIS =0)·URS用来设置跟新请求源,就是用来选择哪些行为可以生成更新中断。
此处URS=0;·开始看手册时,不理解更新事件,其实不懂的时候,应该多看几遍手册,以下为手册原话:发生更新事件时,将更新所有寄存器且将更新标志(TIMx_SR寄存器中的UIF位)置1(取决于URS位):●预分频器的缓冲区中将重新装载预装载值(TIMx_PSC寄存器的内容)●自动重载影子寄存器将以预装载值进行更新·影子寄存器存在的意义在于同步。
具体可以百度。
在上是初始化设置要注意的地方。
捕获的过程描述,手册有讲,以下为来自手册:在输入捕获模式下,当相应的ICx 信号检测到跳变沿后,将使用捕获/比较寄存器(TIMx_CCRx) 来锁存计数器的值。
发生捕获事件时,会将相应的CCXIF 标志(TIMx_SR 寄存器)置1,并可发送中断或DMA 请求(如果已使能)。
如果发生捕获事件时CCxIF 标志已处于高位,则会将重复捕获标志CCxOF(TIMx_SR 寄存器)置1。
STM32(十八)输入捕获应用

STM32(⼗⼋)输⼊捕获应⽤
输⼊捕获⼀般应⽤在两个⽅⾯:
脉冲跳变沿时间测量
PWM输⼊测量
1、测量频率
当捕获通道TIx.上出现上升沿时,发⽣第⼀次捕获,计数器CNT的值会被锁存到捕获寄存器CCR中,⽽且还会进⼊捕获中断,在中断服务程序中记录⼀-次捕获(可以⽤⼀个标志变量来记录),并把捕获寄存器中的值读取到valuel 中。
当出现第⼆次上升沿时,发⽣第⼆次捕获,计数器CNT的值会再次被锁存到捕获寄存器CCR中,并再次进⼊捕获中断,在捕获中断中,把捕获寄存器的值读取到value3中,并清除捕获记录标志。
利⽤value3和valuel的差值我们就可以算出信号的周期(频率)。
2、测量脉宽
当捕获通道TIx.上出现上升沿时,发⽣第⼀次捕获,计数器CNT的值会被锁存到捕获寄存器CCR中,⽽且还会进⼊捕获中断,在中断服务程序中记录⼀次捕获(可以⽤⼀个标志变量来记录),并把捕获寄存器中的值读取到valuel 中。
然后把捕获边沿改变为下降沿捕获,⽬的是捕获后⾯的下降沿。
当下降沿到来的时候,发⽣第⼆次捕获,计数器CNT的值会再次被锁存到捕获寄存器CCR中,并再次进⼊捕获中断,在捕获中断中,把捕获寄存器的值读取到value3 中,并清除捕获记录标志。
然后把捕获边沿设置为上升沿捕获。
在测量脉宽过程中需要来回的切换捕获边沿的极性,如果测量的脉宽时间⽐较长,定时器就会发⽣溢出,溢出的时候会产⽣更新中断,我们可以在中断⾥⾯对溢出进⾏记录处理。
STM32输入捕获模式

STM32输入捕获模式
在输入捕获模式下,定时器将统计外部信号的上升沿或下降沿出现的
时间,并将统计结果保存在相关的寄存器中。
用户可以根据需要选择统计
上升沿还是下降沿,并可以选择计数溢出时是否复位计数器。
1.选择定时器和通道:根据实际需求选择合适的定时器和通道。
一般
来说,每个定时器都有多个通道可以配置为输入捕获模式。
2.配置定时器:根据测量的要求配置定时器的工作模式、计数方向和
预分频系数等。
定时器的配置将影响捕获的精度和测量范围。
3.配置输入捕获:选择捕获触发源,可以选择外部信号引脚或其他定
时器的输出作为触发源。
配置捕获触发源时还可以选择捕获的边沿类型
(上升沿或下降沿)和是否复位计数器。
4.开启定时器:配置完成后,通过使能相关的定时器和通道将输入捕
获模式启用。
5.捕获外部信号:当捕获触发源产生触发信号时,定时器将开始计数,当捕获到外部信号的边沿时,定时器会自动将计数值保存在指定的寄存器中。
6.读取测量结果:根据所选择的定时器和通道,从相关的寄存器中读
取测量结果,可以通过计算得到所需的参数,比如周期、脉宽等。
输入捕获模式在很多应用中都是非常常见且重要的。
例如在测量旋转
编码器的位置和速度时,可以使用输入捕获模式来捕获编码器的A相和B
相信号,并通过计算来确定位置和速度。
此外,输入捕获模式还可以用于
测量外部信号的频率、测量脉冲信号的宽度等。
总之,STM32输入捕获模式是一种功能强大且灵活的功能,能够帮助用户实现对外部信号的精确测量和控制。
通过合理配置和使用,可以满足各种不同的应用需求。
STM32F407VG(五)定时器

STM32F407VG(五)定时器⼀、定时器节本分类和主要特点1.STM32定时器分类:1)看门狗定时器2)SysTick定时器3)RTC定时器4)通⽤定时器a)通⽤定时器TIM2~TIM5,当中TIM2和TIM5是32位,TIM3和TIM4是16位具有四个独⽴通道中断/DMA事件⽀持增量编码器和霍尔传感器b)通⽤定时器TIM9~TIM14,16位定时器最多具有连个独⽴通道中断事件5)基本定时器TIM6,TIM7,16位定时器同步电路触发DAC中断/DMA事件6)⾼级定时器TIM1。
TIM8,16位定时器具有四个独⽴通道中断/DMA事件⽀持增量编码器和霍尔传感器输⼊信号能够改变计数器状态或复位可改变定期器寄存器的反复计数器。
⼆、实例1. 定时中断1.时钟初始化TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);TIM_DeInit(TIM2);/* 时钟预分频数 */ //84000000/84=1000000,预分频后时钟为1MTIM_TimeBaseStructure.TIM_Prescaler= (84 - 1);/* ⾃⼰主动重装载寄存器周期的值(计数值) */ /* 累计 TIM_Period个频率后产⽣⼀个更新或者中断 */TIM_TimeBaseStructure.TIM_Period =1000-1 ;/* 採样分频 */TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;/* 向上计数模式 */TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//调⽤初始化函数TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/* 清除溢出中断标志 */TIM_ClearFlag(TIM2, TIM_FLAG_Update);/*设置产⽣TIM_FLAG_Update中断*/TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);/* 开启时钟 */TIM_Cmd(TIM2, ENABLE);2. 设置中断向量。
STM32:F103F407定时器主从模式输出精准脉冲个数

STM32:F103F407定时器主从模式输出精准脉冲个数项目中需要对步进电机进行较为精准的控制。
经过查找资料,可以通过对STM32的定时器采用主从定时器的模式。
由主定时器输出方波信号,从定时器对主定时器输出的脉冲进行计数,溢出时触发从定时器的中断服务函数。
以此达到控制步进电机转动的圈数的目的。
本文所采用的STM32开发板是正点原子的STM32F103(精英板)、STM32F407(探索者),参考资料多来自正点原子资料下载中心(/docs/index.html)。
我依然处于刚入门学习STM32的阶段,程序是在正点原子的例程的基础上修改的。
原理/思路•步进电机:步进电机需要通过步进驱动器进行驱动,STM32通过串口输出一定频率的PWM波信号给步进电机驱动器的脉冲输入引脚(如PU-),输出高低电平给步进电机驱动器的方向控制信号输入引脚(如DR-)。
•脉冲数与圈数:我使用的是一般的两相四线步进电机,步距角为1.8°。
由此可知,360°/1.8°=200;也就是说,在不细分的情况下,200个脉冲使步进电机转动一圈。
如果设置PWM波输出频率为 1kHz,也就使一秒内输出1000个脉冲,相当于步进电机一秒内可以转动5圈。
•主从定时器:主定时器输出PWM波脉冲信号,从定时器对主定时器输出的脉冲进行计数。
对于STM32,除了基本定时器,高级定时器和通用定时器都可以分别作为主、从定时器,但其中的主从关系要遵循参考手册中所提供的配置。
下图,表74,表78,来自《STM32中文参考手册》P237,P285;适用于STM32F103。
下图,表72,表79,来自《STM32F4xx中文参考手册》P370,P464;适用于STM32F407。
•注意:由上表可知,对于STM32F103,最多三组主从定时器;对于STM32F407,最多四组主从定时器。
TS值 - ITRx 不能重复使用,定时器也不可重复使用。
(完整版)STM32F407运用总结

STM32运用总结主要分为IO口,定时器的PWM和QEI,中断,ADC,DAC和DMA介绍。
在STM32的运用中第一步一般是使能相应模块的时钟,然后配置IO口,最后配置相应的寄存器。
1.IO口STM32的IO口非常多,而且与其它外设模块通常是复用的。
在不同的外设中IO口的设置是不一样的。
这一部分介绍普通的数值IO口。
IO口有A-G共7组,每组16口。
1.IO口在时钟总线AHB1上,使能对应端口的时钟。
在寄存器RCC->AHB1ENR中。
2.配置IO口的模式,普通的IO口配置为普通的输入输出模式。
配置IO口是悬空还是上拉或者下拉。
以上两步分别在寄存器GPIOx->MODER和GPIOx-> PUPDR(x=A,B,C,D,E,F,G)3.其中配置为输出模式时还要设置速度和相应的输出方式,开漏或者推挽,以上两步分别在寄存器GPIOx-> OSPEEDR和GPIOx->OTYPER(x=A,B,C,D,E,F,G)。
4.设置IO口的高低电平。
在寄存器GPIOx->BSRRH中置相应的位为1就是将相应的位置0,在寄存器GPIOx->BSRRL中置相应的位为1就是将相应的位置1.另外还可以设置GPIOx_ODR寄存器来设置输出电平以及读取GPIOx_IDR寄存器来获取输入电平。
2.PWMSTM32的定时器也非常之多,用到的主要是两个部分:用定时器产生PWM和定时触发ADC,这里一部分介绍PWM。
(高级定时器的配置和这差不多,由于在STM32F103里面已经尝试过在STM32F407里面就没有再写)1.配置IO口。
我们说过STM32的外设模块主要是和IO口复用的,因此在使用外设模块时首先配置好相应的IO口。
比如使用A口的PA1作为定时器Timer2的PWM输出。
则应按照如下的步骤来配置PA1。
1)使能A口的时钟。
在寄存器RCC->AHB1ENR中。
2)配置PA1为复用功能。
STM32F407通用定时器输入捕获

通用定时器输入捕获通用定时器作为输入捕获的使用。
我们用TIM5的通道1(PA0)来做输入捕获,捕获PA0上高电平的脉宽(用KEY_UP按键输入高电平),通过串口来打印高电平脉宽时间。
输入捕获模式可以用来测量脉冲宽度或者测量频率。
我们以测量脉宽为例,用一个简图来说明输入捕获的原理:如图所示,就是输入捕获测量高电平脉宽的原理,假定定时器工作在向上计数模式,图中t1~t2时间,就是我们需要测量的高电平时间。
测量方法如下:首先设置定时器通道x为上升沿捕获,这样,t1时刻,就会捕获到当前的CNT值,然后立即清零CNT,并设置通道x为下降沿捕获,这样到t2时刻,又会发生捕获事件,得到此时的CNT值,记为CCRx2。
这样,根据定时器的计数频率,我们就可以算出t1~t2的时间,从而得到高电平脉宽。
在t1~t2之间,可能产生N次定时器溢出,这就要求我们对定时器溢出,做处理,防止高电平太长,导致数据不准确。
如图所示,t1~t2之间,CNT计数的次数等于:N*ARR+CCRx2,有了这个计数次数,再乘以CNT的计数周期,即可得到t2-t1的时间长度,即高电平持续时间。
STM32F4的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能。
STM32F4的输入捕获,简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。
同时还可以配置捕获时是否触发中断/DMA等。
这里我们用TIM5_CH1来捕获高电平脉宽。
=================================================================================== 捕获/比较通道(例如:通道 1 输入阶段)=================================================================================== 接下来介绍我们需要用到的一些寄存器配置,需要用到的寄存器:TIMx_ARR、TIMx_PSC、TIMx_CCMR1、TIMx_CCER、TIMx_DIER、TIMx_CR1、TIMx_CCR1 (这里的x=5)。
STM32Cube学习之八:输入捕获

STM32Cube学习之八:输入捕获假设已经安装好STM32CubeMX和STM32CubeF4支持包。
Step1.打开STM32CubeMX,点击“New Project”,选择芯片型号,STM32F407ZETx。
Step2. 在Pinout界面下配置晶振输入引脚。
配置TIM2使用内部时钟源,CH1作为输入捕获通道,默认映射到PA0引脚。
配置TIM3使用内部时钟,CH1~CH4为PWM输出通道,默认映射引脚分别为PA6,PA7,PB0,PB1。
配置TIM4使用内部时钟,CH1,CH2为PWM输出通道,映射引脚分别为PD12,PD13。
配置串口,作为信息输出接口。
Step3.在Clock Configuration界面配置时钟源。
使用外部8M晶振作PLL时钟输入,并使用PLL输出作为系统时钟。
为了后面的计算方便,将系统时钟配置成160MHz。
Step4.配置外设参数。
在configuration界面中点击TIM2/ TIM3/ TIM4按钮,可以进入参数配置界面。
TIM2:在Parameter Settings页配置预分频系数为7,其计数时钟就是80MHz/(7+1)=10MHz。
计数周期(自动加载值),转换为十六进制形式,输入32bit最大值0xFFFFFFFF。
注意,TIM2的自动加载寄存器ARR和各个通道的捕获/比较寄存器CCRx都是32bit的。
在NVIC页面使能捕获/比较中断。
在GPIO页面设置捕获输入引脚下拉电阻,设置成上拉也可以,主要是为了使在没有信号输入时在输入引脚上得到稳定的电平。
TIM3:在Parameter页配置预分频系数为7,计数周期(自动加载值)为9999。
其溢出频率就是80MHz/(7+1)/(9999+1)=1kHz,这就是TIM3各通道输出的PWM信号的频率。
各通道输出PWM的占空比参数如上图红框标注,其他参数使用默认值。
按照图中参数,CH1~CH4输出的PWM周期都是1ms,而高电平时间分别是123.4us,234.5us,567.8us,678.9us。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通用定时器输入捕获通用定时器作为输入捕获的使用。
我们用TIM5的通道1(PA0)来做输入捕获,捕获PA0上高电平的脉宽(用KEY_UP按键输入高电平),通过串口来打印高电平脉宽时间。
输入捕获模式可以用来测量脉冲宽度或者测量频率。
我们以测量脉宽为例,用一个简图来说明输入捕获的原理:如图所示,就是输入捕获测量高电平脉宽的原理,假定定时器工作在向上计数模式,图中t1~t2时间,就是我们需要测量的高电平时间。
测量方法如下:首先设置定时器通道x为上升沿捕获,这样,t1时刻,就会捕获到当前的CNT值,然后立即清零CNT,并设置通道x为下降沿捕获,这样到t2时刻,又会发生捕获事件,得到此时的CNT值,记为CCRx2。
这样,根据定时器的计数频率,我们就可以算出t1~t2的时间,从而得到高电平脉宽。
在t1~t2之间,可能产生N次定时器溢出,这就要求我们对定时器溢出,做处理,防止高电平太长,导致数据不准确。
如图所示,t1~t2之间,CNT计数的次数等于:N*ARR+CCRx2,有了这个计数次数,再乘以CNT的计数周期,即可得到t2-t1的时间长度,即高电平持续时间。
STM32F4的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能。
STM32F4的输入捕获,简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。
同时还可以配置捕获时是否触发中断/DMA等。
这里我们用TIM5_CH1来捕获高电平脉宽。
============================================================== =====================捕获/比较通道(例如:通道1 输入阶段)============================================================== =====================接下来介绍我们需要用到的一些寄存器配置,需要用到的寄存器:TIMx_ARR、TIMx_PSC、TIMx_CCMR1、TIMx_CCER、TIMx_DIER、TIMx_CR1、TIMx_CCR1 (这里的x=5)。
首先TIMx_ARR和TIMx_PSC,这两个寄存器用来设自动重装载值和TIMx的时钟分频。
---------------------------------------------------------------------------------------------------------------------------------------捕获/比较模式寄存器1:TIMx_CCMR1,这个寄存器在输入捕获的时候,非常有用:TIMx 捕获/比较模式寄存器1 (TIMx_CCMR1)TIMx capture/compare mode register 1 偏移地址:0x18 复位值:0x0000当在输入捕获模式下使用的时候,对应图的第二行描述,从图中可以看出,TIMx_CCMR1是针对2个通道的配置,低八位[7:0]用于捕获/比较通道1的控制,而高八位[15:8]则用于捕获/比较通道2的控制,因为TIMx还有CCMR2这个寄存器,所以可以知道CCMR2是用来控制通道3和通道4(详见《STM32F4xx中文参考手册》435页,15.4.8节)。
这里我们用到的是TIM5的捕获/比较通道1,我们重点介绍TIMx_CCMR1的[7:0]位(其高8位配置类似),TIMx_CCMR1的[7:0]位详细描述见图所示:位7:4 IC1F:输入捕获1滤波器(Input capture 1 filter)此位域可定义TI1输入的采样频率和适用于TI1的数字滤波器带宽。
数字滤波器由事件计数器组成,每N 个事件才视为一个有效边沿:0000:无滤波器,按f DTS频率进行采样1000:f SAMPLING=f DTS/8,N=60001:f SAMPLING=f CK_INT,N=2 1001:f SAMPLING=f DTS/8,N=80010:f SAMPLING=f CK_INT,N=4 1010:f SAMPLING=f DTS/16,N=50011:f SAMPLING=f CK_INT,N=8 1011:f SAMPLING=f DTS/16,N=60100:f SAMPLING=f DTS/2,N=6 1100:f SAMPLING=f DTS/16,N=80101:f SAMPLING=f DTS/2,N=8 1101:f SAMPLING=f DTS/32,N=50110:f SAMPLING=f DTS/4,N=6 1110:f SAMPLING=f DTS/32,N=60111:f SAMPLING=f DTS/4,N=8 1111:f SAMPLING=f DTS/32,N=8注意:在当前硅版本中,当ICxF[3:0]= 1、2或3时,将用CK_INT代替公式中的f DTS。
输入捕获1滤波器IC1F[3:0],这个用来设置输入采样频率和数字滤波器长度。
其中,f CK_INT是定时器的输入频率(TIMxCLK),一般为84Mhz/168Mhz(看该定时器在哪个总线上),而f DTS则是根据TIMx_CR1的CKD[1:0]的设置来确定的,如果CKD[1:0]设置为00,那么f DTS=f CK_INT。
N值就是滤波长度,举个简单的例子:假设IC1F[3:0]=0011,并设置IC1映射到通道1上,且为上升沿触发,那么在捕获到上升沿的时候,再以f CK_INT的频率,连续采样到8次通道1的电平,如果都是高电平,则说明却是一个有效的触发,就会触发输入捕获中断(如果开启了的话)。
这样可以滤除那些高电平脉宽低于8个采样周期的脉冲信号,从而达到滤波的效果。
这里,我们不做滤波处理,所以设置IC1F[3:0]=0000,只要采集到上升沿,就触发捕获。
位3:2 IC1PSC:输入捕获1预分频器(Input capture 1 prescaler)此位域定义CC1输入(IC1)的预分频比。
只要CC1E=0(TIMx_CCER寄存器),预分频器便立即复位。
00:无预分频器,捕获输入上每检测到一个边沿便执行捕获01:每发生2个事件便执行一次捕获10:每发生4个事件便执行一次捕获11:每发生8个事件便执行一次捕获输入捕获1预分频器IC1PSC[1:0],我们是1次边沿就触发1次捕获,所以选择00。
位1:0 CC1S:捕获/比较1选择(Capture/Compare 1 selection)此位域定义通道方向(输入/输出)以及所使用的输入。
00:CC1通道配置为输出01:CC1通道配置为输入,IC1映射到TI1上10:CC1通道配置为输入,IC1映射到TI2上11:CC1通道配置为输入,IC1映射到TRC上。
此模式仅在通过TS位(TIMx_SMCR寄存器)选择内部触发输入时有效注意:仅当通道关闭时(TIMx_CCER中的CC1E = 0),才可向CC1S位写入数据。
其中CC1S[1:0],这两个位用于CCR1的通道配置,这里我们设置IC1S[1:0]=01,也就是配置IC1映射在TI1上。
---------------------------------------------------------------------------------------------------------------------------------------TIMx 捕获/比较使能寄存器(TIMx_CCER)TIMx capture/compare enable register 偏移地址:0x20 复位值:0x0000位1 CC1P:捕获/比较1输出极性(Capture/Compare 1output Polarity)。
CC1通道配置为输出:0:OC1高电平有效1:OC1低电平有效CC1 通道配置为输入:CC1NP/CC1P位可针对触发或捕获操作选择TI1FP1和TI2FP1的极性。
00:非反相/上升沿触发电路对TIxFP1上升沿敏感(在复位模式、外部时钟模式或触发模式下执行捕获或触发操作),TIxFP1未反相(在门控模式或编码器模式下执行触发操作)。
01:反相/下降沿触发电路对TIxFP1下降沿敏感(在复位模式、外部时钟模式或触发模式下执行捕获或触发操作),TIxFP1反相(在门控模式或编码器模式下执行触发操作)。
10:保留,不使用此配置。
11:非反相/上升沿和下降沿均触发电路对TIxFP1上升沿和下降沿都敏感(在复位模式、外部时钟模式或触发模式下执行捕获或触发操作)位0 CC1E:捕获/比较1输出使能(Capture/Compare 1 output enable)。
CC1通道配置为输出:0:关闭––OC1未激活1:开启––在相应输出引脚上输出OC1信号CC1通道配置为输入:此位决定了是否可以实际将计数器值捕获到输入捕获/比较寄存器1 (TIMx_CCR1) 中。
0:禁止捕获1:使能捕获所以要使能输入捕获,必须设置CC1E=1,而CC1P则根据自己的需要来配置。
---------------------------------------------------------------------------------------------------------------------------------------接下来我们再看看DMA/中断使能寄存器:TIMx_DIER,该寄存器的各位描述见图TIMx_ DIER 寄存器各位描述我们需要用到中断来处理捕获数据,所以必须开启通道1的捕获比较中断,即CC1IE设置为1。
---------------------------------------------------------------------------------------------------------------------------------------控制寄存器:TIMx_CR1,我们只用到了它的最低位,也就是用来使能定时器的。
控制寄存器1(TIMx_CR1)位9:8 CKD:时钟分频(Clock division)此位域指示定时器时钟(CK_INT) 频率与数字滤波器所使用的采样时钟(ETR、TIx之间的分频比,00:t DTS = t CK_INT 01:t DTS = 2 × t CK_INT10:t DTS = 4 × t CK_INT 11:保留------------------------------------------------------------------------------- 最后再来看看捕获/比较寄存器1:TIMx_CCR1,该寄存器用来存储捕获发生时,TIMx_CNT的值,我们从TIMx_CCR1就可以读出通道1捕获发生时刻的TIMx_CNT值,通过两次捕获(一次上升沿捕获,一次下降沿捕获)的差值,就可以计算出高电平脉冲的宽度(注意,对于脉宽太长的情况,还要计算定时器溢出的次数)。