论坛元老
 
- 积分
- 4520
- 金钱
- 4520
- 注册时间
- 2018-5-11
- 在线时间
- 946 小时
|
发表于 2018-7-8 21:36:16
|
显示全部楼层
//配置TIM2为1s产生一次中断,用于定时器使用
void Timer2_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitTypeStruct;
NVIC_InitTypeDef NVIC_InitTypeStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
//72000000/7200=10000=10K
//10Khz的计数频率,每次为1/10K=0.1ms=100us, 计数到10000为1s
TIM_TimeBaseInitTypeStruct.TIM_Prescaler = 7199;//tim2预分频值7200,即时钟为100us
TIM_TimeBaseInitTypeStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
TIM_TimeBaseInitTypeStruct.TIM_Period = 9999+1; //10000*100us=1s溢出一次
TIM_TimeBaseInitTypeStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitTypeStruct);
NVIC_InitTypeStruct.NVIC_IRQChannel = TIM2_IRQn; //配置定时器中断优先级
NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 0;
NVIC_InitTypeStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitTypeStruct);
TIM_ITConfig(TIM2,TIM_IT_Update,DISABLE); //允许溢出中断
TIM_Cmd(TIM2,DISABLE);
} |
|