初级会员

- 积分
- 91
- 金钱
- 91
- 注册时间
- 2014-8-14
- 在线时间
- 19 小时
|
5金钱
请教,STM32F205,使用TIM8用做脉冲宽度采集,如下程序,问题:我在中断里面,溢出中断只会进入一次(Tim2OverFlow = 1 )请问什么地方需要修改
我用脉冲宽度为5HZ输入
init()//初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
TIM_DeInit( TIM8 );
GPIO_InitStructure.GPIO_Pin = PIN_MCU_SPEED;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init( GPIOC, &GPIO_InitStructure );
GPIO_PinAFConfig( GPIOC, GPIO_PinSource9, GPIO_AF_TIM8 );
RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM8, ENABLE );
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = 2; //120M / ( 2 + 1 )
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit( TIM8, &TIM_TimeBaseStructure );
TIM_ARRPreloadConfig( TIM8, ENABLE );
TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit( TIM8, &TIM_ICInitStructure );
NVIC_InitStructure.NVIC_IRQChannel = TIM8_CC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init( &NVIC_InitStructure );
TIM_ClearITPendingBit( TIM8, TIM_IT_Update | TIM_IT_CC4 );
TIM_SetCounter( TIM8, 0 );
TIM_ITConfig( TIM8, TIM_IT_Update | TIM_IT_CC4, ENABLE );
TIM_Cmd( TIM8, ENABLE );
}
void TIM8_CC_IRQHandler( void )
{
if( TIM_GetITStatus( TIM8, TIM_IT_Update ) != RESET ) {
TIM_ClearITPendingBit( TIM8, TIM_IT_Update );
Tim2OverFlow++;
GPIOD->ODR ^= PIN_DEBUG_LED2;
}
if( TIM_GetITStatus( TIM8, TIM_IT_CC4 ) != RESET ) {
TIM_ClearITPendingBit( TIM8, TIM_IT_CC4 );
GPIOD->ODR ^= PIN_DEBUG_LED1;
PulseWidth = TIM_GetCapture4( TIM8 );
PulseWidth += 65536*Tim2OverFlow;
}
}
|
|