一、TIM
二、定时器类型
1.高级定时器
2.通用定时器
3.基本定时器
三、定时中断基本结构
1.预分频器时序
在单片机中,时序是指各操作信号之间的时间关系,它规定了单片机执行指令、访问存储器以及进行输入输出操作等的时间顺序和时间间隔,就如同一场精心编排的舞蹈,每个动作都在特定的时间点上发生,以确保整个表演的协调和准确。
2.计数器时序
计数器无预装时序
计数器有预装时序
四、RCC时钟树
示例代码
void Timer_Init(void)
{
//1.RCC开启时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//TIM2使能
//2.选择时基单元的时钟源
TIM_InternalClockConfig(TIM2);//选择时钟源
//3.配置时基单元,包括预分频器、自动重装器、计数模式
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//1分频
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInitStruct.TIM_Period = 10000 - 1;
TIM_TimeBaseInitStruct.TIM_Prescaler = 7200 - 1;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);//避免刚初始化完就进中断的问题
//4.配置输出中断控制,允许更新中断输出到NVIC
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
//5.配置NVIC,在NVIC中打开定时器中断的通道,并分配一个优先级
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStructure);
//6.运行控制。模块配置完成后,使能一下计数器
TIM_Cmd(TIM2, ENABLE);
}