你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G431 ADC只有软件触发,无法通过硬件触发

[复制链接]
岳晟恭睢 提问时间:2026-8-11 12:52 / 未解决

ADC-1.pngADC-2.png

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注入采集却一直没有通过他触发。

ADC-1.png
ADC-2.png
收藏 评论2 发布时间:2026-8-11 12:52

举报

2个回答
cove 回答时间:前天 18:24

签到

xmshao 回答时间:昨天 10:59

从你给出的信息来看,使用TIM1-CH4的ocref信号作为TRGO 去出发ADC,一般来讲是可以的。

我这边也验证了。你选择这个配置,有个小要求,那就你得保证有PWM波形可以实现,当然并非一定要输出。换言之,CH4理论上应该有上下沿的变化,否则会出现无触发情形。

image.png

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版