我用TIM2定时一秒,可是 不管我将TIM_ARRPreloadConfig设置为DISABLE 还是ENABLE,结果都不变。我都不明白TIM_ARRPreloadConfig有什么作用了; 另外,TIM_TimeBaseStructure.TIM_Prescaler=0还是9我都试过,定时还是一秒;不知道为什么。那位大侠帮忙看看
下面是我的设置:
void initTIMER2(void) //(APB1) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //36mhz/36000=1000=TIM_Period
TIM_DeInit(TIM2); //TIM_InternalClockConfig(TIM2); TIM_TimeBaseStructure.TIM_Period=2000; //ARR的值 TIM_TimeBaseStructure.TIM_Prescaler=0; // 分频=TIM_Prescaler+1 预分频为1 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_PrescalerConfig(TIM2,35999,TIM_PSCReloadMode_Immediate);//时钟分频系数36000-1,所以定时器时钟为2K 预分频值即刻装入 TIM_ARRPreloadConfig(TIM2,DISABLE);//禁止ARR预装载缓冲器 ?????? TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_ClearFlag(TIM2,TIM_FLAG_Update);
//开启时钟2 TIM_Cmd(TIM2, ENABLE);
}
|