第6章stm32通用定时器2

上传人:今*** 文档编号:107614305 上传时间:2019-10-20 格式:PPT 页数:70 大小:4.49MB
返回 下载 相关 举报
第6章stm32通用定时器2_第1页
第1页 / 共70页
第6章stm32通用定时器2_第2页
第2页 / 共70页
第6章stm32通用定时器2_第3页
第3页 / 共70页
第6章stm32通用定时器2_第4页
第4页 / 共70页
第6章stm32通用定时器2_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《第6章stm32通用定时器2》由会员分享,可在线阅读,更多相关《第6章stm32通用定时器2(70页珍藏版)》请在金锄头文库上搜索。

1、退出,嵌入式单片机原理及应用,电气工程学院仪器科学与工程系,1 ARM嵌入式系统概述 2 STM32单片机结构和最小系统 3 基于标准外设库的C语言程序设计基础 4 STM32通用输入输出GPIO 5 STM32外部中断 6 STM32通用定时器 7 STM32通用同步/异步收发器USART 8 直接存储器存取DMA 9 STM32的模数转换器ADC 10 STM32的集成电路总线I2C 11 STM32的串行外设接口SPI,第6章 STM32通用定时器,6.1 STM32定时器的组成结构 6.2 通用定时器相关寄存器 6.3 通用定时器的功能及工作方式 6.4 通用定时器应用设计,退出,ST

2、M32定时器类型,按功能划分 2个高级控制定时器 TIM1 TIM8 可分配6个通道的三相PWM发生器(多用于电机控制) 4个通用定时器 TIM2 TIM3 TIM4 TIM5 每个定时器有4个输入捕获/输出比较/PWM/脉冲计数 2个基本定时器 TIM6 TIM7 主要用于产生DAC触发信号,6.1 STM32定时器的组成结构, 2个看门狗定时器 独立看门狗 窗口看门狗 系统时基定时器 SysTick 24位递减计数器 自动重加载 常用于产生延时 us级 ms级,6.1 STM32定时器的组成结构,6.1 STM32定时器的组成结构,STM32系列芯片最多包含8个定时/计数器。其中: TIM

3、6和TIM7为基本定时器;TIM2TIM5为通用定时器 TIM1和TIM8为高级控制定时器,功能最强。,基本概念,高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。 死区就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁。这段延迟时间就是死区。 刹车信号:控制电机用,需要紧急停止时类似能耗制动的方式让电机刹车,6.1 STM32定时器的组成结构,基本定时器(TIM6,TIM7):基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程

4、预分频器驱动。 它们可以作为通用定时器提供时间基准,可以为数模转换器(DAC) 提供时钟。,通用定时器(TIM2-TIM5),通用定时器要比基本定时器复杂,它除了基本的定时器的功能外,还具有测量输入信号的脉冲长度( 输入捕获) 或者产生输出波形( 输出比较和PWM) 。,6.1 STM32定时器的组成结构,时钟源,时钟单元,捕获比较通道,6.1 STM32定时器的组成结构,高级定时器(TIM1,TIM8):高级定时器不但具有基本,通用定时器的所有功能,还具有控制交直流电动机的功能,比如它可以输出6路互补带死区的信号,刹车功能等等,6.2 通用定时器相关寄存器,定时器的功能是通过操作相应寄存器实

5、现的,寄存器包括: 1. 计数寄存器(16位) : 计数器(TIMx_CNT) 预分频器(TIMx_PSC) 自动重载寄存器(TIMx_ARR) 计数器可以向上计数、向下计数或者向上向下双向计数。 2. 控制寄存器(16位): 4个捕捉/比较寄存器(TIMx_CCR1、TIMx_CCR2、TIMx_CCR3和TIMx_CCR4),计数器寄存器:TIMx_CNT,16位的计数器,设定值从165535,6.2 通用定时器相关寄存器,计数器模式,向上计数模式:计数器从0计数到设定的数值,然后重新从0开始计数并且产生一个计数器溢出事件。 向下计数模式:计数器从设定的数值开始向下计数到0,然后自动从设定

6、的数值重新向下计数,并产生一个向下溢出事件。 中央对齐模式(向上/向下计数):计数器从0开始计数到设定的数值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;再从0开始重新计数。,预分频器寄存器:TIMx_PSC,预分频器可以将计数器的时钟频率(CK_PSC)按1到65536之间的任意值分频,它是一个16位寄存器。 这个寄存器带有缓冲区,它能够在工作时被改变。新的预分频器参数在下一次更新事件到来时被采用。,6.2 通用定时器相关寄存器,什么是“更新事件(UEV)”?,“更新事件(UEV)” :当计数器溢出的时候产生一次UEV事件,另外还可以在事件寄存器TMx_EGR中的

7、UG位软件写入产生一次事件更新; 当UEV事件来临时,所有影子寄存器载入寄存器中的值,从而实现所有带影子寄存器的同步更新;而不启用影子寄存器的情况下,只能实现写那个寄存器更新那个寄存器,这可能造成相关联的寄存器产生冲突矛盾。,什么是“影子寄存器”?,在图中,可以看到PSC、ARR、CCRx,这三类寄存器框框下都有个黑影 有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器); 当程序在运行中改写PSC 时

8、,写入的值可能会大于或小于目前正在运行的寄存器中的数值,真实运行的正是这个影子寄存器中的值,而程序写入的是可访问的预装载寄存器,只有当产生一个更新事件时影子寄存器才会读入访问寄存器中的值,这样就可以防止突然修改而产生的非正常中断或不会中断等异常问题。,自动装载寄存器:TIMx_ARR,自动装载寄存器是预先装载的(要在使能定时器之前设定好),根据在TIMx_CR1寄存器中自动装载使能位(ARPE)的设置,立即或者在每次更新事件时传送到计数器。,STM32定时器的工作频率,CK_CNT 表示定时器工作频率 TIMx_PSC 表示分频系数 则定时器的工作频率计算公式为: CK_CNT=定时器时钟频率

9、/ (TIMx_PSC +1) 由此我们可得到STM32单片机1个时钟周期为: T=1/ CK_CNT,例如普通定时器模块的时钟为72MHz,分频比(PSC)为7199,那么我们想要得到一个1秒钟的定时,定时计数器(ARR)的值需要设定为:TIMx_ARR = 10 000 因为72 000 000 / (7199+1) = 10KHz 时钟周期T=1/10KHz=100us 100us 10 000 = 1S 结论 :分频比7199 定时计数器的值 10 000,该寄存器用来标记当前与定时器相关的各种事件/中断是否发生。具体每位的含义,请参考中文参考手册。,状态寄存器(TIMx_SR),控制

10、寄存器:TIMx_CR1,控制寄存器:TIMx_CR1,控制寄存器:TIMx_CR1,6.3 通用定时器的功能及工作方式,6.3 通用定时器的功能及工作方式,6.3.1 时钟的选择 内部时钟 (CK_INT); 外部时钟模式1 (外部输入脚TIx); 外部时钟模式2 (外部触发输入ETR); 内部触发输入 (ITR,使用一个定时器作为另一个定时器的预分频器,如配置定时器Timer1作为定时器Timer2的预分频器)。,通用定时器的基本功能是定时和计数。当可编程定时/计数器的时钟源来自内部系统时钟时可以完成精密定时;当时钟源来自外部信号时可完成外部信号计数。,6.3 通用定时器的功能及工作方式,

11、通用定时器的计数器时钟:内部时钟(CK_INT),6.3 通用定时器的功能及工作方式,通用定时器(TIM2-5)的时钟不是直接来自APB1,而是通过APB1的预分频器和倍频器以后才到达定时器模块。 当APB1的预分频器系数为1时,这个倍频器就不起作用了,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1时钟频率的两倍。 假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM27的时钟频率=36MH

12、z(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM27的时钟频率=36MHz。,6.3 通用定时器的功能及工作方式,有人会问,既然需要TIM27的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1? 答案是:APB1不但要为TIM27提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM27仍能得到较高的时钟频率。 再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,正是因为有了这个定时器的倍频器,TIM27仍然能够得到

13、72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也是设计这个倍频器的初衷。,6.3 通用定时器的功能及工作方式,1、内部时钟,6.3 通用定时器的功能及工作方式,2、外部时钟源模式1,6.3 通用定时器的功能及工作方式,2、外部时钟源模式2,6.3.2 时基单元 时基单元是设置定时器/计数器计数时钟的基本单元: 计数器寄存器(TIMx_CNT); 预分频器寄存器(TIMx_PSC); 自动装载寄存器(TIMx_ARR)。 根据实际需要,由软件设置预分频器寄存器,可以得到定时器/计数器的计数时钟。,6.3.3 计数模式 1. 向上计数模式:当控制寄存器TIMx_CR1中

14、CMS=00,DIR=0时选择为向上计数模式。 2. 向下计数模式:当控制寄存器TIMx_CR1中CMS=00,DIR=1时选择为向下计数模式。 3. 中央对齐计数模式:当控制寄存器TIMx_CR1中CMS=01、10、11时选择为中央对齐模式。,定时器时序1,定时器时序2,6.4 通用定时器应用设计,6.4.1 通用定时器常用库函数 STM32标准库中提供了几乎覆盖所有TIM操作的函数,所有TIM相关函数均在stm32f10x_tim.c和stm32f10x_tim.h中定义和声明。 教程表6-16 TIM库函数,6.4.2 通用定时器使用流程,1. NVIC设置:NVIC用来完成中断分组、

15、中断通道选择、中断优先级设置及使能中断的功能,2.定时器中断配置:用来配置定时器时基及开启中断,Prescaler,3.中断服务程序:用来配置定时器时基及开启中断,6.4.3 通用定时器设计实例,对第4章的GPIO控制LED实例,采用定时器3定时功能,使LED每1秒亮灭1次。PA8驱动LED。为了使LED亮一秒灭一秒,只要设置定时器1s产生一次中断,在中断函数中对延时时间进行计数即可实现任意秒延时。,6.4.3 通用定时器设计实例,int main(void) LED_Config(); /GPIO-LED 配置 TIM3_NVIC_Config(); /TIM3_NVIC 配置 TIM3_C

16、onfig(); /TIM3 配置 GPIO_ResetBits(GPIOA,GPIO_Pin_8);/低电平,点亮LED while(1) ,6.4.3 通用定时器设计实例,void LED_Config(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, ,6.4.3 通用定时器设计实例,void TIM3_NVIC_Config(void) NVIC_InitType

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号