企业网搭建,wordpress后台seo优化教程,wordpress商店会员管理,广州十大传媒公司通用定时器 通用定时器在基础定时器的基础上增加了一些功能#xff0c;比如#xff1a;输入捕获、输出比较、输出pwm和单脉冲模式等。 我们先来看框图#xff0c;相对比较复杂#xff0c;但是一部分一部分看#xff0c;然后再串通起来#xff0c;就可以懂了。所以切… 通用定时器 通用定时器在基础定时器的基础上增加了一些功能比如输入捕获、输出比较、输出pwm和单脉冲模式等。 我们先来看框图相对比较复杂但是一部分一部分看然后再串通起来就可以懂了。所以切不要急。 ① 时钟源关于STM32定时器的时钟源的选择 1内部时钟(CK_INT) CK_INT (APB1 预分频系数 2 ) ? (APB1时钟 * 2) : (APB1时钟) (2) 外部时钟模式1外部输入引脚TIx(1,2) 外部输入引脚TIx(1,2)即只能来自定时器的通道1或者2。图上TI1F_ED、TI1FP1、TI2FP2 外部时钟源信号-IO-TIMx_CH1/2(不能CH3、CH4)IO口用作定时器外部时钟源信号配置IO的复用功能。 1TI2经过滤波器(TIMx_CCMR1的ICF[3:0])接着经过边沿检测器通过TIMx_CCER的CC2P位设置检测的边沿可以是TI2F_Rising、TI2F_Falling。 2接着通过触发输入选择器(TIMx_SMCR的TS[2:0])选择TRGI的来源(TI1_ED即CH1的双边沿信号、TI1FP1即CH1经过CC2P边沿检测后的信号、TI2FP2即CH2经过CC2P边沿检测后的信号)如图TS设置110则选择TI2FP2作为TRGI的来源。 3最后经过从模式选择器(SMS[2:0])选择定时器的时钟源(CK_PSC)CK_PSC经过定时器的预分频器分频后得到计数器频率CK_CNT。如图ECE(外部时钟使能位该位启用外部时钟模式2)设置0SMS[2:0]设置111则选择外部时钟模式1。 3外部时钟模式2外部触发输入(ETR) 外部时钟源信号→IO→TIMx_ETR 1ETR引脚输入经过外部触发极性选择器(ETP位)当选择下降沿有效的话信号会经过反相器。 2接着经过外部触发预分频器(ETPS[1:0])。 3接着经过滤波器(ETF[3:0])。fDTS由TIMx_CR1寄存器CKD位设置。CKD位时钟分频因子。 4最后经过从模式选择器(SMS[2:0])选择外部时钟模式2。如图ECE设置1即可。 (4内部触发输入(ITRx) 使用一个定时器作为另一个定时器的预分频器即实现定时器的级联。 从定时器 从定时器的ITR0(TS000) 从定时器的ITR1(TS001) 从定时器的ITR2(TS010) 从定时器的ITR3(TS011) TIM1 主定时器TIM5_TRGO 主定时器TIM2_TRGO 主定时器TIM3_TRGO 主定时器TIM4_TRGO TIM2 主定时器TIM1_TRGO 主定时器TIM8_TRGO 主定时器TIM3_TRGO 主定时器TIM4_TRGO TIM3 主定时器TIM1_TRGO 主定时器TIM2_TRGO 主定时器TIM5_TRGO 主定时器TIM4_TRGO TIM4 主定时器TIM1_TRGO 主定时器TIM2_TRGO 主定时器TIM3_TRGO 主定时器TIM8_TRGO TIM5 主定时器TIM2_TRGO 主定时器TIM3_TRGO 主定时器TIM4_TRGO 主定时器TIM8_TRGO TIM8 主定时器TIM1_TRGO 主定时器TIM2_TRGO 主定时器TIM4_TRGO 主定时器TIM5_TRGO
如图如表所示定时器1作为定时器2的预分频器。 1定时器1主模式选择器(TIM1_CR2的MMS[2:0])设置010即主模式选择为更新(选择更新事件作为触发输出(TRGO1))。 2定时器2从模式控制寄存器(TIM2_SMCR)的TS[2:0]位设置000即使用ITR1作为内部触发。再经过从模式控制器(SMS)得到CK_PSC。 SMS[2:0]设置111即从模式控制器选择外部时钟模式1。 ② 控制器 控制器包括从模式下定时器触发控制器(管理TRGI)、编码器接口和主模式下定时器触发控制器管理TRGO。从模式下定时器触发控制器通过选择TRGI通道上的输入信号源可以控制计数器复位、启动、递增/递减、计数。编码器接口针对编码器计数。主模式下定时器触发控制器用来提供触发信号给别的外设比如为其它定时器提供时钟、启动信号等或者为 DAC/ADC 的触发转换提供TRGO输出信号。 ③时基单元 (1) 时基单元包括计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。 (2) 定时器的计数模式有三种递增计数模式、递减计数模式、中心对齐计数模式。 1) 递增和递减模式都熟悉不解释。 2) 中心对齐计数模式计数器先从0开始递增计数直到计数器值等于自动重装载寄存器影子寄存器值减1时定时器上溢产生更新事件然后从自动重装载寄存器影子寄存器值开始递减计数直到计数值等于1时定时器下溢产生更新事件然后又从0开始递增计数依次循环。 3) 计数器模式设置由TIMx_CR1寄存器的CMS和DIR位控制。 边沿对齐模式递增计数模式和递减计数模式CMS00:递增计数模式和递减计数模式。 中央对齐模式1CMS01输出比较中断标志位CCxIF(当TIMx_CCMRx寄存器中CCxS00配置为输出比较的时候)只在计数器向下计数时被设置 中央对齐模式2CMS10输出比较中断标志位CCxIF(当TIMx_CCMRx寄存器中CCxS00配置为输出比较的时候)只在计数器向上计数时被设置 中央对齐模式3CMS11输出比较中断标志位在计数器CCxIF(当TIMx_CCMRx寄存器中CCxS00配置为输出比较的时候)向上和向下计数时均被设置 ④输入捕获 (1TI1经过一个滤波器由TIMx_CCMR1的ICF[3:0]位设置滤波方式。再经过边沿检测器由捕获/比较使能寄存器(TIMx_CCER) 的 CC1P 位来设置检测的边沿可以上升沿或者下降沿检测。CC1NP是配置互补通道的边沿检测的在高级定时器才有通用定时器没有。 fDTS由TIMx_CR1 寄存器的 CKD 位设置。 (2然后经过捕获/比较1选择器(CC1S[1:0])选择将IC1映射在TI1、TI2或者TRC。如图设置CC1S[1:0]为01即CC1通道被配置为输入IC1映射在TI1上 (3接着经过输入捕获1预分频器由ICPS[1:0]位设置预分频系数。然后把CCIE位置1使能输入捕获IC1PS就是分频后的捕获信号。 ⑤ 输入捕获和输出比较公共部分 (1输入捕获功能部分 结合④输入捕获我们从图中(非阴影部分)可以看到
CC1S配置为01即CC1通道被配置为输入IC1映射在TI1上IC1PS是分频后的捕获信号CC1E位置1捕获使能。
软件产生捕获事件CC1G位可以产生软件捕获事件 硬件产生捕获事件比如检测上升沿信号当上升沿到来时IC1PS信号就会触发输入捕获事件发生计数器的值就会被锁存在捕获/比较影子寄存器中。当没有CCR1读操作时捕获/比较影子寄存器里的值就会锁存到 CCR1 寄存器中程序员就可读取CCR1寄存器值获得计数器得计数值。 (2输出比较功能部分
程序员写CCR1寄存器即写入比较值CC1S设置为00即CC1通道被配置为输出OC1PE预装载使能如果设置1则或门输出就是UEV的值。 图中(非阴影区域)可以看到捕获/比较预装载寄存值要转移到捕获/比较影子寄存器通过一个与门控制与门输入分别是CCR1写入操作、CC1S是否配置为00OC1PE、UEV通过或门得输出所以捕获/比较预装载寄存值要转移到捕获/比较影子寄存器要满足三个条件CCR1 不在写入操作期间、CC1S[1:0] 00 配置为输出、OC1PE 位置0或者 OC1PE 位置 1并且需要发生更新事件这个更新事件可以软件产生或者硬件产生。 当 CCR1 寄存器的值转移到其影子寄存器后新的值就会和计数器的值进行比较。 ⑥输出比较 图中可知 1oc1ref是输出参考信号高电平有效低电平无效。它的高低电平受三个方面影响 1由⑤中的输出比较功能部分得的比较结果 当计数器的值和捕获/比较寄存器的值相等时输出参考信号 oc1ref 的极性就会设定为我们预先配置好的值如果开启了比较中断还会发生比较中断。 2输出比较1模式OC1M[2:0]设置为输出比较模式 输出参考信号 oc1ref 的极性就会根据我们选择的输出比较模式而改变。 OCxM[2:0]模式 功能 备注 000 冻结模式(TIM_OCMode_Timing) OC1REF和TIMx_CCRx及TIMx_CNT无关 引脚和定时器比较结果无关 定时器仅为时基类应用 001 相等则有效模式(TIM_OCMode_Active) TIMx_CNT TIMx_CCRxOCxREF 1 从匹配时刻起引脚一直输出有效电平 010 相等则无效模式(TIM_OCMode_Inactive) TIMx_CNT TIMx_CCRxOCxREF 0 从匹配时刻起引脚一直输出无效电平 011 相等则翻转模式(TIM_OCMode_Toggle) TIMx_CNT TIMx_CCRxOCxREF翻转 引脚输出方波频率 100 软件强制无效模式(TIM_ForcedAction_InActive) 与TIMx_CCRx及TIMx_CNT无关OCxREF 0 软件设置引脚为无效状态 101 软件强制有效模式(TIM_ForcedAction_Active) 与TIMx_CCRx及TIMx_CNT无关OCxREF 1 软件设置引脚为有效状态 OCxM[2:0]模式 功能 备注 110 PWM1模式TIM_OCMode_PWM1 向上计数时在TIMx_CNTTIMx_CCRx时OCxREF 1否则OCxREF 0 在向下计数时TIMx_CNTTIMx_CCRx时OC1REF 0否则OC1REF 1 PWM输出模式 111 PWM2模式TIM_OCMode_PWM2 和PWM1相比比较结果OCxREF恰好相反 PWM输出模式 3ETRF由OC1CE位配置。
OC1CE位是输出比较通道1清零使能位。0OC1REF 不受ETRF输入的影响1一旦检测到ETRF输入高电平清除OC1REF0。
2oc1ref信号经过通道输出极性选择(CC1P)再到输出使能电路由通道输出使能(CC1E)控制输出OC1信号。