欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新05_STM32F4通用定时器详细讲解.doc

    • 资源ID:33819644       资源大小:233.50KB        全文页数:6页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新05_STM32F4通用定时器详细讲解.doc

    精品资料05_STM32F4通用定时器详细讲解.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),来自RCC的TIMxCLK2:外部时钟模式1:外部输入TI1FP1与TI2FP23:外部时钟模式2:外部触发输入TIMx_ETR,仅适用于TIM2、TIM3、TIM4,TIM3,对应着PD2引脚4:内部触发输入:一个定时器触发另一个定时器。时钟源可以通过TIMx_SMCR相关位进行设置。这里我们使用内部时钟。SYSCLK(最高168MHz)AHB_PrescalerAPBx_Prescaler/1,2,.512HCLK/1,2,4.APB1orAPB2APB1orAPB2定时器时钟1 APBx_precaler=12 APBx_precaler!=1定时器挂在高速外设时钟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相关的寄存器及重要寄存器的简单介绍。1 TIM3 控制寄存器 1 (TIM3_CR1) 作用:1使能自动重载TIM3_ARR 2定时器的计数器递增或递减计数。 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:输出比较预装载使能,即使能后可以随时改变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 捕获/比较寄存器 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)原理:这里以向上计数为例,即计数器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进入中断,改变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; /向上计数模式TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);/初始化TIM33 使能中断 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); /允许定时器3更新中断。4 打开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_APB1Periph_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_TimeBaseInitStructure);/初始化TIM3TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); /允许定时器3更新中断TIM_Cmd(TIM3,ENABLE); /使能定时器NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; /定时器中断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_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。

    注意事项

    本文(最新05_STM32F4通用定时器详细讲解.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开