版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CKS32F103微控制器教学课件09定时器定时器(Timer)是MCU一个不可或缺且功能极其丰富的外设。定时器模块可提供精准的时间基准与稳定的信号输出。在自动化控制系统中,基于定时器,可实现电机转速调节、LED亮度控制、传感器数据的周期采集等多种功能。CKS32F103系列MCU的定时器模块不仅能够提供精准的时间基准,还能产生稳定、可编程的信号输出,用于事件计时、频率测量、PWM波形产生、输入捕获及输出比较等多种功能,广泛应用于系统时钟管理、外设驱动和控制任务,为复杂控制逻辑与实时响应提供了强有力的硬件支撑。CKS32F103包含1个高级控制定时器TIM1和3个通用定时器TIM2~TIM49.1
高级控制定时器9.1.1主要功能及结构项目功能描述计数器16位向上、向下、中心对齐模式的自动重载计数器预分频器16位可编程(可实时修改),分频范围1~65536重复计数器8位,支持重复周期输出控制,如电机控制通道数量4个输出通道:CH1~CH4,支持3个互补输出通道:CH1N~CH3N,适用于电机驱动PWM模式PWM模式1、PWM模式2,边沿对齐、中心对齐死区时间控制支持可编程死区插入输出极性主输出/互补输出,支持配置高/低有效极性刹车功能支持刹车输入(Break)、刹车响应配置、输出关闭主输出使能MOE控制全局PWM输出同步控制可配置为Master主模式或Slave从模式,用于多定时器同步触发输入支持外部ETR触发输入,或内部ITR触发触发输出TRGO,可作为其他定时器/模块的触发源中断功能更新中断、通道比较中断、触发中断、刹车中断、COM中断等DMA支持可在更新事件、比较事件等条件下触发DMA传输输入捕获每个通道可独立配置为输入捕获模式,包括边沿检测、滤波等输出比较多种模式,支持冻结、复位、置位、翻转、强制输出、PWM等TIM1的主要功能9.1
高级控制定时器9.1.1主要功能及结构TIM1的引脚配置TIM1引脚配置GPIO配置引脚TIM1_CHx输入捕获通道x=1..4浮空输入TIM1_CH1~4,对应PA8,PA9,PA10,PA11,或重映射后的PB13,PB14,PB15输出比较通道x=1..4推挽复用输出TIM1_CHxN互补输出通道x=1..3推挽复用输出TIM1_CH1N~3N,对应PB13,PB14,PB15TIM1_BKIN刹车输入浮空输入PA6或PB12TIM1_ETR外部触发时钟输入浮空输入PA12或PI8TIM1能产生占空比可调的PWM信号,且支持互补输出与可编程死区控制,从而有效避免功率器件上下桥臂的直通现象。此外,TIM1内置刹车输入、紧急关断和重复计数等高级控制功能,为电机驱动、功率变换及电力电子控制等应用提供了可靠保障9.1
高级控制定时器9.1.1主要功能及结构结构:由时基单元、输入捕获单元、输出比较/PWM单元、刹车和死区控制单元组成,可实现定时、计数、PWM输出、输入捕获及电机控制等功能9.1
高级控制定时器9.1.1主要功能及结构时基单元:集成16位计数器、预分频器和自动重装载寄存器。支持向上、向下及中心对齐三种灵活的计数模式,适配不同时序需求。输出比较/PWM单元:用于输出特定电平或PWM波形,与输入捕获单元共享4路通道OC1~OC4,包括捕获比较寄存器TIM1_CCR1~CCR4、输出比较模式控制器和输出控制电路。刹车和死区控制单元:TIM1的核心,由刹车和死区控制组成,专为电机控制设计刹车功能当外部刹车引脚BKIN检测到设定电平或内部故障信号触发时,立即强制所有OC输出为高阻或预设安全电平,保护功率器件输入捕获单元捕获外部信号的电平变化时刻,支持4路独立通道IC1~IC4,包括输入滤波器与边沿检测器、捕获预分频器和捕获比较寄存器组成9.6TIM1相关寄存器及关键位配置名称偏移地址关键位功能描述控制寄存器1:TIM1_CR10x00RW:控制定时器的基本操作模式,包括使能、计数方向、更新中断等。D0:CEN,计数器使能,1=使能计数器,0=禁止计数;D2:URS,选择UEV事件的源,如果使能了更新中断或DMA请求,1=仅计数器溢出产生更新中断,0=计数器溢出/下溢、设置UG位、从模式控制器产生的更新均产生;D4:DIR,1=向上计数;0=向下计数;D[6:5]:CMS[1:0],选择中央对齐模式;D7:ARPE,自动重装载预装载使能,1=TIMx_ARR值被装入缓冲器,0=ARR值立即生效,无缓冲;控制寄存器2:TIM1_CR20x04RW:设置定时器的主模式,输出空闲状态等;D[8:9]:MMS[1:0],主模式选择,用于触发其他外设;从模式控制寄存器:TIM1_SMCR0x08RW:配置定时器的从模式和触发源。D[2:0]:SMS[2:0],从模式选择;D[11:8]:ETF[3:0],外部触发滤波;DMA/中断使能寄存器:TIM1_DIER0x0CRW:控制定时器相关中断的使能与禁止,x=1~4;D0:UIE,更新中断使能,1=使能,0=禁止;D[1:4]:CCxIE,捕获/比较x中断使能,1=使能,0=禁止;D[x+8]:CCxDE,捕获/比较x的DMA请求使能,1=使能,0=禁止;状态寄存器:TIM1_SR0x10R:保存定时器的当前状态,包括各通道的中断标志;D0:UIF ,更新中断标志:1=发生更新事件,0=无事件D1:CC1IF,捕获比较1中断标志,1=TM1_CNT与TIM1_CCR1的值匹配,0=无匹配;事件生成寄存器:TIM1_EGR0x14RW:事件设置,如更新事件、捕获事件等,x=1~4;D[x+1]:CCxG,捕获/比较x事件产生,1=在通道CCx上产生一个捕获/比较事件,0=无动作;T1M1寄存器及关键位描述9.6TIM1相关寄存器及关键位配置捕获/比较模式寄存器1:TIM1_CCMR10x18RW:配置捕获/比较通道1和2的工作模式,输入捕获时同TIM1_CCMR2,输出比较时各位功能如下:D[1:0]:CC1S[1:0],捕获/比较1选择,定义通道的输入/输出方向,及输入脚的选择;00:CC1通道被配置为输出;01:CC1通道被配置为输入,IC1映射在TI1上;10:CC1通道被配置为输入,IC1映射在TI2上;11:CC1通道被配置为输入,IC1映射在TRC上;D3:OC1PE,输出比较1预装载使能:1=开启,0=禁止;D[6:4]:OC1M[2:0],输出比较通道1模式,参考表9‑4;D[9:8]、D11和D[14:12]对应输出比较通道2的CC2S、OC2PE、和OC2M[2:0];捕获/比较模式寄存器2:TIM1_CCMR20x1CRW:配置捕获/比较通道3和4的工作模式,输出比较时同TIM1_CCMR1,输入捕获时各位功能如下:D[3:2]:
IC3PSC[1:0],输入/捕获通道3预分频器,01=每2个事件,10=每4个事件,11=每8个事件,触发一次捕获;D[7:4]:IC3F[3:0],输入捕获通道3滤波器,0000=无滤波,最快,最灵敏,但容易误触发,1111=最强滤波,最慢,抗干扰能力最强;捕获/比较使能寄存器:TIM1_CCER0x20RW:配置捕获/比较通道的输出使能、极性等,x=0~3;D[4x+3:4x],设置输入/捕获x+1通道互补输出极性CCx+1NP、互补输出使能CCx+1NE、输出极性CCx+1P和输出使能CCx+1E位,每个通道4位;使能位1=允许,0=禁止;CCx+1P,1=有效低电平,0=有效高电平;CCx+1NP,1=OCx+1N低电平有效,0=OCx+1N高电平有效;计数器寄存器:TIM1_CNT0x24RW:定时器的当前计数值;D[15:0]:CNT[15:0],计数器的值9.6TIM1相关寄存器及关键位配置预分频器寄存器:TIM1_PSC0x28RW:设置定时器的预分频值;D[15:0]:PSC[15:0],预分频器的值;自动重装载寄存器:TIM1_ARR0x2CRW:设置定时器的自动重装载值(TIM1_CNT溢出时重装载);D[15:0]:ARR[15:0],计数器溢出值(决定PWM周期);重复计数寄存器:TIM1_RCR0x30设置定时器的重复计数值;D[7:0]:REP[7:0],重复计数器的值;捕获/比较寄存器1~4:TIM1_CCRx0x34~0x40存储捕获值/比较值,用于生成比较事件;x=1~4D[15:0]:CCRx[15:0],捕获/比较通道x的值,若CCx通道配置为输出时装入当前捕获/比较x寄存器的值;若CCx通道配置为输入,CCRx包含了由上一次输入捕获x事件传输的计数器值。刹车和死区时间寄存器:TIM1_BDTR0x44RW:配置死区时间和PWM输出控制;D[7:0]:死区发生器设置;D12:BKE,刹车使能,1=使能,0=禁止D13:BKP,刹车极性:1=高电平有效,0=低电平有效;D15:MOE,主输出使能,1=允许,0=禁止;DMA控制寄存器:TIM1_DCR0x48RW:配置定时器的DMA控制功能;D[4:0]:DBA[4:0],定义了DMA在连续模式下的基地址;D[12:8];
DBL[4:0]:在连续模式下的传送长度;DMA地址寄存器TIM1_DMAR0x4C存储DMA传输的地址;D[15:0]:DMAB[15:0]:DMA连续传送寄存器对TIM1_DMAR寄存器的读或写会导致对一些地址所在寄存器的存取操作;9.1
高级控制定时器9.1.2时钟源及配置
为TIM1提供计数器时钟基准的时钟源:内部时钟CK_INT、外部时钟模式1和外部时钟模式2或内部触发输入
ITRx配置CK_INT:将TIM1的时钟源选择为内部时钟模式、使能TIM1时钟、使能计数器。设置TIM1_SMCR的D4~D6位MMS为000,TIM1默认使用内部时钟源。置位RCC_APB2ENR的位TIM1EN使能TIM1时钟,置位TIM1_CR1的D0使能计数器。定时器通过对固定频率的时钟基准进行计数,实现时间测量、脉冲输出、频率测量等功能9.1
高级控制定时器9.1.2时钟源及配置2.外部时钟模式1:外部输入引脚如从通道1输入外部时钟,需设置TIM1_CCMR1寄存器的CC1S[1:0]位为01。配置TIM1_SMCR寄存器的位SMS[2:0]=111,选择从模式为触发模式。通道1输入时选择触发源TS[2:0]=101,一般设为TI1FP1,FP表示经过滤波和极性选择的信号。通过定时器的输入通道TIM1_CH1~CH3接收外部脉冲信号,将外部脉冲信号直接作为计数器TIM1_CNT的计数基准配置外部时钟源时需将对应的通道设置为输入模式,并将TIM1的时钟源选择为外部模式19.1
高级控制定时器9.1.2时钟源及配置3.外部时钟模式2:外部触发输入ETR配置时钟源为外部时钟模式2包括:
TIM1的时钟源选择为外部时钟模式2和将TIM1_ETR引脚设为输入模式。设置TIM1_SMCR的位TS[2:0]=111选择外部时钟模式2,若要设置极性或加滤波,可配置位ETP和ETF通过定时器的特定输入引脚TIM1_ETR接收外部时钟信号,将其作为计数器TIM1_CNT的时钟源。TIM1_CNT根据TIM1_ETR输入的脉冲边沿进行递增或递减计数触发边沿可为上升沿、下降沿或双边沿。外部时钟模式可应用于高精度计数,如红外模块或霍尔传感器的计数。9.1
高级控制定时器9.1.2时钟源及配置4.内部触发输入
ITRx配置时钟源为内部触发输入:TIM1的时钟源选择为内部触发输入、TIM1为从模式,触发的定时器为主模式。设置TIM1_SMCR的TS[2:0]=000,001,010和011,分别对应于ITR0~ITR3的触发输入TIM1可以通过内部连接的其他定时器的触发信号
ITRx
作为时钟源或启动信号。属于定时器从模式的一种配置,利用定时器间的同步机制进行控制。该方式常用于多定时器级联、主从同步、PWM联动等应用场景9.1
高级控制定时器9.1.3时基单元时基单元:负责根据时钟源产生定时和计数的基础时间基准(请结合结构图分析),由:预分频器TIM1_PSC、计数器寄存器TIM1_CNT、自动重装载寄存器TIM1_ARR重复计数寄存器TIM1_RCR构成TIM1_PSC:
对输入时钟源进行分频,降低计数器的计数频率,分频系数为TIM1_PSC值+1。TIM1_PSC=0,分频系数=1,时钟不变。经过预分频计数器后的
CK_CNT=时钟源频率/(PSC+1)TIM1_CNT:存储当前的计数值,可实现向上/向下/中央对齐模式计数,是时基单元的计数核心。选定的时钟源进入预分频器,经分频后得到计数器寄存器TIM1_CNT的时钟CK_CNT,当TIM1_CNT计数达到TIM1_ARR时,触发单次溢出。当TIM1_RCR>0,重复计数器递减,直到TIM1_RCR=0时,触发更新事件UEV。9.1
高级控制定时器9.1.3时基单元时基单元:负责根据时钟源产生定时和计数的基础时间基准(请结合结构图分析),由:预分频器TIM1_PSC、计数器寄存器TIM1_CNT、自动重装载寄存器TIM1_ARR重复计数寄存器TIM1_RCR构成8位重复计数寄存器TIM1_RCR:用于延长更新事件的周期。重复次数=TIM1_RCR值+1。如RCR=2时,需要3次计数器溢出才触发1次UEV。仅TIM1支持此寄存器。TIM1_ARR:存储计数器的最大计数值,是根据定时时间和时钟源频率计算的定时初值,决定计数器的溢出时间和触发更新事件UEV。TIM1_ARR支持预装载寄存器缓冲,通过控制寄存器TIM1_CR1的自动重装载预装载允许位ARPE设置使能情况,预装载寄存器即影子寄存器。9.1
高级控制定时器9.1.3时基单元更新事件UEV:是定时器内部的基础事件,计数溢出时会自动触发UEV,也可以通过置位TIMx_EGR
的D0位进行软件强制触发。UEV可通过定时器状态寄存器TIM1_SR的UIF位判断,或TIM1_DIER的UIE位使能更新中断。当发生UEV时,相关寄存器被更新,自动执行以下操作:TIM1_CNT复位:根据计数模式重置TIM1_CNT,向上模式重置为0;向下模式重置为TIM1_ARR值;中央对齐模式反转计数方向,向上变为向下或向下变为向上。状态标记:定时器状态寄存器TIM1_SR的D0位UIF位被置1,用于软件查询UEV是否发生。中断触发:若使能了更新中断,即置位了TIM1_DIER寄存器的UIE位,则UEV会触发定时器中断,中断触发根据具体情况选择。预分频器同步:若配置了预分频器TIM1_PSC,UEV会同步预分频器的更新,以确保分频值在UEV时生效,避免中途修改导致计数异常,该步可选9.1
高级控制定时器9.1.4计数器模式及配置TIM1支持16位向上、向下、中央对齐自动装载三种计数器模式。中央对齐模式通常用于互补PWM输出中实现对称驱动
模式TIM1_CR1.CMS[1:0]TIM1_CR1.DIR溢出或中断条件向上计数000TIM1_CNT从0增加到TIM1_ARR向下计数001TIM1_CNT从TIM1_ARR减小到0中央对齐模式101×TIM1_CNT:0增加到TIM1_ARR减小到0,TIM1_CNT=0触发模式210×TIM1_CNT:0增加到TIM1_ARR减小到0,TIM1_CNT=TIM1_ARR触发模式311×TIM1_CNT:0增加到TIM1_ARR减小到0,TIM1_CNT=0和TIM1_CNT=ARR触发计数器模式9.1
高级控制定时器9.1.4计数器模式及配置向上计数模式TIM1_CNT从0开始按时钟基准的频率递增,当计数到TIM1_ARR中预设的自动重装载值时,触发更新事件UEV,随后TIM1_CNT被重置为0并重新开始计数。适用于定时中断、PWM输出等基础定时场景。2.向下计数模式TIM1_CNT从TIM1_ARR中的自动重装载值开始递减,当计数到0时,触发UEV,随后TIM1_CNT重置为TIM1_ARR值并重新递减。适用于需要精确控制下降沿触发的场景,如特定时序同步。3.中央对齐模式TIM1_CNT先向上计数到TIM1_ARR中的自动重装载值,触发UEV后向下计数到0,再次触发UEV后又向上计数,形成对称计数。根据UEV触发时机,分为3种中央对齐模式,通过TIM1_CR1寄存器的CMS位配置,如表9‑3所示,适用于对称PWM输出,如电机控制的三相PWM
9.1
高级控制定时器9.1.4计数器模式及配置4.模式配置代码//配置向上计数TIM1->CR1&=~(TIM_CR1_DIR|TIM_CR1_CMS);//DIR=0(向上),CMS=00(禁用中央对齐)//配置向下计数TIM1->CR1&=~TIM_CR1_CMS;//禁用中央对齐TIM1->CR1|=TIM_CR1_DIR;//DIR=1(向下)//配置中央对齐模式3TIM1->CR1&=~TIM_CR1_DIR;//中央对齐模式下DIR位无效,由硬件控制TIM1->CR1|=TIM_CR1_CMS_1|TIM_CR1_CMS_0;//CMS=11(上下溢出均触发更新)TIM1->CR1|=TIM_CR1_CEN;//使能计数器9.2输入捕获功能及应用输入捕获:是一种通过定时器记录外部信号变化时间的方式。当外部信号在指定引脚出现预设边沿时,硬件自动将定时器当前的计数值TIM1_CNT锁存到捕获比较寄存器TIM1_CCRx中,并可触发中断或DMA请求。通过计算两次捕获的计数值差值,结合定时器的计数时钟频率,即可推算出信号的时间参数,如周期=差值×时钟周期9.2输入捕获功能及应用9.2.1输入捕获组成结构TIM1提供4个输入捕获通道:TIM1_CH1~CH4,可独立配置为输入捕获模式,但需配置为复用功能。也可利用通道连接功能将多个通道组合使用,如测量占空比时需同时使用CH1和互补通道CH1N。每个输入捕获通道包含:输入滤波器边沿检测器输入预分频器捕获比较寄存器触发逻辑与中断模块协同实现信号检测与捕获。输入滤波器:用于滤除输入信号中的高频噪声,避免误触发,通过设置滤波参数实现滤波效果。它对输入信号进行连续采样,只有当连续N个采样点都为有效电平时,才确认信号有效。9.2输入捕获功能及应用9.2.1输入捕获组成结构每个输入捕获通道包含:输入滤波器边沿检测器输入预分频器捕获比较寄存器触发逻辑与中断模块输入滤波器:滤波参数通过TIM1_CCMRx寄存器的位ICxF[3:0]设置。如
ICxF=0011表示连续8个采样点电平一致时确认信号有效。滤波参数依据输入信号的噪声特性选择,高频噪声多时可适当增加连续采样次数以增强抗干扰能力PWM
边沿检测器:决定捕获触发的信号边沿,通过TIM1_CCER设置。TIM1_CCER的位CCxP为0上升沿捕获,为1时下降沿捕获。位CCxP
结合CCxNP
位实现双边沿捕获,可同时检测上升沿和下降沿输入预分频器:用于降低捕获频率,仅在每n个有效边沿时才触发一次捕获,避免频繁中断。通过TIM1_CCMRx的位
ICxPS[1:0]设置n的数值。当ICxPS=01表示每2个边沿捕获一次,ICxPS=11表示每8个边沿捕获一次9.2输入捕获功能及应用9.2.2输入捕获应用单脉冲宽度测量高电平脉冲宽度测量:配置捕获通道为上升沿捕获。捕获脉冲起始时刻的计数值,记为CCR1,触发后立即切换为下降沿捕获,捕获脉冲结束时刻记为CCR2,则脉冲宽度=(CCR2-CCR1)×计数器时钟周期。低电平的宽度测量则相反设置2.频率和周期测量配置通道为上升沿连续捕获,捕获第n个上升沿时刻的计数值为CCR_n、第n+1个上升沿时刻为CCR_n+1,则信号周期=(CCR_n+1-CCR_n)×计数器时钟周期。若信号周期较长导致两次捕获之间计数器的计数值溢出,需通过溢出中断记录溢出次数并进行修正,则信号周期=[(CCR_n+1-CCR_n)+溢出次数×(TIM1_ARR+1)]×计数器时钟周期。9.2输入捕获功能及应用9.2.2输入捕获应用3.占空比测量脉冲信号的占空比需测量信号的高电平时间和周期。首先捕获上升沿记录为CCR1,然后切换为下降沿捕获即高电平结束时刻,记录为CCR2,然后捕获下一上升沿即周期结束时刻记为CCR3,则占空比=(CCR2-CCR1)/(CCR3-CCR1)×100%。9.2输入捕获功能及应用9.2.3基于输入捕获的信号周期测量本例程基于TIM1_CH1通道测量信号周期,使用TIM1_CH1的默认引脚PA8。系统时钟频率为72MHz,定时器的时钟频率=72MHz,所以预分频器设置为71,计数频率=1MHz,即1μs的分辨率。为实现测量目标,需要开启时钟并配置GPIO引脚复用、定时器时基单元、捕获通道及开启中断/DMA、启动定时器和ISR处理等9.2输入捕获功能及应用9.2.3基于输入捕获的信号周期测量#include"cs32f10x.h"uint16_tcapture_val=0;uint16_tlast_capture=0;uint32_tperiod=0;/*GPIO初始化(PA8->TIM1_CH1输入捕获)*/voidGPIO_Config(void);/*NVIC配置*/voidNVIC_Config(void);/*TIM1输入捕获配置*/voidTIM1_InputCapture_Config(void)//ISR中断服务程序voidTIM1_CC_IRQHandler(void){if(TIM_GetITStatus(TIM1,TIM_IT_CC1)==SET){
capture_val=TIM_GetCapture1(TIM1);//读取捕获值//自动处理溢出情况period=(uint16_t)(capture_val-last_capture);
last_capture=capture_val;
TIM_ClearITPendingBit(TIM1,TIM_IT_CC1);}}/*开启时钟和GPIO初始化(PA8->TIM1_CH1输入捕获)*/voidGPIO_Config(void){
GPIO_InitTypeDef
GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入
GPIO_Init(GPIOA,&GPIO_InitStructure);}9.2输入捕获功能及应用9.2.3基于输入捕获的信号周期测量/*NVIC配置*/voidNVIC_Config(void){
NVIC_InitTypeDef
NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel=TIM1_CC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);}/*TIM1输入捕获配置*/voidTIM1_InputCapture_Config(void){
TIM_TimeBaseInitTypeDef
TIM_TimeBaseStructure;
TIM_ICInitTypeDef
TIM_ICInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//TIM1基本定时配置
TIM_TimeBaseStructure.TIM_Prescaler=71;//72MHz/72=1MHz(1us)
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period=0xFFFF;//最大周期
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);9.2输入捕获功能及应用9.2.3基于输入捕获的信号周期测量//TIM1_CH1输入捕获配置
TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//上升沿捕获
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter=0x0;
TIM_ICInit(TIM1,&TIM_ICInitStructure);//使能捕获中断
TIM_ITConfig(TIM1,TIM_IT_CC1,ENABLE);//使能定时器
TIM_Cmd(TIM1,ENABLE);}intmain(void){
GPIO_Config();
NVIC_Config();TIM1_InputCapture_Config();while(1){//在主循环里可以利用捕获到的period计算频率//信号周期(us)=period//信号频率(Hz)=1,000,000/period}}9.3.1输出比较模式9.3
输出比较功能及应用TIM1的输出比较:通过实时比较计数器TIM1_CNT的值与预设的捕获比较寄存器TIM1_CCRx的值,在两者相等时自动控制对应输出引脚的电平变化。可用于生成精确的定时信号、脉冲序列、PWM波形或触发外部事件。输出模式由TIM1的捕获/比较模式寄存器TIM1_CCMR1/2中的位OCxM[2:0]配置,其中x=1~4,对应通道CH1~CH4。具体输出比较模式及应用如表9‑4所示,每个通道都可独立设置输出比较模式。通过配置各通道的比较值和输出模式,能实现多通道同步或异步的复杂时序控制
9.3.1输出比较模式9.3
输出比较功能及应用模式TIM1_CCMR1/2OCxM[2:0]匹配条件TIM1_CNT=TIM1_CCRx应用基本模式冻结000OCxREF保持不变化仅用于捕获功能,不用于输出控制置位001匹配时设置通道x为有效电平,强制OCxREF为高电平单次触发信号、电平同步复位010匹配时设置通道1为无效电平,强制OCxREF为低电平复位信号、终止标志翻转011匹配时翻转OCxREF的电平方波生成、频率分频强制为低电平100强制为无效电平,强制OCxREF为低,与匹配无关紧急关闭控制强制为高电平101强制为有效电平,强制OCxREF为高,与匹配无关强制启动控制PWM模式PWM模式1110向上计数时,一旦TIM1_CNT<TIM1_CCRx时OCxREF为高电平,否则为低电平;在向下计数时,一旦TIM1_CNT>TIM1_CCRx时OCxREF为低电平,否则为高平。常规PWM输出,如电机调速、LED调光PWM模式2111向上计数时,一旦TIM1_CNT<TIM1_CCRx时OCxREF为低电平,否则为高电平;向下计数时,一旦TIM1_CNT>TIM1_CCRx时OCxREF为高电平,否则为低电平。9.3.1输出比较模式OCx
和
OCxN
引脚的状态与OCxREF
的关系可表示为:OCx=OCxREFXORCCxPOCxN=OCxREFXORCCxNPTIM1_CCER中CCxP
为0时OCx
高电平有效,为1时OCx
低电平有效。设置极性配置位CCxP
和CCxNP
的目的是为了适应每个人不同的有效电平喜好9.3
输出比较功能及应用输出引脚和输出信号输出引脚和互补输出引脚分别为TIM1_CHx和TIM1_CHxN如,TIM1的OC1通道的TIM1_CH1和TIM1_CH1N的默认引脚为PA8和PB139.3.1输出比较模式强制置位和强制复位模式的状态与匹配条件无关基本模式输出配置:使能相关GPIO和TIM1的时钟并配置输出引脚。TIM1_CCER的
CCxE=1使能输出到引脚,刹车与死区寄存器TIM1_BDTR的位MOE=1使能主输出,TIM1_CCMR1中的位OCxM[2:0]为基本模式,启动TIM1后满足条件时即可输出。9.3
输出比较功能及应用2.基本模式:置位、复位、翻转、冻结、强制置位和强制复位置位、复位、翻转、冻结状态与匹配条件TIM1_CNT=TIM1_CCRx有关,匹配时状态变化。只有CCxE=1和MOE=1、没有刹车触发的条件下,OCx
才会被输出到GPIO引脚,其它输出模式设置与此相同9.3.1输出比较模式PWM模式输出配置:使能相关GPIO和TIM1的时钟并配置输出引脚。设置TIM1_CCER的
CCxE=1使能输出到引脚TIM1_BDTR的位MOE=1使能主输出TIM1_CCMRx中的位
OCxPE=1使能寄存器的预装载功能设置TIM1_CCMR1中的位OCxM[2:0]为PWM模式启动TIM1后即可输出占空比可调的PWM波形9.3
输出比较功能及应用3.PWM模式::PWM模式是在输出比较的基础上,结合自动重装载功能实现连续波形输出,在0~TIM1_ARR计数值的一个周期内,输出占空比可调的矩形波信号。PWM模式1和PWM模式2两种模式只有CCxE=1和MOE=1、没有刹车触发的条件下,OCx
才会被输出到GPIO引脚9.3.1输出比较模式互补输出配置:使能相关GPIO和TIM1的时钟并配置输出引脚设置TIM1_CCER的CCxNE=1使能互补输出到引脚TIM1_BDTR寄存器里的位MOE=1使能主输出TIM1_CCMRx中的位
OCxPE=1使能寄存器的预装载功能,TIM1_CCMR1中的位
OCxM[2:0]为PWM模式启动TIM1后输出互补PWM波形9.3
输出比较功能及应用4.互补输出模式:输出两路互补的PWM波形,一路高电平时,另一路保持低电平TIM1_CHx和TIM1_CHxN输出互补信号只有CCxE=1和MOE=1、没有刹车触发的条件下,OCx
才会被输出到GPIO引脚9.3.1输出比较模式死区插入配置:使能相关GPIO和TIM1的时钟并配置输出引脚设置TIM1_BDTR的死区时间DTG[7:0]
位MOE=1使能主输出TIM1_CCMRx中的位
OCxPE=1使能寄存器的预装载功能TIM1_CCMR1中的位OCxM[2:0]为PWM模式启动TIM1硬件自动在互补波形间加入保护延时9.3
输出比较功能及应用5.死区插入:为避免全桥/半桥驱动时上下管直通,TIM1的死区控制模块可在互补波形间自动插入延时。是PWM模式的高级应用。死区控制模块位于PWM发生电路的后端,在输出比较PWM模式波形生成之后,由硬件逻辑自动在互补波形里加延时。只有CCxE=1和MOE=1、没有刹车触发的条件下,OCx
才会被输出到GPIO引脚9.3.1输出比较模式刹车功能配置:开启GPIOA和TIM1的时钟将PA6配置为浮空或上拉/下拉输入模式TIM1_BDTR中配置BKE=1使能刹车功能设置BKP选择刹车输入极性设置OSSR/OSSI确定刹车时的输出状态MOE=1使能主输出正常配置PWM模式并开启TIM1,正常运行时输出PWM,若刹车触发则立即进入保护状态位MOE=1使能主输出9.3
输出比较功能及应用6.刹车功能和自动输出使能:外部刹车输入引脚为PA6。当检测到引脚上的有效电平时,定时器会立即关闭所有PWM输出或强制为安全电平,保护系统免受过流、过压等异常影响。是PWM模式的高级应用。9.3.1输出比较模式刹车功能配置:开启GPIOA和TIM1的时钟将PA6配置为浮空或上拉/下拉输入模式TIM1_BDTR中配置BKE=1使能刹车功能设置BKP选择刹车输入极性设置OSSR/OSSI确定刹车时的输出状态MOE=1使能主输出正常配置PWM模式并开启TIM1正常运行时输出PWM信号,若刹车触发则立即进入保护状态9.3
输出比较功能及应用6.刹车功能和自动输出使能:外部刹车输入引脚为PA6。当检测到引脚上的有效电平时,定时器会立即关闭所有PWM输出或强制为安全电平,保护系统免受过流、过压等异常影响。是PWM模式的高级应用。9.3.1输出比较模式当AOE=1时,如果刹车事件发生导致主输出MOE关闭,一旦刹车条件消除,定时器会自动恢复主输出(MOE被重新置1),PWM信号即可再次输出。适用于对连续运行要求较高的场景如电机控制,刹车条件解除后系统自动恢复当AOE=0时,刹车触发后MOE清零,恢复时必须由软件手动设置MOE才能重新使能输出。适用于安全要求更高的场景,需要人工/软件确认无异常后才能重新输出9.3
输出比较功能及应用保护状态解除后PWM可继续自动输出,或软件干预后再输出,输出状态可通过TIM1_BDTR寄存器的自动输出使能位AOE设置9.3.1输出比较模式9.3
输出比较功能及应用定时器输出比较(OutputCompare,OC)│├──基本模式│
├──冻结(Frozen)→TIM1_CNT=
TIM1_CCR时无动作│
├──强制为高(ForceActive)与TIM1_CNT=
TIM1_CCR无关│
├──强制为低(ForceInactive)与TIM1_CNT=
TIM1_CCR无关│
├──翻转(Toggle)→TIM1_CNT=
TIM1_CCR时翻转电平│
├──匹配置位(Set)→TIM1_CNT=
TIM1_CCR时输出置1│
└──匹配清零(Clear)→TIM1_CNT=
TIM1_CCR时输出清0│└──PWM模式
├──PWM1模式
→CNT<CCR有效电平
├──PWM2模式
→CNT<CCR无效电平
│
└──高级扩展功能(仅TIM1)
├──互补输出(CH1N~CH3N)
├──死区插入(Dead-Time)
├──刹车输入(Break)
└──自动输出使能(AOE)输出比较模式关系图9.3.2基于输出比较的PWM输出9.3
输出比较功能及应用本实例实现带死区的互补PWM周期脉冲输出。系统时钟为72MHz,TIM1的计数频率为72MHz,PWM频率为20kHz,占空比为50%,TIM1_CH1通过引脚PA8输出,TIM1_CH1N通过PB13互补输出,死区时间=1µs,保证两路不会直通。通过TIM1_PSC和TIM1_ARR设置计数器时钟为20kHz,输出比较模式采用PWM模式1。程序中需要配置GPIO、时基单位、输出比较模式等#include"cs32f10x.h"voidTIM1_PWM_CompOut_Init(void){/*1.使能GPIO时钟和TIM1时钟*/RCC->APB2ENR|=(1<<11);//TIM1时钟RCC->APB2ENR|=(1<<2);//GPIOA时钟RCC->APB2ENR|=(1<<3);//GPIOB时钟RCC->APB2ENR|=(1<<0);//AFIO时钟9.3.2基于输出比较的PWM输出9.3
输出比较功能及应用/*2.配置PA8(CH1),PB13(CH1N)为复用推挽输出*/GPIOA->CRH&=~(0xF<<0);GPIOA->CRH|=(0xB<<0);//PA8复用推挽50MHzGPIOB->CRH&=~(0xF<<20);GPIOB->CRH|=(0xB<<20);//PB13复用推挽50MHz/*3.配置TIM1基本计数参数*/TIM1->PSC=0;//预分频=0→计数频率72MHzTIM1->ARR=3600-1;//自动重装载值=3600→
fPWM=72M/3600=20kHzTIM1->CCR1=1800;//占空比50%(CCR1/ARR)/*4.配置输出比较模式为PWM1*/TIM1->CCMR1&=~(7<<4);//OC1M清零TIM1->CCMR1|=(6<<4);//OC1M=110(PWM1)TIM1->CCMR1|=(1<<3);//OC1PE=1使能预装载9.3.2基于输出比较的PWM输出9.3
输出比较功能及应用/*5.使能主输出CH1和互补输出CH1N*/TIM1->CCER|=(1<<0);//CC1E=1→CH1输出使能TIM1->CCER|=(1<<2);//CC1NE=1→CH1N输出使能//可选极性配置://TIM1->CCER|=(1<<1);//CC1P=1→CH1反相//TIM1->CCER|=(1<<3);//CC1NP=1→CH1N反相/*6.配置死区时间/主输出使能*/TIM1->BDTR|=(1<<15);//MOE=1主输出使能TIM1->BDTR|=(72&0xFF);//DTG=72死区时间(72/72MHz=1us)/*7.自动重载寄存器使能*/TIM1->CR1|=(1<<7);//ARPE=1TIM1->EGR|=(1<<0);//UG=1更新事件,装载寄存器/*8.使能计数器*/TIM1->CR1|=(1<<0);//CEN=1}9.4通用定时器功能通用定时器TIM2~TIM4,功能见表9‑5。通过定时器预分频器和RCC时钟控制器预分频器,可以灵活调整脉冲长度和波形周期,范围从数微秒到数毫秒。每个定时器都是完全独立的单元,拥有各自的寄存器,也可以通过同步机制实现协同操作。其基本功能和寄存器配置方式与TIM1类似,但TIM2~TIM4不具备互补输出、死区插入、刹车保护和自动输出使能等高级功能
9.4通用定时器功能序号项目功能描述1计数器16位向上、向下、中心对齐模式的自动重载计数器
2预分频器16位,可配置,分频范围1~655363通道数量每个定时器有4个通道CH1~CH44PWM模式PWM模式1、PWM模式2,边沿对齐、中心对齐(部分型号)5输入捕获支持边沿检测、滤波、分频,测频率/周期/脉宽6输出比较可配置为冻结、匹配置位、清零、切换等多种输出行为7单脉冲模式支持单次输出,适用于脉冲控制8计数模式支持向上、向下、向上/向下计数(中心对齐模式)9中断功能更新中断、通道比较中断、触发中断10DMA支持可在更新、比较事件下触发DMA搬运(如更新PWM占空比)11同步控制可作为主模式(Master)或从模式(Slave)用于定时器同步12触发输入支持内部触发(ITR)或外部触发(TIx、ETR,部分型号)13触发输出可配置TRGO输出信号给其他模块(如ADC、其他TIM)14极性控制输出比较或捕获输入支持极性设置(上升/下降沿)15
寄存器锁定不支持高级定时器的寄存器锁定功能通用定时器的功能9.4通用定时器功能高级控制定时器和通用定时器的区别功能特性高级定时器TIM1通用定时器TIM2~TIM4定时/计数功能支持支持PWM输出支持,含互补输出支持,仅主通道输出互补输出(CHxN)支持,用于半桥/全桥驱动不支持死区时间(Dead-time)支持,硬件自动插入不支持刹车输入(Break)支持,外部故障保护,PA6为TIM1_BKIN不支持自动输出使能(AOE)支持,可配置故障恢复后自动恢复输出不支持主输出使能(MOE)需要置位才能真正输出波形不需要输出比较/输入捕获支持支持DMA请求支持支持中断支持支持同步触发(触发/从模式)支持支持应用场景高安全性与复杂驱动控制,如电机驱动、逆变器常规定时、PWM、输入捕获等一般控制任务9.4SysTick系统定时器SysTick
是ARMCortex-M内核自带的24位轻量级定时器,具有自动重载和溢出中断功能,也称嘀嗒定时器。SysTick
由ARM公司统一设计,存在于所有Cortex-M内核MCU中,因此使用方式统一,软件具有良好的可移植性。SysTick
常用于实现延时、周期性任务触发,如毫秒级定时、简单延时以及RTOS系统节拍产生,片上定时器TIMx
更适合外设控制、PWM波形输出、输入信号测量等复杂场景的应用SysTick
的时钟源可选择内核时钟HCLK或HCLK/8。当计数器递减到0时,可触发SysTick
异常中断。通过中断服务程序处理定时任务,也可仅置位状态标志位,由软件查询实现定时控制
9.4SysTick系统定时器功能与定位提供一个简单、统一、高精度的时间基准,是嵌入式系统中不可或缺的基础外设。操作系统心跳
为RTOS(如FreeRTOS)提供任务调度的时间片,是系统多任务运行的基础。精准延时实现
实现微
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 好学生评选办法
- 公关服务公司基础客户服务操作规范管理制度
- 工业软件公司招投标文件管理制度
- 2026电子知识面试题目及答案
- 工业空压机运行维护合同(2026年发电厂)
- 金融市场分析与投资风险控制指南
- Unit 8 Making a Difference Section B (1a- reading plus) 课件(内嵌视频)2025-2026学年人教版英语八年级下册
- 教师招聘(中学)考试通关秘籍题库带解析答案
- 烟草证件管理办理工作手册
- 物业维修与养护管理手册
- 加油站紧急疏散预案(6篇)
- 防洪防汛桌面演练
- 火灾现场勘验规则 XF839-2009
- 汽车使用性能与检测(第三版)全套课件
- MOOC 信息社会与人工智能-山东大学 中国大学慕课答案
- 中华传统文化与人生修养智慧树知到期末考试答案章节答案2024年四川大学
- 云南中云勐滨糖业有限公司日处理甘蔗4200吨生产线技改项目环评报告
- 《无机化学》课件-第19章 铜副族元素和锌副族元素
- 如愿二声部合唱简谱文档
- GB/T 2888-2008风机和罗茨鼓风机噪声测量方法
- 桥梁施工监理实施细则
评论
0/150
提交评论