/************************IO口配置******************************/
rcu_periph_clock_enable(RCU_TIMER2);
nvic_irq_enable(TIMER2_IRQn,1,0);
BSP_IntVectSet(BSP_INT_ID_TIM3, BSP_TIM_Capture_IRQHandler);
gpio_init(GPIOA,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_50MHZ,GPIO_PIN_7);
/************************定时器配置****************************/
FANCAPTURETIM.prescaler=19;
FANCAPTURETIM.alignedmode=TIMER_COUNTER_EDGE;
FANCAPTURETIM.counterdirection=TIMER_COUNTER_CENTER_UP;
FANCAPTURETIM.period=63999;
FANCAPTURETIM.clockdivision=TIMER_CKDIV_DIV1;
timer_init(TIMER2,&FANCAPTURETIM);
timer_auto_reload_shadow_enable(TIMER2);//使能自动装载影子寄存器
timer_internal_clock_config(TIMER2); //配置为内部时钟模式
sConfigIC.icpolarity = TIMER_IC_POLARITY_RISING;
sConfigIC.icselection = TIMER_IC_SELECTION_DIRECTTI;
sConfigIC.icprescaler = TIMER_IC_PSC_DIV1;
sConfigIC.icfilter = 0;
timer_input_capture_config( TIMER2 , TIMER_CH_1 , &sConfigIC);
timer_input_trigger_source_select(TIMER2,TIMER_SMCFG_TRGSEL_CI1FE1);
timer_slave_mode_select(TIMER2,TIMER_SLAVE_MODE_RESTART);
timer_master_slave_mode_config(TIMER2,TIMER_MASTER_SLAVE_MODE_ENABLE);
timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_UP);
timer_interrupt_enable(TIMER2,TIMER_INT_UP);
timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_CH1);
timer_interrupt_enable(TIMER2,TIMER_INT_CH1);
timer_enable(TIMER2);
////////////////***********中断函数如下****************////////////////////////
if(timer_interrupt_flag_get(TIMER2,TIMER_INT_FLAG_CH1))
{
timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_CH1);
timer_counter_value_config(TIMER2,0);
g_motor_speed_val = timer_channel_capture_value_register_read(TIMER2,TIMER_CH_1)+1;
}
if(timer_interrupt_flag_get(TIMER2,TIMER_INT_FLAG_UP))
{
timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_UP);
g_motor_speed_val = 0xffff;
}
|