void TMR1_IRQHandler(void)
{
if(TIMER_GetCaptureIntFlag(TIMER1) == 1)
{
TIMER_ClearCaptureIntFlag(TIMER1);
IntTimes++;
}
}
void TMR0_IRQHandler(void)
{
if(TIMER_GetIntFlag(TIMER0) == 1)
{
TIMER_ClearIntFlag(TIMER0);
mainspeed=IntTimes*250*60/450;
thd=mainspeed/1000%10;
hud=mainspeed/100%10;
}
IntTimes=0;
}
TIMER_Open(TIMER1, TIMER_CONTINUOUS_MODE, 1);
TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1);
TIMER_SET_PRESCALE_VALUE(TIMER1, 0);
TIMER_SET_PRESCALE_VALUE(TIMER0, 0);
TIMER_SET_CMP_VALUE(TIMER1, 0xFFFFFF);
TIMER_SET_CMP_VALUE(TIMER0, 0x7FFF);
TIMER_EnableCapture(TIMER1, TIMER_CAPTURE_FREE_COUNTING_MODE, TIMER_CAPTURE_RISING_EDGE);
TIMER_EnableInt(TIMER0);
TIMER_EnableCaptureInt(TIMER1);
NVIC_EnableIRQ(TMR0_IRQn);
NVIC_EnableIRQ(TMR1_IRQn);
TIMER_Start(TIMER1);//
TIMER_Start(TIMER0);
这个写法有问题没,现在是T0做4ms定时,T1做上升沿中断捕获,然后在T0中断里面计算速度
|