打印

GD32F150的timer2输入捕获进不了中断

[复制链接]
1141|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主



void TIM2_init(void)
{


rcu_periph_clock_enable(RCU_GPIOA);
        gpio_deinit(GPIOA);
       
        /**************Pulse Input******************/
        gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_NONE,GPIO_PIN_6);  
        gpio_af_set(GPIOA,GPIO_AF_1,GPIO_PIN_6);

                timer_parameter_struct    TIM2_BaseInitStructure;
                timer_ic_parameter_struct TIM2_CaptureInitStructure;
                rcu_periph_clock_enable(RCU_TIMER2);
                timer_deinit(TIMER2);

                TIM2_BaseInitStructure.prescaler          = 225;           
                TIM2_BaseInitStructure.alignedmode         = TIMER_COUNTER_EDGE;         
                TIM2_BaseInitStructure.counterdirection    = TIMER_COUNTER_UP;            
                TIM2_BaseInitStructure.clockdivision       = TIMER_CKDIV_DIV1;      
                TIM2_BaseInitStructure.repetitioncounter   = 0;
                TIM2_BaseInitStructure.period              = 0xFFFFFFFF;
                timer_init(TIMER2,&TIM2_BaseInitStructure);


                TIM2_CaptureInitStructure.icpolarity    = TIMER_IC_POLARITY_RISING;  
                TIM2_CaptureInitStructure.icselection   = TIMER_IC_SELECTION_DIRECTTI;
                TIM2_CaptureInitStructure.icprescaler   = TIMER_IC_PSC_DIV2;
                TIM2_CaptureInitStructure.icfilter      = 15;

                timer_input_capture_config(TIMER2,TIMER_CH_0,&TIM2_CaptureInitStructure);
                //timer_auto_reload_shadow_enable(TIMER2);
               
                timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_CH0);
                timer_interrupt_enable(TIMER2,TIMER_INT_CH0);
                nvic_irq_enable(TIMER2,2,1);       
                timer_enable(TIMER2);       
       
}

使用特权

评论回复
沙发
flasherman|  楼主 | 2021-4-27 14:22 | 只看该作者
void TIMER2_IRQHandler(void)
{
        if(timer_interrupt_flag_get(TIMER2, TIMER_INT_FLAG_CH0)!= RESET)
        {
                timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_CH0);
        }
        if(timer_interrupt_flag_get(TIMER2, TIMER_INT_FLAG_UP)!= RESET)
        {
                timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP);
        }
}

就是进不来,数据有。。。

使用特权

评论回复
板凳
flasherman|  楼主 | 2021-4-27 14:36 | 只看该作者
另一只脚的timer1同样配置,是好的,有谁知道是哪里的问题吗

使用特权

评论回复
地板
flasherman|  楼主 | 2021-4-27 14:42 | 只看该作者

中断标志都有,就是进不了中断

使用特权

评论回复
5
sonicll| | 2021-4-27 15:30 | 只看该作者
nvic_irq_enable(TIMER2,2,1); 这条语句写错了,要写中断向量编号,不是定时器编号

nvic_irq_enable(TIMER2_IRQn, 2, 1);

使用特权

评论回复
6
flasherman|  楼主 | 2021-4-27 18:18 | 只看该作者
sonicll 发表于 2021-4-27 15:30
nvic_irq_enable(TIMER2,2,1); 这条语句写错了,要写中断向量编号,不是定时器编号

nvic_irq_enable(TIMER ...

是的,就是这个问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

19

帖子

0

粉丝