www.pudn.com > sound-source-location.rar > timer.c, change:2014-05-02,size:3078b


/******************************************************************************* 
 * @name    : 定时器配置 
 * @author  : 布谷鸟 
 * @web     : WWW.UCORTEX.COM 
 * @version : V1.0 
 * @date    : 2014-04-03 
 * @MDK     : KEIL MDK4.72a & KEL MDK 5.10 
 * @brief   : 介绍如何配置定时器和编写定时中断服务程序 
 * ----------------------------------------------------------------------------  
 * @copyright 
 * 
 * UCORTEX版权所有,违者必究!例程源码仅供大家参考,旨在交流学习和节省开发时间, 
 * 对于因为参考本文件内容,导致您的产品直接或间接受到破坏,或涉及到法律问题,作 
 * 者不承担任何责任。对于使用过程中发现的问题,如果您能在WWW.UCORTEX.COM网站反 
 * 馈给我们,我们会非常感谢,并将对问题及时研究并作出改善。例程的版本更新,将不 
 * 做特别通知,请您自行到WWW.UCORTEX.COM下载最新版本,谢谢。 
 * 对于以上声明,UCORTEX保留进一步解释的权利! 
 * ---------------------------------------------------------------------------- 
 * @description 
 * 
 *----------------------------------------------------------------------------- 
 * @history 
 * ---------------------------------------------------------------------------- 
 * 更改时间:2014-04-06    更改人:布谷鸟 
 * 版本记录:V1.0 
 * 更改内容:新建 
 * ---------------------------------------------------------------------------- 
 * 
 ******************************************************************************/ 
  
#include "timer.h"  
 
/** 
  * @brief 定时器3(TIM3)中断初始化 
  * @param arr:自动重装值。 
  * @param psc:时钟预分频数 
  * @retval none 
  * @note 
	*    配置定时器3(TIM3)为向下计数模式 
  *    定时器计数频率 = PCLK / ( psc + 1 ) 
  *    定时器中断周期 = ( arr + 1 )*( pac + 1) / PCLK 
  */ 
void TIM3_INT_Init(uint16_t arr, uint16_t psc) 
{ 
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure; 
	NVIC_InitTypeDef NVIC_InitStructure; 
 
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能外设时钟 
	 
	TIM_TimeBaseStructure.TIM_Period = arr;		//设置在下一个更新事件装入活动的自动重装载寄存器周期的值	 
	TIM_TimeBaseStructure.TIM_Prescaler =psc;	//设置用来作为TIMx时钟频率除数的预分频值 
	TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;			//设置时钟分割:TDTS = Tck_tim 
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;	//TIM向下计数模式 
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);			//根据指定的参数初始化TIMx的时间基数单位 
	 
	TIM_ARRPreloadConfig(TIM3,ENABLE);//使能ARR预装载,防止向上计数时更新事件异常延迟 
  
	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );	//允许更新中断 
 
	//中断优先级NVIC设置 
	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;						//TIM3中断 
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;	//先占优先级0级 
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;				//从优先级3级 
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;						//IRQ通道被使能 
	NVIC_Init(&NVIC_InitStructure);	//初始化NVIC寄存器 
 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置NVIC中断分组2:2位抢占优先级,2位响应优先级 
 
	TIM_Cmd(TIM3, ENABLE);  //使能TIM3 
} 
 
/********************* (C) COPYRIGHT 2014 WWW.UCORTEX.COM **********END OF FILE**********/