1.配置该时钟的中断优先级,NVIC
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置NVIC中断优先级编组
NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn; //TIM6中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级1级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
2.初始化该时钟的配置,包括:
开启该定时器的时钟源:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);清空配置:TIM_DeInit(TIM6);配置时钟的自动重装计数器:TIM_TimeBaseStructure.TIM_Period=200;配置时钟源预分频数:TIM_TimeBaseStructure.TIM_Prescaler= (1600 – 1);配置时钟分频数:TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;配置计数模式:TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;让配置生效:TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);清空溢出中断标志:TIM_ClearFlag(TIM6, TIM_FLAG_Update);设置溢出中断使能:TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);启动定时器:TIM_Cmd(TIM6, ENABLE);
3.编写该时钟的中断服务函数
void TIM6_IRQHandler(void)
{
if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM6, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
sysClockCount++; //用于滚动显示字符
}
}