STM32 - 如何在某个PWM导通时间后触发中断?

时间:2016-09-30 22:27:39

标签: timer stm32 stm32f4discovery stm32f4 stm32-hal

我是ARM MCU的新手(STM32F411),我一直在尝试使用STM的HAL库和STM32Cube来寻找外围设备。

我已配置好我的主板以使用某些外围设备:

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

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

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

现在让我们假设PWM的整个周期 100 ms 且其占空比为50%( 50 ms PWM on和 50 ms PWM关闭。)

我想在PWM开启一定时间后触发中断,让我们说50%。

因此,我想在25 ms运行一个中断,以便使用ADC对其模拟输入进行采样。

你有什么建议我怎么能实现这种中断?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

由于STM32F411的ADC用于常规模式(注入模式),并且在定时器3上仅使用四个通道中的四个通道,因此第四个通道可用于触发ADC。

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

  • CH1 用于 输出比较模式0 (TIM3-&gt; CCMR1.OC1M = 0) < / LI> CH2 CH3 CH4 用于 PWM输出

因此 TIM3-> CCR1 被加载到占空比为25%的值,然后它将产生TIM3_CH1事件,可用于触发ADC转换开始时的25%你的TIM3时基。