STM32 - 如何在特定PWM ON时间后触发中断?

3

我是新手,接触到了ARM微控制器(STM32F411),我一直在试图使用STM的HAL库和STM32Cube找到周边设备。

我已经配置了我的板子,以便使用一些外围设备:

  • 定时器2用于以特定频率运行中断

  • 定时器3用于在其3个通道上运行PWM。

  • ADC使用4个通道进入DMA模式,用于读取某些模拟输入。

现在,假设PWM的整个周期为100ms,占空比为50%(50ms PWM开启和50ms PWM关闭)。

我希望在PWM开启的一定时间后触发中断,例如50%的时间。

因此,我希望在25ms时运行一个中断,以使用ADC对其进行采样。

您有任何关于如何实现此类中断的建议吗?

非常感谢您的帮助!


你可以在PWM周期开始时启动另一个计时器,它将在25毫秒后生成中断。 - Bence Kaulics
STM32F4有没有让我做这样一件事情的功能? - starscream
1个回答

3

由于STM32F411的ADC是在常规模式下(而不是注入模式)使用,并且仅使用四个通道中的三个通道在定时器3上生成PWM,第四个通道可以用于触发ADC。

因此,定时器3的配置如下:

  • CH1 用于输出比较模式0 (TIM3->CCMR1.OC1M = 0)
  • CH2CH3CH4 用于PWM输出

因此,TIM3->CCR1 装载一个值,该值给出25%的占空比,然后它将生成TIM3_CH1事件,可用于在您的TIM3时间基准的25%处触发ADC转换的开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接