打印
[STM32F1]

STM32F107VC金龙开发板 第八章 金龙107——TIM

[复制链接]
1398|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第八章 金龙107——TIM

8.1 TIMER:
     通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)
使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。 每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。STM32为用户配备了2个基本定时器TIM6TIM74个通用定时器TIM2TIM3TIM4TIM52个高级定时器。在《STM32 参考手册》中仅对定时器的介绍就已经占了 100
多页,看来STM32定时器的资源是非常强大的。
    由于 STM32 通用定时器比较复杂,这里我们不再多作介绍,请大家直接参考《STM32 参考手册》第 253 页,通用定时器一章。为了深入了解 STM32 的通用定时器,下面我们先介绍一下与我们这章实验密切相关的几个函数的配置、调用。
8.2实验说明:
在本实验中,主要使用STM32F107TIM4LED5,程序下载运行后,LED51s时间间隔亮灭闪烁。
主要跳线帽:JP4JP7都接在2-3
8.3硬件说明:
本实验主要涉及的硬件LED灯,
8.4程序说明:
本实验配置主要是TIM的配置,主要是涉及到定时器定时时间的计算,因为计数器的时钟频率(CK_CNT)于fCK_PSC/( PSC[15:0]+1)。所以在设定预分频值时留心注意,其次是定时器的计数的数值,计数方式。这一章,我们将使用定时器TIM4产生中断,然后在中断服务函数里面翻转LED4上的电平,来指示定时器中断的产生。接下来我们以通用定时器 TIM4 为实例,来说明要经过哪些步骤,才能达到这个要求,并产生中断。这里我们就对每个步骤通过库函数的实现方式来描述。
首先要提到的是,定时器相关的库函数主要集中在固件库文件 stm32f10x_tim.h stm32f10x_tim.c 文件中。
1)  使能TIM4时钟
TIM4是挂载在 APB1 之下,所以我们通过 APB1 总线下的使能使能函数来使能 TIM4。调用的函数是:
2) 初始化定时器参数,设置自动重装值,分频系数,计数方式等
  
   3) 设置 TIM4_DIER 允许更新中断。
因为我们要使用 TIM4 的更新中断,寄存器的相应位便可使能更新中断。在库函数里面定
时器中断使能是通过 TIM_ITConfig 函数来实现的:
    第一个参数是选择定时器号。我们这里选择TIM4
    第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型包括更新中断 TIM_IT_Update,触发中断 TIM_IT_Trigger,以及输入捕获中断等等。
第三个参数就是失能还是使能。
4) 中断优先级的设置
       在定时器中断使能后,因为要产生中断,必不可少的要设置NVIC相关寄存器和中断优先级
5) 使能TIM4
6) 编写中断服务函数
在配置好了所有外设的时候,最后就要编写我们的中断服务函数了。中断产生后,通过ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT)来判断此次产生的中断类型。然后执行相关的操作,我们这里使用的是更新(溢出)中断,在处理完中断之后调用        TIM_ClearITPendingBit(TIM4, TIM_FLAG_Update);来清除该中断标志。
中断函数里面要判断中断源和清除中断标志位,再执行中断处理程序
    通过以上几个步骤,就可以达到我们的实验目的,使用TIM4的更新中断,来控制
LED5 的亮灭。
8.5实验现象:
LED1灯闪烁指示程序运行(简单延时)
LD5闪烁周期为2(TIM4的更新中断)

沙发
mmuuss586| | 2015-4-14 21:42 | 只看该作者

发这么多;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专业生产销售STM32开发板,仿真器,http://openmcu.taobao.com/

71

主题

283

帖子

11

粉丝