Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21438
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-23 11:32
文章分类

全部博文(6)

文章存档

2013年(6)

我的朋友

分类: 嵌入式

2013-04-01 10:49:22

         STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16 位自动装载计数器(CNT)构成。STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。  使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。 STM3的通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括:   
1)16位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。 
2)16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~65535之间的任意数值。 
3)4个独立通道(TIMx_CH1~4),这些通道可以用来作为:   
A.输入捕获   
B.输出比较   
C.PWM生成(边缘或中间对齐模式)  
D.单脉冲模式输出   
4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用1个定时器控制另外
一个定时器)的同步电路。 
5)如下事件发生时产生中断/DMA:   
A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)  
B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)  
C.输入捕获   
D.输出比较   
E.支持针对定位的增量(正交)编码器和霍尔传感器电路   
F.触发输入作为外部时钟或者按周期的电流管理 
        具体步骤如下:
        1)TIM3时钟使能:TIM3是挂载在APB1之下,所以我们通过APB1总线下的使能使能函数来使能TIM3
            RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE)
        2)初始化定时器参数,设置自动重装值,分频系数,计数方式等
            voidTIM_TimeBaseInit(TIM_TypeDef*TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
        3)设置TIM3_DIER允许更新中断
            void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)
        4)TIM3中断优先级设置
        5)允许TIM3工作,也就是使能TIM3
            void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
        6)编写中断服务函数
看下实例:实现功能,进入一次中断,led灯亮灭交替一次
先看下timer.c文件

再看下中断函数

最后看下主程序,还是比较简单的
int main()
{
u8 t;
delay_init(72);
led_init();
timer_init(4999,7199);
while(1) ;
}
整个过程清晰明了,主要是进行定时器初始化及中断初始化等设置,其他的通过我们以前的就很简单
阅读(3784) | 评论(0) | 转发(0) |
0

上一篇:STM32之六 独立看门狗

下一篇:没有了

给主人留下些什么吧!~~