在运行过程中````
while(TIM_GetITStatus(TIM3,
TIM_IT_Update)); //重要的一步 /*等待TIM3中断完成*/
TIM_Cmd(TIM3, DISABLE);
miran_wdf_tim3(); //配置定时器3
TIM_Cmd(TIM3, ENABLE);
`````
[mw_shl_code=c,true]void miran_wdf_tim3(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
//重新将Timer设置为缺省值
TIM_DeInit(TIM3);
//采用内部时钟给TIM2提供时钟源
//TIM_InternalClockConfig(TIM2);
//预分频系数为36-1,这样计数器时钟为72MHz/36000 = 2KHz 0.5ms
TIM_TimeBaseStructure.TIM_Prescaler = 36000-1;
//设置时钟分割
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
//设置计数器模式为向上计数模式
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // TIM_CounterMode_Down
//设置计数溢出大小,每计2个数就产生一个更新事件
TIM_TimeBaseStructure.TIM_Period = pulse_Cycle-1; //
//重复计数,就是重复溢出多少次才给你来一个溢出中断
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
//将配置应用到TIM2中
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
}[/mw_shl_code]
|