 
ADC(1、2除通道不同其他均一致)使用如图配置,TIM1主要配置为
TIM_InitStruct.Prescaler = 0;
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_CENTER_DOWN;
TIM_InitStruct.Autoreload = 4249;
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
TIM_InitStruct.RepetitionCounter = 0;
LL_TIM_Init(TIM1, &TIM_InitStruct);
LL_TIM_OC_EnablePreload(TIM1, LL_TIM_CHANNEL_CH4);
TIM_OC_InitStruct.CompareValue = 170;
LL_TIM_OC_Init(TIM1, LL_TIM_CHANNEL_CH4, &TIM_OC_InitStruct);
LL_TIM_OC_DisableFast(TIM1, LL_TIM_CHANNEL_CH4);
LL_TIM_SetTriggerOutput(TIM1, LL_TIM_TRGO_OC4REF);
LL_TIM_SetTriggerOutput2(TIM1, LL_TIM_TRGO2_OC4);
主函数调用
LL_TIM_EnableIT_CC4(TIM1);
LL_ADC_EnableIT_JEOS(ADC1);
LL_ADC_EnableIT_JEOS(ADC2);
LL_ADC_Enable(ADC1);
LL_ADC_Enable(ADC2);
// 使能时钟
LL_TIM_EnableCounter(TIM1);
LL_TIM_EnableCounter(TIM2);
可以触发TIM1_CC4中断,但是ADC中断不触发,且ADC采集值不更新。
在TIM1_CC4中断中调用SET_BIT(ADC1->CR, ADC_CR_JADSTART);ADC有采集可以触发中断且值更新。
尝试使用TIM3配置使用ITR0(TIM1_TRGO)触发,TIM3可以启动,说明TIM1_TRGO触发没问题,但是ADC注入采集却一直没有通过他触发。 |
签到
从你给出的信息来看,使用TIM1-CH4的ocref信号作为TRGO 去出发ADC,一般来讲是可以的。
我这边也验证了。你选择这个配置,有个小要求,那就你得保证有PWM波形可以实现,当然并非一定要输出。换言之,CH4理论上应该有上下沿的变化,否则会出现无触发情形。