/*
*********************************************************************************************************
*
* 模块名称 : timer2驱动模块
* 文件名称 : bsp_timer2.c
* 版 本 : V1.0
* 说 明 : timer2时钟定时器
*
* 修改记录 :
* 版本号 日期 作者 说明
*
*********************************************************************************************************
*/
#include "bsp.h"
#define SystemCoreClock 72000000
/*
*********************************************************************************************************
* 函 数 名: bsp_InitTimer2
* 功能说明: 配置beep相关的GPIO, 该函数被 bsp_Init() 调用。
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void bsp_InitTimer2(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
uint32_t usPeriod;
uint16_t usPrescaler;
uint32_t uiTIMxCLK;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_DeInit(TIM2);
/* 打开GPIO时钟 */
uiTIMxCLK = SystemCoreClock;
usPrescaler = uiTIMxCLK / 10000 ; /* 分频到周期 100us */
//usPrescaler = uiTIMxCLK / 10000 ; /* 分频到周期 100us */
usPeriod = 100; //设置计数溢出大小,每计1000个数就产生一个更新事件 100us*100=10ms
TIM_TimeBaseStructure.TIM_Period = usPeriod-1;//ARR的值 10ms 设置自动装载寄存器
TIM_TimeBaseStructure.TIM_Prescaler = usPrescaler-1; //100us 分频计数
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;采样分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
// 每次进入中断服务程序间隔时间为 ((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒*/
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除溢出中断标志
TIM_ARRPreloadConfig(TIM2, DISABLE);/*预装载寄存器的内容被立即传送到影子寄存器 */
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2,ENABLE);//开启时钟
}
//设置所有的中断允许
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Timer2中断*/
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//初始调用
void bsp_Init(void)
{
RCC_Configuration();
//初始化中断
NVIC_Configuration();
bsp_InitTimer2();
}