花生壳域名直接做网站松江品划网站建设
花生壳域名直接做网站,松江品划网站建设,空间 建网站,郑州网站模板本节主要介绍以下内容#xff1a;
定时器简介
高级定时器功能框图讲解
一、定时器简介
定时器功能 #xff1a;定时、输出比较、输入捕获、断路输入
定时器分类 #xff1a;基本定时器、通用定时器、高级定时器
定时器资源 #xff1a;F103有2个高级定时器、4个通…本节主要介绍以下内容
定时器简介
高级定时器功能框图讲解
一、定时器简介
定时器功能 定时、输出比较、输入捕获、断路输入
定时器分类 基本定时器、通用定时器、高级定时器
定时器资源 F103有2个高级定时器、4个通用定时器、2个基本定时器
计数器特性 高级定时器功能简介
-计数器16bit上/下/两边 计数TIM1和TIM8还有一个重复计数器RCR独有。-有4个GPIO其中通道1~3还有互补输出GPIO-时钟来自PCLK2为72M可实现1~65536分频 高级控制定时器(TIM1 和TIM8)和通用定时器在基本定时器的基础上引入了外部引脚可以实现输入捕获和输出比较功能。高级控制定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车(断路)功能这些功能都是针对工业电机控制方面 。
STM32F103ZET6 的高级/通用定时器的IO 分配具体见表 二、 高级定时器功能框图讲解 1-时钟源 2-控制器 3-时基 4-输入捕获 5-输出比较 6-断路功能
2.1 时钟源
-内部时钟源CK_INT -外部时钟模式1—外部的GPIO Tixx1 2 3 4-外部时钟模式2—外部的GPIO ETR-内部触发输入
2.1.1 内部时钟源
-内部时钟源来自RCC的TIMx_CLK 72M-TIMx_CLK等于多少呢如何确定 72M具体的查看RCC时钟树部分
2.1.2 外部时钟1 ①时钟信号输入引脚
-外部的GPIO TIx对应TIMx_CH1/2/3/4-TIM_CCMRx 的位 CCxS[1:0]配置其中 CCMR1 控制 TI1/2 CCMR2 控制 TI3/4
②滤波器
-如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话我们就需要使用滤波器对 ETRP 信号重新采样来达到降频或者去除高频干扰的目的2-由TIMx_CCMRx 的位 ICxF[3:0]配置。
③边沿检测
-边沿检测的信号来自于滤波器的输出在成为触发信号之前需要进行边沿检测决定是上升沿有效还是下降沿有效。-由 TIMx_CCER 的位 CCxP 和 CCxNP 配置。 ④触发选择
-当使用外部时钟模式 1 时触发源有两个一个是滤波后的定时器输入 1 TI1FP1和滤波后的定时器输入 2 TI2FP2。-由 TIMx_SMCR 的位 TS[2:0]配置。
⑤从模式选择
-选定了触发源信号后最后我们需把信号连接到 TRGI 引脚让触发信号成为外部时钟模式 1 的输入最终等于 CK_PSC然后驱动计数器 CNT 计数。-具体的配置TIMx_SMCR 的位 SMS[2:0]为 000 即可选择外部时钟模式 1。
⑥使能计数器
-经过上面的 5 个步骤之后 最后我们只需使能计数器开始计数外部时钟模式 1 的配置就算完成。-使能计数器由 TIMx_CR1 的位 CEN 配置。 2.1.3 外部时钟2 ①时钟信号输入引脚 当使用外部时钟模式 2 的时候时钟信号来自于定时器的特定输入通道 TIMx_ETR只有 1 个。
②外部触发极性
-来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效。-具体的由 TIMx_SMCR的位 ETP 配置。
③外部触发预分频器
-由于 ETRP 的信号的频率不能超过 TIMx_CLK 180M的 1/4当触发信号的频率很高的情况下就必须使用分频器来降频。-具体的由 TIMx_SMCR 的位 ETPS[1:0]配置。
④滤波器
-如果 ETRP 的信号的频率过高或者混杂有高频干扰信号的需要使用滤波器对 ETRP 信号重新采样来达到降频或者去除高频干扰的目的。-具体的由 TIMx_SMCR 的位 ETF[3:0]配置其中的 fDTS 是由内部时钟 CK_INT 分频得到具体的由 TIMx_CR1 的位CKD[1:0]配置。
⑤从模式选择
-经过滤波器滤波的信号连接到 ETRF 引脚后触发信号成为外部时钟模式 2 的输入最终等于 CK_PSC然后驱动计数器 CNT 计数。-具体的配置 TIMx_SMCR 的位 ECE 为 1即可选择外部时钟模式 2。
⑥使能计数器
-经过上面的 5 个步骤之后 最后我们只需使能计数器开始计数外部时钟模式 2 的配置就算完成。-使能计数器由 TIMx_CR1 的位 CEN 配置。
2.1.4 内部触发输入
-内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起可以实现定时器同步或级联。- 由TIMx_SMCR 的位 TS[2:0]配置。
内部触发连接
TIM1为TIM2提供时钟 2.2 控制器
-控制器就是用来控制的发送命令的-CR1、CR2、SMCR、CCER主要学习这几个寄存器即可。
2.3 时基单元 高级控制定时器时基单元功能包括四个寄存器分别是计数器寄存器(CNT)、预分频 器寄存器(PSC)、自动重载寄存器(ARR)和重复计数器寄存器(RCR)。其中重复计数器RCR 是高级定时器独有通用和基本定时器没有。前面三个寄存器都是16 位有效TIMx_RCR 寄存器是8 位有效。
①预分频器PSC 预分频器PSC有一个输入时钟CK_PSC 和一个输出时钟CK_CNT。输入时钟CK_PSC 就是上面时钟源的输出输出CK_CNT 则用来驱动计数器CNT 计数。通过设置预分频器PSC 的值可以得到不同的CK_CNT实际计算为fCK_CNT等于fCK_PSC/(PSC[15:0]1)可以实现1 至65536 分频。
②计数器CNT 高级控制定时器的计数器有三种计数模式分别为递增计数模式、递减计数模式和递增/递减(中心对齐)计数模式。
(1) 递增计数模式下计数器从0 开始计数每来一个CK_CNT 脉冲计数器就增加1直到计数器的值与自动重载寄存器ARR 值相等然后计数器又从0 开始计数并生成计数器上溢事件计数器总是如此循环计数。如果禁用重复计数器在计数器生成上溢事件就马上生成更新事件(UEV)如果使能重复计数器每生成一次上溢事件重复计数器内容就减1直到重复计数器内容为0 时才会生成更新事件。
(2) 递减计数模式下计数器从自动重载寄存器ARR 值开始计数每来一个CK_CNT 脉冲计数器就减1直到计数器值为0然后计数器又从自动重载寄存器ARR 值开始递减计数并生成计数器下溢事件计数器总是如此循环计数。如果禁用重复计数器在计数器生成下溢事件就马上生成更新事件如果使能重复计数器每生成一次下溢事件重复计数器内容就减1直到重复计数器内容为0 时才会生成更新事件。
(3) 中心对齐模式下计数器从0 开始递增计数直到计数值等于(ARR-1)值生成计数器上溢事件然后从ARR 值开始递减计数直到1 生成计数器下溢事件。然后又从0 开始计数如此循环。每次发生计数器上溢和下溢事件都会生成更新事件。
③自动重载寄存器ARR 自动重载寄存器ARR 用来存放与计数器CNT 比较的值如果两个值相等就递减重复计数器。可以通过TIMx_CR1 寄存器的ARPE位控制自动重载影子寄存器功能如果ARPE位置1自动重载影子寄存器有效只有在事件更新时才把TIMx_ARR 值赋给影子寄存器。如果ARPE 位为0则修改TIMx_ARR 值马上有效。
④重复计数器RCR 在基本/通用定时器发生上/下溢事件时直接就生成更新事件但对于高级控制定时器却不是这样高级控制定时器在硬件结构上多出了重复计数器在定时器发生上溢或下溢事件是递减重复计数器的值只有当重复计数器为0 时才会生成更新事件。在发生N1 个上溢或下溢事件(N 为RCR 的值)时产生更新事件。
2.4 输入捕获 输入捕获可以对输入的信号的上升沿下降沿或者双边沿进行捕获常用的测量输入信号的脉宽和测量PWM输入信号的频率和占空比这两种。 输入捕获的大概原理就是当捕获到信号的跳变沿的时候把计数器CNT 的值锁存到捕获寄存器CCR 中把前后两次捕获到的CCR 寄存器中的值相减就可以算出脉宽或者频率。如果捕获的脉宽的时间长度超过你的捕获定时器的周期就会发生溢出这个我们需要做额外的处理。
①输入通道 需要被测量的信号从定时器的外部引脚TIMx_CH1/2/3/4 进入通常叫TI1/2/3/4在后 面的捕获讲解中对于要被测量的信号我们都以TIx 为标准叫法。
②输入滤波器和边沿检测器 当输入的信号存在高频干扰的时候我们需要对输入信号进行滤波即进行重新采样根据采样定律采样的频率必须大于等于两倍的输入信号比如输入的信号为1M又存在高频的信号干扰那么此时就很有必要进行滤波我们可以设置采样频率为2M这样可以在保证采样到有效信号的基础上把高于2M 的高频干扰信号过滤掉。 滤波器的配置由CR1 寄存器的位CKD[1:0]和CCMR1/2 的位ICxF[3:0]控制。从ICxF位的描述可知采样频率fSAMPLE 可以由fCK_INT 和fDTS 分频后的时钟提供其中是fCK_INT 内部时钟fDTS 是fCK_INT 经过分频后得到的频率分频因子由CKD[1:0]决定可以是不分频2 分频或者是4 分频。 边沿检测器用来设置信号在捕获的时候是什么边沿有效可以是上升沿下降沿或者是双边沿具体的由CCER 寄存器的位CCxP 和CCxNP 决定。
③捕获通道 捕获通道就是图中的IC1/2/3/4每个捕获通道都有相对应的捕获寄存器CCR1/2/3/4当发生捕获的时候计数器CNT 的值就会被锁存到捕获寄存器中。 这里我们要搞清楚输入通道和捕获通道的区别输入通道是用来输入信号的捕获通道是用来捕获输入信号的通道一个输入通道的信号可以同时输入给两个捕获通道。比如输入通道TI1 的信号经过滤波边沿检测器之后的TI1FP1 和TI1FP2 可以进入到捕获通道IC1和IC2其实这就是我们后面要讲的PWM 输入捕获只有一路输入信号TI1却占用了两个捕获通道IC1 和IC2。当只需要测量输入信号的脉宽时候用一个捕获通道即可。输入通道和捕获通道的映射关系具体由寄存器CCMRx 的位CCxS[1:0]配置。
④预分频器 ICx 的输出信号会经过一个预分频器用于决定发生多少个事件时进行一次捕获。具体的由寄存器CCMRx 的位ICxPSC 配置如果希望捕获信号的每一个边沿则不分频。
⑤捕获寄存器 经过预分频器的信号ICxPS 是最终被捕获的信号当发生捕获时第一次计数器 CNT 的值会被锁存到捕获寄存器CCR 中还会产生CCxI 中断相应的中断位CCxIF在 SR 寄存器中会被置位通过软件或者读取CCR中的值可以将CCxIF清0。如果发生第二 次捕获即重复捕获CCR 寄存器中已捕获到计数器值且 CCxIF 标志已置 1则捕获溢 出标志位CCxOF在SR 寄存器中会被置位CCxOF 只能通过软件清零。
2.5 输出比较 输出比较就是通过定时器的外部引脚对外输出控制信号有冻结、将通道Xx1,2,3,4设置为匹配时输出有效电平、将通道X 设置为匹配时输出无效电平、翻转、强制变为无效电平、强制变为有效电平、PWM1 和PWM2 这八种模式具体使用哪种模式由寄存器CCMRx 的位OCxM[2:0]配置。其中PWM模式是输出比较中的特例使用的也最多。
①比较寄存器 当计数器CNT 的值跟比较寄存器CCR 的值相等的时候输出参考信号OCxREF 的信号的极性就会改变其中OCxREF1高电平称之为有效电平OCxREF0低电平称之为无效电平并且会产生比较中断CCxI相应的标志位CCxIFSR 寄存器中会置位。然后OCxREF 再经过一系列的控制之后就成为真正的输出信号OCx/OCxN。
②死区发生器
在生成的参考波形OCxREF 的基础上可以插入死区时间用于生成两路互补的输出 信号OCx 和OCxN死区时间的大小具体由BDTR 寄存器的位DTG[7:0]配置。死区时间的 大小必须根据与输出信号相连接的器件及其特性来调整。下面我们简单举例说明下带死区的 PWM信号的应用我们以一个板桥驱动电路为例。 在这个半桥驱动电路中Q1 导通Q2 截止此时我想让Q1 截止Q2 导通肯定是要先让Q1 截止一段时间之后再等一段时间才让Q2 导通那么这段等待的时间就称为死区时间因为Q1 关闭需要时间由MOS 管的工艺决定。如果Q1 关闭之后马上打开Q2那么此时一段时间内相当于Q1 和Q2 都导通了这样电路会短路。下图是针对上面的半桥驱动电路而画的带死区插入的PWM信号图中的死区时间要根据MOS 管的工艺来调节。 在输出比较的输出控制中参考信号OCxREF 在经过死区发生器之后会产生两路带死区的互补信号OCx_DT 和OCxN_DT通道1~3 才有互补信号通道4 没有其余跟通道1~3 一样这两路带死区的互补信号然后就进入输出控制电路如果没有加入死区控制那么进入输出控制电路的信号就直接是OCxREF。 进入输出控制电路的信号会被分成两路一路是原始信号一路是被反向的信号具体的由寄存器CCER 的位CCxP 和CCxNP 控制。经过极性选择的信号是否由OCx 引脚输出到外部引脚CHx/CHxN 则由寄存器CCER 的位CxE/CxNE 配置。 如果加入了断路刹车功能则断路和死区寄存器BDTR的MOE、OSSI 和OSSR这 三个位会共同影响输出的信号。④输出引脚 输出比较的输出信号最终是通过定时器的外部IO 来输出的分别为CH1/2/3/4其中前面三个通道还有互补的输出通道CH1/2/3N。更加详细的IO 说明还请查阅相关的数据手册。
2.6 断路功能 断路功能就是电机控制的刹车功能使能断路功能时根据相关控制位状态修改输出信号电平。在任何情况下OCx 和OCxN 输出都不能同时为有效电平这关系到电机控制常用的H 桥电路结构原因。 断路源可以是时钟故障事件由内部复位时钟控制器中的时钟安全系统(CSS)生成也可以是外部断路输入IO两者是或运算关系。 系统复位启动都默认关闭断路功能将断路和死区寄存器(TIMx_BDTR)的BKE 为置1使能断路功能。可通过TIMx_BDTR 寄存器的BKP 位设置设置断路输入引脚的有效电平设置为1 时输入BRK 为高电平有效否则低电平有效。 发送断路时将产生以下效果
TIMx_BDTR 寄存器中主输出模式使能(MOE)位被清零输出处于无效、空闲或 复位状态 根据相关控制位状态控制输出通道引脚电平当使能通道互补输出时会根据情 况自动控制输出通道电平 将TIMx_SR 寄存器中的 BIF 位置 1并可产生中断和DMA 传输请求。 如果 TIMx_BDTR 寄存器中的 自动输出使能(AOE)位置 1则MOE 位会在发生下 一个UEV 事件时自动再次置 1。
2.7 输入捕获应用 输入捕获一般应用在两个方面一个方面是脉冲跳变沿时间测量另一方面是PWM输入测量。
2.7.1 测量脉宽或者频率 ①测量频率 当捕获通道TIx 上出现上升沿时发生第一次捕获计数器CNT 的值会被锁存到捕获到寄存器CCR 中而且还会进入捕获中断在中断服务程序中记录一次捕获可以用一个标志变量来记录并把捕获寄存器中的值读取到value1 中。当出现第二次上升沿时发生第二次捕获计数器CNT的值会再次被锁存到捕获寄存器CCR中并再次进入捕获中断在捕获中断中把捕获寄存器的值读取到value3 中并清除捕获记录标志。利用value3 和value1 的差值我们就可以算出信号的周期频率。
②.测量脉宽 当捕获通道TIx 上出现上升沿时发生第一次捕获计数器CNT 的值会被锁存到捕获寄存器CCR 中而且还会进入捕获中断在中断服务程序中记录一次捕获可以用一个标志变量来记录并把捕获寄存器中的值读取到value1 中。然后把捕获边沿改变为下降沿捕获目的是捕获后面的下降沿。当下降沿到来的时候发生第二次捕获计数器CNT 的值会再次被锁存到捕获寄存器CCR 中并再次进入捕获中断在捕获中断中把捕获寄存器的值读取到value3 中并清除捕获记录标志。然后把捕获边沿设置为上升沿捕获。 在测量脉宽过程中需要来回的切换捕获边沿的极性如果测量的脉宽时间比较长定时器就会发生溢出溢出的时候会产生更新中断我们可以在中断里面对溢出进行记录处理。
③PWM输入模式 测量脉宽和频率还有一个更简便的方法就是使用PWM 输入模式该模式是输入捕获的特例只能使用通道1 和通道2通道3 和通道4 使用不了。与上面那种只使用一个捕获寄存器测量脉宽和频率的方法相比PWM输入模式需要占用两个捕获寄存器。 当使用PWM 输入模式的时候因为一个输入通道(TIx)会占用两个捕获通道(ICx)所以一个定时器在使用PWM输入的时候最多只能使用两个输入通道(TIx)。 我们以输入通道TI1 工作在PWM输入模式为例来讲解下具体的工作原理其他通道以此类推即可。 PWM 信号由输入通道TI1 进入因为是PWM输入模式的缘故信号会被分为两路一路是TI1FP1另外一路是TI2FP2。其中一路是周期另一路是占空比具体哪一路信号对应周期还是占空比得从程序上设置哪一路信号作为触发输入作为触发输入的哪一路信号对应的就是周期另一路就是对应占空比。作为触发输入的那一路信号还需要设置极性是上升沿还是下降沿捕获一旦设置好触发输入的极性另外一路硬件就会自动配置为相反的极性捕获无需软件配置。一句话概括就是选定输入通道确定触发信号然后设置触发信号的极性即可因为是PWM 输入的缘故另一路信号则由硬件配置无需软件配置。 当使用PWM输入模式的时候必须将从模式控制器配置为复位模式配置寄存器SMCR的位SMS[2:0]来实现即当我们启动触发信号开始进行捕获的时候同时把计数器CNT复位清零。 下面我们以一个更加具体的时序图来分析下PWM输入模式。 PWM 信号由输入通道TI1 进入配置TI1FP1 为触发信号上升沿捕获。当上升沿的时候IC1 和IC2 同时捕获计数器CNT 清零到了下降沿的时候IC2 捕获此时计数器CNT的值被锁存到捕获寄存器CCR2中到了下一个上升沿的时候IC1捕获计数器CNT的值被锁存到捕获寄存器CCR1 中。其中CCR21 测量的是脉宽CCR11 测量的是周期。这里要注意的是CCR2 和CCR1 的值在计算占空比和频率的时候都必须加1因为计数器是从0 开始计数的。 从软件上来说用PWM 输入模式测量脉宽和周期更容易付出的代价是需要占用两个捕获寄存器。
2.8 输出比较应用 输出比较模式总共有8 种具体的由寄存器CCMRx 的位OCxM[2:0]配置。我们这里只讲解最常用的PWM模式其他几种模式具体的看数据手册即可。
2.8.1 PWM输出模式 PWM输出就是对外输出脉宽即占空比可调的方波信号信号频率由自动重装寄存器ARR 的值决定占空比由比较寄存器CCR 的值决定。 PWM 模式分为两种PWM1 和PWM2总得来说是差不多就看你怎么用而已具体的区别见下表 下面我们以PWM1 模式来讲解以计数器CNT计数的方向不同还分为边沿对齐模式和中心对齐模式。PWM信号主要都是用来控制电机一般的电机控制用的都是边沿对齐模式FOC 电机一般用中心对齐模式。我们这里只分析这两种模式在信号感官上即信号波形的区别具体在电机控制中的区别不做讨论到了你真正需要使用的时候就会知道了。
①PWM边沿对齐模式 在递增计数模式下计数器从 0 计数到自动重载值 TIMx_ARR 寄存器的内容然后重新从 0 开始计数并生成计数器上溢事件 在边沿对齐模式下计数器CNT 只工作在一种模式递增或者递减模式。这里我们以CNT 工作在递增模式为例在中ARR8CCR4CNT 从0 开始计数当CNTCCR 的值时OCxREF 为有效的高电平 于此同时 比较中断寄存器CCxIF 置位。当CCRCNTARR 时OCxREF为无效的低电平。然后CNT又从0 开始计数并生成计数器上溢事件以此循环往复。
② PWM中心对齐模式 在中心对齐模式下计数器CNT 是工作做递增/递减模式下。开始的时候计数器CNT 从 0 开始计数到自动重载值减1(ARR-1)生成计数器上溢事件然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。图 33-14 是PWM1模式的中心对齐波形ARR8CCR4。第一阶段计数器CNT 工作在递增模式下从0 开始计数当CNTCCR 的值时OCxREF 为有效的高电平当CCRCNTARR时OCxREF为无效的低电平。第二阶段计数器CNT工作在递减模式 从ARR 的值开始递减当CNTCCR 时OCxREF 为无效的低电平当CCRCNT1 时OCxREF 为有效的高电平。在波形图上我们把波形分为两个阶段第一个阶段是计数器CNT 工作在递增模式的波形这个阶段我们又分为①和②两个阶段第二个阶段是计数器CNT 工作在递减模式的波形这个阶段我们又分为③和④两个阶段。要说中心对齐模式下的波形有什么特征的话那就是①和③阶段的时间相等②和④阶段的时间相等。中心对齐模式又分为中心对齐模式1/2/3 三种具体由寄存器CR1 位CMS[1:0]配置。具体的区别就是比较中断中断标志位CCxIF 在何时置1中心模式1 在CNT 递减计数的时候置1中心对齐模式2 在CNT 递增计数时置1中心模式3 在CNT 递增和递减计数时都置1。
三、定时器初始化结构体详解 在标准库函数头文件stm32f10x_tim.h 中对定时器外设建立了四个初始化结构体分别为
时基初始化结构体TIM_TimeBaseInitTypeDef 、
输出比较初始化结构体TIM_OCInitTypeDef、
输入捕获初始化结构体TIM_ICInitTypeDef 、
断路和死区初始化结构体TIM_BDTRInitTypeDef
高级控制定时器可以用到所有初始化结构体通用定时器不能使用TIM_BDTRInitTypeDef 结构体基本定时器只能使用时基结构体。接下来我们具体讲解下这四个结构体。
3.1 . TIM_TimeBaseInitTypeDef 时基结构体TIM_TimeBaseInitTypeDef 用于定时器基础参数设置与TIM_TimeBaseInit函数配合使用完成配置。 TIM_Prescaler定时器预分频器设置时钟源经该预分频器才是定时器计数时钟 CK_CNT它设定PSC 寄存器的值。计算公式为计数器时钟频率 (fCK_CNT) 等于fCK_PSC / (PSC[15:0] 1)可实现1 至65536 分频。TIM_CounterMode定时器计数方式可设置为向上计数、向下计数以及中心对齐。高级控制定时器允许选择任意一种。TIM_Period定时器周期实际就是设定自动重载寄存器ARR 的值ARR 为要装载到实际自动重载寄存器即影子寄存器的值可设置范围为0 至65535。TIM_ClockDivision时钟分频设置定时器时钟CK_INT 频率与死区发生器以及数字滤波器采样时钟频率分频比。可以选择1、2、4 分频。TIM_RepetitionCounter重复计数器只有8 位只存在于高级定时器。
3.2 TIM_OCInitTypeDef 输出比较结构体TIM_OCInitTypeDef 用于输出比较模式与TIM_OCxInit 函数配合使用完成指定定时器输出通道初始化配置。高级控制定时器有四个定时器通道使用时都必须单独设置。 TIM_OCMode比较输出模式选择总共有八种常用的为PWM1/PWM2。它设定CCMRx 寄存器OCxM[2:0]位的值。TIM_OutputState比较输出使能决定最终的输出比较信号OCx 是否通过外部引脚输出。它设定TIMx_CCER 寄存器CCxE/CCxNE 位的值。TIM_OutputNState:比较互补输出使能决定OCx 的互补信号OCxN 是否通过外部引脚输出。它设定CCER 寄存器CCxNE 位的值。TIM_Pulse比较输出脉冲宽度实际设定比较寄存器CCR 的值决定脉冲宽度。可设置范围为0 至65535。TIM_OCPolarity比较输出极性可选OCx 为高电平有效或低电平有效。它决定着定时器通道有效电平。它设定CCER 寄存器的CCxP 位的值。TIM_OCNPolarity比较互补输出极性可选OCxN 为高电平有效或低电平有效。它设定TIMx_CCER 寄存器的CCxNP 位的值。TIM_OCIdleState空闲状态时通道输出电平设置可选输出1 或输出0即在空闲状态(BDTR_MOE 位为0)时经过死区时间后定时器通道输出高电平或低电平。它设定CR2 寄存器的OISx 位的值。TIM_OCNIdleState空闲状态时互补通道输出电平设置可选输出1 或输出0即在空闲状态(BDTR_MOE 位为0)时经过死区时间后定时器互补通道输出高电平或低电平设定值必须与TIM_OCIdleState 相反。它设定是CR2 寄存器的OISxN 位的值。
3.3. TIM_ICInitTypeDef 输入捕获结构体TIM_ICInitTypeDef 用于输入捕获模式与TIM_ICInit 函数配合使用完成定时器输入通道初始化配置。如果使用PWM 输入模式需要与TIM_PWMIConfig 函数配合使用完成定时器输入通道初始化配置。 TIM_Channel捕获通道ICx 选择可选TIM_Channel_1、TIM_Channel_2、TIM_Channel_3 或TIM_Channel_4 四个通道。它设定CCMRx 寄存器CCxS 位 的值。 TIM_ICPolarity输入捕获边沿触发选择可选上升沿触发、下降沿触发或边沿跳变触发。它设定CCER 寄存器CCxP 位和CCxNP 位的值。TIM_ICSelection输入通道选择捕获通道ICx 的信号可来自三个输入通道分别为TIM_ICSelection_DirectTI、TIM_ICSelection_IndirectTI 或TIM_ICSelection_TRC。如果是普通的输入捕获4 个通道都可以使用如果是PWM输入则只能使用通道1 和通道2。它设定CCRMx 寄存器的CCxS[1:0]位的值。TIM_ICPrescaler输入捕获通道预分频器可设置1、2、4、8 分频它设定CCMRx寄存器的ICxPSC[1:0]位的值。如果需要捕获输入信号的每个有效边沿则设置1 分频即可。TIM_ICFilter输入捕获滤波器设置可选设置0x0 至0x0F。它设定CCMRx 寄存器ICxF[3:0]位的值。一般我们不使用滤波器即设置为0。
3. 4. TIM_BDTRInitTypeDef 断路和死区结构体TIM_BDTRInitTypeDef 用于断路和死区参数的设置属于高级定时器专用用于配置断路时通道输出状态以及死区时间。它与TIM_BDTRConfig 函数配置使用完成参数配置。这个结构体的成员只对应BDTR 这个寄存器有关成员的具体使用配置请参考手册BDTR 寄存器的详细描述。 TIM_OSSRState运行模式下的关闭状态选择它设定BDTR 寄存器OSSR 位的值。TIM_OSSIState空闲模式下的关闭状态选择它设定BDTR 寄存器OSSI 位的值。 TIM_LOCKLevel锁定级别配置 BDTR 寄存器LOCK[1:0]位的值。TIM_DeadTime配置死区发生器定义死区持续时间可选设置范围为0x0 至0xFF。它设定BDTR 寄存器DTG[7:0]位的值。 TIM_Break断路输入功能选择可选使能或禁止。它设定BDTR 寄存器BKE 位的值。TIM_BreakPolarity断路输入通道BRK 极性选择可选高电平有效或低电平有效。它设定BDTR 寄存器BKP 位的值。TIM_AutomaticOutput自动输出使能可选使能或禁止它设定BDTR 寄存器AOE位的值。
四、PWM互补输出实验 输出比较模式比较多这里我们以PWM 输出为例讲解并通过示波器来观察波形。实验中不仅在主输出通道输出波形还在互补通道输出与主通道互补的的波形并且添加了断路和死区功能。
4.1 硬件设计
根据开发板引脚使用情况并且参考下表中定时器引脚信息 使用高级定时器TIM1 的通道1及其互补通道作为本实验的波形输出通道对应选择PA8 和PB13 引脚。将示波器的两个输入通道分别与PA8 和PB13 引脚连接用于观察波形还有注意共地。为增加断路功能需要用到TIM1_BKIN 引脚这里选择PB12 引脚。程序我们设置该引脚为高电平有效当BKIN引脚被置高低电平的时候两路互补的PWM输出就被停止就好像是刹车一样。 4.2 软件设计 编程要点
定时器用到的GP IO 初始化 定时器时基结构体TIM_TimeBaseInitTypeDef 初始化 定时器输出比较结构体TIM_OCInitTypeDef 初始化定时器刹车和死区结构体TIM_BDTRInitTypeDef 初始化
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89512.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!