基本定时器功能 基本定时器主要两个功能,第一就是基本定时功能,生成时基,第二就是专门用于驱动数模转换器(DAC)。
基本定时器代码 标准库函数对定时器外设建立了四个初始化结构体,基本定时器只用到其中一个即TIM_TimeBaseInitTypeDef,该结构体成员用于设置定时器基本工作参数,并由定时器基本初始化配置函数 TIM_TimeBaseInit 调用。
模式配置函数
void TIM_Mode_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
// 开启 TIMx_CLK,x[6,7]
RCC_APB1PeriphClockCmd(BASIC_TIM_CLK, ENABLE);
/* 累计 TIM_Period 个后产生一个更新或者中断*/
//当定时器从 0 计数到 4999,即为 5000 次,为一个定时周期
TIM_TimeBaseStructure.TIM_Period = 5000-1;
//定时器时钟源 TIMxCLK = 2 * PCLK1
// PCLK1 = HCLK / 4
// => TIMxCLK=HCLK/2=SystemCoreClock/2=90MHz
// 设定定时器频率为=TIMxCLK/(TIM_Prescaler+1)=10000Hz
TIM_TimeBaseStructure.TIM_Prescaler = 9000-1;
// 初始化定时器 TIMx, x[2,3,4,5]
TIM_TimeBaseInit(BASIC_TIM, &TIM_TimeBaseStructure);
// 清除定时器更新中断标志位
TIM_ClearFlag(BASIC_TIM, TIM_FLAG_Update);
// 开启定时器更新中断
TIM_ITConfig(BASIC_TIM,TIM_IT_Update,ENABLE);
// 使能定时器
TIM_Cmd(BASIC_TIM, ENABLE);
}
中断函数
void TIM6_DAC_IRQHandler(void)
查看与清除中断标志位函数
TIM_ClearITPendingBit(BASIC_TIM , TIM_IT_Update);
TIM_GetITStatus( BASIC_TIM, TIM_IT_Update)
定时功能编程总结
【TIM基本定时器】根据定时间配置好模式配置函数,使能nvic中断请求,进入中断函数的编写,在中断函数中写好中断处理内容,最后清0标志。