输入捕获形式
库函数例程方位: STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\InputCapture
在输入捕获形式下,当检测到ICx信号上相应的边缘后,计数器的当时值被锁存到捕获/比较寄存器(TIMx_CCRx)中。当捕获事情发生时,相应的CCxIF标志(TIMx_SR寄存器)被置’1’,假如使能了中止或许DMA操作,则将发生中止或许DMA操作。
在捕获形式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。
PWM输入形式
库函数例程方位 :STM32F10x_StdPeriph_Lib_V3.3.0\Project\STM32F10x_StdPeriph_Examples\TIM\PWM_Input
该形式是输入捕获形式的一个特例
例如,你需求丈量输入到TI1上的PWM信号的长度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2寄存器),具体过程如下(取决于CK_INT的频率和预分频器的值)
● 挑选TIMx_CCR1的有用输入:置TIMx_CCMR1寄存器的CC1S=01(挑选TI1)。
● 挑选TI1FP1的有用极性(用来捕获数据到TIMx_CCR1中和铲除计数器):置CC1P=0(上升沿有用)。
● 挑选TIMx_CCR2的有用输入:置TIMx_CCMR1寄存器的CC2S=10(挑选TI1)。
● 挑选TI1FP2的有用极性(捕获数据到TIMx_CCR2):置CC2P=1(下降沿有用)。
● 挑选有用的触发输入信号:置TIMx_SMCR寄存器中的TS=101(挑选TI1FP1)。
● 装备从形式操控器为复位形式:置TIMx_SMCR中的SMS=100。
● 使能捕获:置TIMx_CCER寄存器中CC1E=1且CC2E=1。
因为只要TI1FP1和TI2FP2连到了从形式操控器,所以PWM输入形式只能运用TIMx_CH1 /TIMx_CH2信号。
强置输出形式
在输出形式(TIMx_CCMRx寄存器中CCxS=00)下,输出比较信号(OCxREF和相应的OCx)能够直接由软件强置为有用或无效状况,而不依赖于输出比较寄存器和计数器间的比较成果。
例如:CCxP=0(OCx高电平有用),则OCx被强置为高电平。 置TIMx_CCMRx寄存器中的OCxM=100,可强置OCxREF信号为低。
输出比较形式
此项功用是用来操控一个输出波形,或许指示一段给定的的时刻现已届时。 当计数器与捕获/比较寄存器的内容相一起,输出比较功用做如下操作:
● 将输出比较形式(TIMx_CCMRx寄存器中的OCxM位)和输出极性(TIMx_CCER寄存器中的CCxP位)界说的值输出到对应的引脚上。在比较匹配时,输出引脚能够坚持它的电平(OCxM=000)、被设置成有用电平(OCxM=001)、被设置成无效电平(OCxM=010)或进行翻转(OCxM=011)。
● 设置中止状况寄存器中的标志位(TIMx_SR寄存器中的CCxIF位)。
● 若设置了相应的中止屏蔽(TIMx_DIER寄存器中的CCxIE位),则发生一个中止。
● 若设置了相应的使能位(TIMx_DIER寄存器中的CCxDE位,TIMx_CR2寄存器中的CCDS位挑选DMA恳求功用),则发生一个DMA恳求。
输出比较形式的装备过程:
1. 挑选计数器时钟(内部,外部,预分频器)
2. 将相应的数据写入TIMx_ARR和TIMx_CCRx寄存器中
3. 假如要发生一个中止恳求和/或一个DMA恳求,设置CCxIE位和/或CCxDE位。
4. 挑选输出形式,例如当计数器CNT与CCRx匹配时翻转OCx的输出引脚,CCRx预装载未用,敞开OCx输出且高电平有用,则有必要设置OCxM=’011’、OCxPE=’0’、CCxP=’0’和CCxE=’1’。
5. 设置TIMx_CR1寄存器的CEN位发动计数器
PWM 形式
脉冲宽度调制形式能够发生一个由TIMx_ARR寄存器确认频率、由TIMx_CCRx寄存器确认占空比的信号。
在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM形式1)或’111’(PWM形式2),能够独登时设置每个OCx输出通道发生一路PWM。有必要设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最终还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称形式中)使能主动重装载的预装载寄存器。
下面是一个PWM形式1的比如。当TIMx_CNT 单脉冲形式 单脉冲形式(OPM)是前述很多形式的一个特例。这种形式答应计数器呼应一个鼓励,并在一个程序可控的延时之后,发生一个脉宽可程序操控的脉冲。 能够经过从形式操控器发动计数器,在输出比较形式或许PWM形式下发生波形。设置TIMx_CR1寄存器中的OPM位将挑选单脉冲形式,这样能够让计数器主动地在发生下一个更新事情UEV时中止。 仅当比较值与计数器的初始值不一起,才干发生一个脉冲。发动之前(当定时器正在等候触发),有必要如下装备: 向上计数方法:CNT < CCRx ≤ ARR (特别地,0 < CCRx), 向下计数方法:CNT > CCRx。 编码器接口形式 两个输入TI1和TI2被用来作为增量编码器的接口。参看表77,假定计数器现已发动(TIMx_CR1寄存器中的CEN=’1’),计数器由每次在TI1FP1或TI2FP2上的有用跳变驱动。TI1FP1和TI2FP2是TI1和TI2在经过输入滤波器和极性操控后的信号;假如没有滤波和变相,则TI1FP1=TI1,TI2FP2=TI2。依据两个输入信号的跳变次序,发生了计数脉冲和方向信号。依据两个输入信号的跳变次序,计数器向上或向下计数,一起硬件对TIMx_CR1寄存器的DIR位进行相应的设置。不论计数器是依托TI1计数、依托TI2计数或许一起依托TI1和TI2计数。在任一输入端(TI1或许TI2)的跳变都会从头核算DIR位。 编码器接口形式基本上相当于运用了一个带有方向挑选的外部时钟。这意味着计数器只在0到TIMx_ARR寄存器的主动装载值之间接连计数(依据方向,或是0到ARR计数,或是ARR到0计数)。所以在开端计数之前有必要装备TIMx_ARR;相同,捕获器、比较器、预分频器、触发输出特性等仍作业如常。 在这个形式下,计数器按照增量编码器的速度和方向被主动的修正,因而计数器的内容一直指示着编码器的方位。计数方向与相连的传感器旋转的方向对应。下表列出了一切或许的组合,假定TI1和TI2不一起改换。 ● CC1S=’01’ (TIMx_CCMR1寄存器,IC1FP1映射到TI1) ● CC2S=’01’ (TIMx_CCMR2寄存器,IC2FP2映射到TI2) ● CC1P=’0’ (TIMx_CCER寄存器,IC1FP1不反相,IC1FP1=TI1) ● CC2P=’0’ (TIMx_CCER寄存器,IC2FP2不反相,%&&&&&%2FP2=TI2) ● SMS=’011’ (TIMx_SMCR寄存器,一切的输入均在上升沿和下降沿有用). ● CEN=’1’ (TIMx_CR1寄存器,计数器使能) TIM 与Hall接口 霍尔传感器坐落三相电机
下图是一个计数器操作的实例,显现了计数信号的发生和方向操控。它还显现了当挑选了双边缘时,输入颤动是怎么被按捺的;颤动或许会在传感器的方位接近一个转换点时发生。在这个比如中,咱们假定装备如下: