SM通用定时器详细讲解_第1页
SM通用定时器详细讲解_第2页
SM通用定时器详细讲解_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AHB PrescaleSYSCLK最高APB1orAPBSTM32F4系列共有14个定时器,功能很强大。14个定时器分别为: 2个高级定时器:Timerl和Timer810 个通用定时器:Timer2timer5 和 timer9timer142个基本定时器:timer6和timer7本篇欲以通用定时器timer3为例,详细介绍定时器的各个方面,并对其PWM功能做彻底的探讨。Timer3是一个16位的定时器,有四个独立通道,分别对应着 PA6 PA7 PBO PB1 主要功能是:1输入捕获一一测量脉冲长度。2输出波形一一PWM输出和单脉冲输出。Timer3有4个时钟源:1:内部时钟(CK_I

2、NT,来自RCC的TIMxCLK2:外部时钟模式1:外部输入TI1FP1与TI2FP23:外部时钟模式2:外部触发输入 TIMx_ETR仅适用于TIM2、TIM3、TIM4,TIM3,对应着 PD2引脚4:内部触发输入:一个定时器触发另一个定时器。时钟源可以通过TIMx_SMCR相关位进行设置。这里我们使用内部时钟。APBx Preseal定时器挂在高速外设时钟 APB1或低速外设时钟APB2上,时钟不超过内部高速时钟 HCLK故 当APBx_Prescale不为1时,定时器时钟为其2倍,当为1时,为了不超过HCLK定时器时 钟等于HCLK例如:我们一般配置系统时钟 SYSCL为168MHz,

3、内部高速时钟 AHB=168Mhz APB1欲分频 为4,(因为APB1最高时钟为42Mhz),那么挂在 APB1总线上的timer3时钟为84Mhz。STM32F4xx中文参考手册的424443页列出与通用定时器相关的寄存器一共 20个, 以下列出与Timer3相关的寄存器及重要寄存器的简单介绍。1 TIM3 控制寄存器 1 (TIM3_CR1)作用:1使能自动重载TIM3_ARR2定时器的计数器递增或递减计数。3事件更新。4计数器使能2 TIM3 控制寄存器 2 (TIM3_CR2)3 TIM3从模式控制寄存器 (TIM3_SMCR)4 TIM3 DMA/中断使能寄存器 (TIM3_DIE

4、R)作用: 1:使能事件更新中断2:使能捕获 / 比较中断5 TIM3 状态寄存器 (TIM3_SR)1:事件更新中断标志2:捕获 / 比较中断标志6 TIM3 事件生成寄存器 (TIM3_EGR)7 TIM3 捕获/比较模式寄存器 1 (TIM3_CCMR1)1:输出比较模式2:输出比较预装载使能, 即使能后可以随时改变 TIM3 捕获/比较寄存器 1 (TIM3_CCR1) 的值3:捕获 / 比较选择8 TIM3 捕获/比较模式寄存器 2 (TIM3_CCMR2)9 TIM3 捕获/ 比较使能寄存器 (TIM3_CCER)1:上升沿触发 or 下降沿触发2:捕获 / 比较输出使能10 TI

5、M3 计数器 (TIM3_CNT)11 TIM3 预分频器 (TIM3_PSC) 计数器时钟频率 CK_CNT 等于 fCK_PSC / (PSC15:0 + 1) 。12 TIM3 自动重载寄存器 (TIM3_ARR) 当自动重载值为空时,计数器不工作 难道说每次事件都必须装载重载值?13 TIM3 捕获/比较寄存器 1 (TIM3_CCR1)输出时:CCR1是捕获/比较寄存器的预装载值,由TIM3_CCMR的OC1PE位使能。输入时:CCR1为上一个输入捕获事件(IC1)发生时的计数器值。14 TIM3 捕获/比较寄存器 2 (TIM3_CCR2)15 TIM3 捕获/比较寄存器 3 (T

6、IM3_CCR3)16 TIM3 捕获/比较寄存器 4 (TIM3_CCR4)1 Timer3 用来做定时中断 与之相关的时基单元寄存器有10 TIM3 计数器 (TIM3_CNT)11 TIM3 预分频器 (TIM3_PSC)12 TIM3 自动重载寄存器 (TIM3_ARR)原理:这里以向上计数为例,即计数器 TIM3_CNT向上计数,当达到TIM3_ARR所设定的值时,归零重新计数,若使能了更新中断,则在 TIM3_C NT归零时,进入中断。进入中断的时间为(TIM3_ARR+1个计时器周期而计时器单元时钟是由定时器时钟分频得到,每(CK_PSC+)个定时器周期计数一次。定时器时钟上文已

7、经讲了,由于 Timer3挂在APB1总线上故 Timer3 进入中断的周期为(CK_PSC+)* (TIM3_ARR+1)/84000000 秒频率为 84000000/(CK_PSC+)1* (TIM3_ARR+1) Hz利用官方库函数实现每500ms进入中断,改变LED灯的电平,程序如下1打开时钟,Timer3挂在APB1上,所以命令开启时钟。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABILE)使能 TIM3 时钟2 时钟 Timer3 的配置。TIM_TimeBaseInitStructure.TIM_Period = arr; /自动

8、重装载值TIM_TimeBaseInitStructure.TIM_Prescaler=psc; / 定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; /向上计数模式TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInit(TIM3,&TIM_TimeBaselnitStructure);/初始台化 TIM33 使能中断TIM_ITConfig(TIM3,TIMT_Update,ENABLE);允许定时器 3 更新中断。4

9、 打开 Timer3。TIM_Cmd(TIM3,ENABLE); /使/ 能定时器 35 配置中断。6 中断服务函数编写。故可见STM32的初始化函数都离不开以下几步1 打开设备时钟。2 配置参数。3 打开设备。 设备需配置后再打开。如果需要配置中断,那么则需要编写中断服务函数。完整程序如下void TIM3_Int_Init(u16 arr,u16 psc)TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Pe

10、riph_TIM3,ENABLE使能 TIM3 时钟TIM_TimeBaseInitStructure.TIM_Prescaler=psc; / 定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; /向上计数 TIM_TimeBaseInitStructure.TIM_Period = arr; /自动装载值 TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInit(TIM3,&TIM_TimeBaselnitStructu

11、re);/初始化 TIM3TIM_ITConfig(TIM3,TIMT_Update,ENABLE);允许定时器 3 更新中断 TIM_Cmd(TIM3,ENABLE); /使/ 能定时器NVICn itStructure.NVICRQCha nn el=TIM3_IRQ n;定时器中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; /抢/ 占优先级 1NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; 子/优先级 3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);/Timer3 中断服务函数void TIM3_IRQHandler(void)if(TIM_GetlTStatus(TIM3,TIMT_Update)=SET)溢出中断GP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论