void Timer3_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//------------------------------------------------------------
//打开定时器的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
//------------------------------------------------------------
//TIMx寄存器重设为缺省值
TIM_DeInit(TIM3);
TIM_TimeBaseStructure.TIM_Period=49999; //自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler=71; //TIMx 时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
// TIM_ClearFlag(TIM3,TIM_FLAG_Update);
// TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
}
/*
********************************************************************************
** 函数名称 : EXTI3_IRQHandler(void)
** 函数功能 : 右轮计数中断
** 输 入 : 无
** 输 出 : 无
** 返 回 : 无
********************************************************************************
*/
void EXTI3_IRQHandler(void)
{
if (EXTI->PR & (1<<3)) { // 是否是外部中断3
tmp2= CHAOSHENGBO2_read_H;
if(tmp2==0x0008){
//启动定时器
TIM1->CNT=0;
TIM_Cmd(TIM1, ENABLE); //开启时钟
count2=TIM1->CNT;
count2=TIM1->CNT;
}
else{
//关闭定时器
TIM_Cmd(TIM1, DISABLE); //开启时钟
count2=TIM1->CNT;
juli2=0.017*count2;
count2=0;
if(juli2<40)
zhangai_qian=1;
else
zhangai_qian=0;
}
EXTI->PR |= (1<<3); // 清除中断标志
}
}
当把TIM3换成TIM5或TIM1的时候,连使能都不好使哇…… |