20240526
一、定时器内部时钟
/*开启时钟*/
RCC_APBxPeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE);
/*配置时钟源*/
TIM_InternalClockConfig(TIMx);
/*时基单元初始化*/
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定义结构体变量
/*中断输出配置*/
TIM_ClearFlag(TIMx, TIM_FLAG_Update); //此步的目的是防止上电初始化时产生的一次中断
//开启TIM2的更新中断
TIM_ITConfig(TIMx, TIM_IT_Update, ENABLE);
/*NVIC中断分组*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);
/*NVIC配置*/
NVIC_InitTypeDef NVIC_InitStructure; //定义结构体变量
/*TIM使能*/
TIM_Cmd(TIMx, ENABLE); //使能TIMx,定时器开始运行
定时器中断函数
void TIMx_IRQHandler(void)
{
if (TIM_GetITStatus(TIMx, TIM_IT_Update) == SET)
{
TIM_ClearITPendingBit(TIMx, TIM_IT_Update);
}
}
二、定时器外部时钟
/*开启时钟*/
RCC_APBxPeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE); //开启TIMx的时钟
RCC_APBxPeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE); //开启GPIOxA的时钟
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure; //注意此初始化的GPIO引脚是指定的
/*外部时钟配置*/
TIM_ETRClockMode2Config(TIMx, TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted, 0x0F);
/*时基单元初始化*/
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
/*中断输出配置*/
TIM_ClearFlag(TIMx, TIM_FLAG_Update); //此步的目的是防止上电初始化时产生的一次中断
//开启TIMx的更新中断
TIM_ITConfig(TIMx, TIM_IT_Update, ENABLE);
/*NVIC中断分组*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
/*NVIC配置*/
NVIC_InitTypeDef NVIC_InitStructure;
/*TIM使能*/
TIM_Cmd(TIMx, ENABLE); //使能TIMx,定时器开始运行
定时器中断函数
void TIMx_IRQHandler(void)
{
if (TIM_GetITStatus(TIMx, TIM_IT_Update) == SET)
{
TIM_ClearITPendingBit(TIMx, TIM_IT_Update);
}
}