|
uint32_t timer_ov;
void gpio_config(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
}
void timer2_config(void)
{
timer_ic_parameter_struct timer_icinitpara;
timer_parameter_struct timer_initpara;
rcu_periph_clock_enable(RCU_TIMER2);
timer_deinit(TIMER2);
/* TIMER0 configuration */
timer_initpara.prescaler = 120-1;
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer_initpara.counterdirection = TIMER_COUNTER_UP;
timer_initpara.period = 65535;
timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer_initpara.repetitioncounter = 0;
timer_init(TIMER2,&timer_initpara);
timer_icinitpara.icpolarity = TIMER_IC_POLARITY_RISING;
timer_icinitpara.icselection = TIMER_IC_SELECTION_DIRECTTI;
timer_icinitpara.icprescaler = TIMER_IC_PSC_DIV1;
timer_icinitpara.icfilter = 0;
timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_UP|TIMER_INT_FLAG_CH0);
timer_input_capture_config(TIMER2,TIMER_CH_0,&timer_icinitpara);
timer_interrupt_enable(TIMER2,TIMER_INT_UP|TIMER_INT_CH0);
nvic_irq_enable(TIMER2_IRQn, 13,0);
/* auto-reload preload enable */
timer_auto_reload_shadow_enable(TIMER2);
timer_enable(TIMER2);
}
int main(void)
{
/* configure the TIMER peripheral */
timer2_config();
/* configure systick */
systick_config();
gd_eval_com_init(EVAL_COM1);
printf("Start\r\n");
while (1)
{
printf("timer_ov = %lu\r\n", timer_ov);
delay_1ms(100);
}
}
void TIMER2_IRQHandler(void)
{
if(timer_interrupt_flag_get(TIMER2,TIMER_INT_FLAG_UP)==SET)
{
timer_ov = timer_channel_capture_value_register_read(TIMER2,TIMER_CH_0);
timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_UP);
}
}
|
|