-
GD32A503 定时器7两路输入捕获不能同时工作
voidtimer7_config_icp(void){timer_ic_parameter_structtimer_icinitpara;timer_parameter_structtimer_initpara;rcu_periph_clock_enable(RCU_TIMER7);timer_deinit(TIMER7);timer_initpara.prescaler=1999;//100M/2000=0.05MHZtimer_initpara.alignedmode=TIMER_COUNTER_EDGE;timer_initpara.counterdirection=TIMER_COUNTER_UP;timer_initpara.period=65536-1;timer_initpara.clockdivision=TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter=4;timer_init(TIMER7,&timer_initpara);timer_input_trigger_source_select(TIMER7,TIMER_SMCFG_TRGSEL_CI0FE0|TIMER7,TIMER_SMCFG_TRGSEL_CI1FE1);//输入触发源为通道0timer_slave_mode_select(TIMER7,TIMER_SLAVE_MODE_RESTART);//从模式选择为复位模式timer_master_slave_mode_config(TIMER7,TIMER_MASTER_SLAVE_MODE_ENABLE);//使能从模式timer_icinitpara.icpolarity=TIMER_IC_POLARITY_RISING;//配置了CH0P[CH0NP==0,CH0P==0]:把CIxFE0的上升沿作为捕获或者从模式下触发的有效信号,并且CIxFE0不会被翻转。timer_icinitpara.icselection=TIMER_IC_SELECTION_DIRECTTI;timer_icinitpara.icprescaler=TIMER_IC_PSC_DIV1;timer_icinitpara.icfilter=4;timer_input_pwm_capture_config(TIMER7,TIMER_CH_0|TIMER_CH_1,&timer_icinitpara);timer_auto_reload_shadow_enable(TIMER7);timer_interrupt_flag_clear(TIMER7,TIMER_INT_CH0|TIMER_INT_CH1);//清除通道0中断标志位timer_interrupt_enable(TIMER7,TIMER_INT_CH0|TIMER_INT_CH1);//使能通道0中断nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);//抢占优先级4位,响应优先级0位nvic_irq_enable(TIMER7_Channel_IRQn,0,0);//使能中断服务,抢占优先级为1timer_enable(TIMER7);}
2025-10-22 0

问答