-
求助定时器ETI中断
F470驱动5个电机,同时需要5个脉冲个数反馈用来计算电机的位置。现在5个电机都可以用,用定时器ETI的获取脉冲数,TIMER1,TIMER2,TIMER3三个L1定时器都能工作,并且可以进入中断,但是二个高级定时器TIMER0和TIMER7。可以获取脉冲数,但是不能进入中断,被这个问题折磨了2天,还是没有弄好。以下是TIME0的代码。可以获取脉冲数,但是不能进入中断voidFb_3_Init(void){/*开启时钟*/rcu_periph_clock_enable(RCU_GPIOE);/*复用TIMER0_ETI到PE7*/gpio_mode_set(GPIOE,GPIO_MODE_AF,GPIO_PUPD_PULLDOWN,GPIO_PIN_7);gpio_output_options_set(GPIOE,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_7);gpio_af_set(GPIOE,GPIO_AF_1,GPIO_PIN_7);gpio_bit_reset(GPIOE,GPIO_PIN_7);timer_parameter_structtimer_initpara;/*使能TIMER0外设时钟*/rcu_periph_clock_enable(RCU_TIMER0);/*配置定时器时钟为CK_AHB总线时钟*/rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4);/*复位定时器TIMER0*/timer_deinit(TIMER0);/*TIMER0parameterconfiguration*/timer_initpara.prescaler=0;timer_initpara.alignedmode=TIMER_COUNTER_EDGE;timer_initpara.counterdirection=TIMER_COUNTER_UP;timer_initpara.period=200;timer_initpara.clockdivision=TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter=0;timer_init(TIMER0,&timer_initpara);//如果外部时钟模式0和外部时钟模式1同时被配置,外部时钟的输入是ETIF/*定时器从模式选择*/timer_slave_mode_select(TIMER0,TIMER_SLAVE_MODE_EXTERNAL0);/*从模式配置寄存器(TIMERx_SMCFG)TRGS[2:0]用来指定选择哪一个信号作为用来同步计数器的触发输入源*/timer_input_trigger_source_select(TIMER0,TIMER_SMCFG_TRGSEL_ETIFP);/*从模式配置寄存器(TIMERx_SMCFG[14])SMC1从模式控制=>外部时钟模式1配置*/timer_external_clock_mode1_config(TIMER0,TIMER_EXT_TRI_PSC_OFF,TIMER_ETP_RISING,0X
2025-02-07 0