ImageVerifierCode 换一换
格式:DOCX , 页数:4 ,大小:38.68KB ,
资源ID:2267505      下载积分:15 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-2267505.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(05-STM32F4通用定时器详细讲解.docx)为本站会员(j****9)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

05-STM32F4通用定时器详细讲解.docx

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

2、RCC 的 TIMxCLK2:外部时钟模式 1:外部输入 TI1FP1 与 TI2FP23:外部时钟模式 2:外部触发输入 TIMx_ETR,仅适用于 TIM2、TIM3、TIM4,TIM3,对应着 PD2 引脚4:内部触发输入:一个定时器触发另一个定时器。时钟源可以通过 TIMx_SMCR 相关位进行设置。这里我们使用内部时钟。SYSCLK(最高168MHz)AHB_Prescaler APBx_Prescaler/1, 2, .512HCLK/1,2,4.APB1orAPB2APB1orAPB2定时器时钟1 APBx_precaler=12 APBx_precaler!=1定时器挂在高速外

3、设时钟 APB1 或低速外设时钟 APB2 上,时钟不超过内部高速时钟HCLK,故当 APBx_Prescaler 不为 1 时,定时器时钟为其 2 倍,当为 1 时,为了不超过HCLK,定时器时钟等于 HCLK。例如:我们一般配置系统时钟 SYSCLK 为 168MHz,内部高速时钟 AHB=168Mhz,APB1 欲分频为 4, (因为 APB1 最高时钟为 42Mhz) ,那么挂在 APB1 总线上的 timer3 时钟为 84Mhz。STM32F4xx 中文参考手册 的 424443 页列出与通用定时器相关的寄存器一共 20 个,以下列出与 Timer3 相关的寄存器及重要寄存器的简单

4、介绍。1 TIM3 控制寄存器 1 (TIM3_CR1) 作用:1 使能自动重载 TIM3_ARR2 定时器的计数器递增或递减计数。3 事件更新。4 计数器使能2 TIM3 控制寄存器 2 (TIM3_CR2)3 TIM3 从模式控制寄存器 (TIM3_SMCR)4 TIM3 DMA/中断使能寄存器 (TIM3_DIER)作用:1:使能事件更新中断2:使能捕获 /比较中断5 TIM3 状态寄存器 (TIM3_SR)1:事件更新中断标志2:捕获 /比较中断标志6 TIM3 事件生成寄存器 (TIM3_EGR)7 TIM3 捕获/比较模式寄存器 1 (TIM3_CCMR1)1:输出比较模式2:输出

5、比较预装载使能,即使能后可以随时改变 TIM3 捕获/ 比较寄存器 1 (TIM3_CCR1)的值3:捕获 /比较选择8 TIM3 捕获/比较模式寄存器 2 (TIM3_CCMR2)9 TIM3 捕获/比较使能寄存器 (TIM3_CCER)1:上升沿触发 or 下降沿触发2:捕获 /比较输出使能10 TIM3 计数器 (TIM3_CNT)11 TIM3 预分频器 (TIM3_PSC)计数器时钟频率 CK_CNT 等于 fCK_PSC / (PSC15:0 + 1)。12 TIM3 自动重载寄存器 (TIM3_ARR)当自动重载值为空时,计数器不工作难道说每次事件都必须装载重载值?13 TIM3

6、 捕获/ 比较寄存器 1 (TIM3_CCR1)输出时:CCR1 是捕获/比较寄存器的预装载值,由 TIM3_CCMR 的 OC1PE 位使能。输入时:CCR1 为上一个输入捕获事件(IC1)发生时的计数器值。14 TIM3 捕获/ 比较寄存器 2 (TIM3_CCR2)15 TIM3 捕获/ 比较寄存器 3 (TIM3_CCR3)16 TIM3 捕获/ 比较寄存器 4 (TIM3_CCR4)1 Timer3 用来做定时中断与之相关的时基单元寄存器有10 TIM3 计数器 (TIM3_CNT)11 TIM3 预分频器 (TIM3_PSC)12 TIM3 自动重载寄存器 (TIM3_ARR)原理

7、:这里以向上计数为例,即计数器 TIM3_CNT 向上计数,当达到 TIM3_ARR 所设定的值时,归零重新计数,若使能了更新中断,则在 TIM3_CNT 归零时,进入中断。进入中断的时间为 (TIM3_ARR+1)个计时器周期而计时器单元时钟是由定时器时钟分频得到,每 (CK_PSC+1)个定时器周期计数一次。定时器时钟上文已经讲了,由于 Timer3 挂在 APB1 总线上故 Timer3 进入中断的周期为(CK_PSC+1)* (TIM3_ARR+1)/84000000 秒频率为 84000000/(CK_PSC+1)* (TIM3_ARR+1) Hz利用官方库函数实现每 500ms 进

8、入中断,改变 LED 灯的电平,程序如下1 打开时钟,Timer3 挂在 APB1 上,所以命令开启时钟。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); /使能 TIM3 时钟2 时钟 Timer3 的配置。TIM_TimeBaseInitStructure.TIM_Period = arr; /自动重装载值TIM_TimeBaseInitStructure.TIM_Prescaler=psc; /定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; /向上计

9、数模式TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,/初始化 TIM33 使能中断TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); /允许定时器 3 更新中断。4 打开 Timer3。TIM_Cmd(TIM3,ENABLE); /使能定时器 35 配置中断。6 中断服务函数编写。故可见 STM32 的初始化函数都离不开以下几步1 打开设备时钟。2 配置参数。3 打开设备。设备需配置后再打开。如果需要配置中断,那么则需要编写中断服务函数。完整程序如下v

10、oid TIM3_Int_Init(u16 arr,u16 psc)TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); /使能 TIM3 时钟TIM_TimeBaseInitStructure.TIM_Prescaler=psc; /定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; /向上计

11、数TIM_TimeBaseInitStructure.TIM_Period = arr; /自动装载值TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,/初始化 TIM3TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); /允许定时器 3 更新中断TIM_Cmd(TIM3,ENABLE); /使能定时器NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; /定时器中断NVIC_InitStructure.NVIC_IR

12、QChannelPreemptionPriority=0x01; /抢占优先级 1NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; /子优先级 3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(/Timer3 中断服务函数void TIM3_IRQHandler(void)if(TIM_GetITStatus(TIM3,TIM_IT_Update)=SET)/ /溢出中断GPIO_ToggleBits(GPIO_LED ,DS1_PIN); /LED 灯电平翻转TIM_ClearITPendingBit(TIM3,TIM_IT_Update); /清除中断标志位然后 main()函数中 TIM3_Int_Init(5000-1,8400-1);即可可以计算进入中断的频率为 2Hz 即 LED 灯每 500ms 亮一次,LED 周期为 1Hz。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。