初始化函数
void time_init()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //声明一个结
构体变量,用来初始化 GPIO
NVIC_InitTypeDef NVIC_InitStructure;
/* 开启定时器 3 时钟 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除 TIMx 的中断待处理
位:TIM 中断源
TIM_TimeBaseInitStructure.TIM_Period = 2000;//设置自动重装载寄存器
周期的值
TIM_TimeBaseInitStructure.TIM_Prescaler = 35999;//设置用来作为 TIMx
时钟频率预分频值,100Khz 计数频率
TIM_TimeBaseInitStructure.TIM_ClockDivision = 0; //设置时钟分
割:TDTS = Tck_tim
TIM_TimeBaseInitStructure.TIM_CounterMode =
TIM_CounterMode_Up;//TIM 向上计数模式
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
TIM_Cmd(TIM3,ENABLE); //使能或者失能 TIMx 外设
/* 设置中断参数,并打开中断 */
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE ); //使能或者失能指定的
TIM 中断
/* 设置 NVIC 参数 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //打开 TIM3_IRQn 的全
局中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //抢占优
先级为 0
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //响应优先级为 1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&NVIC_InitStructure);
}
|