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

标签 timer stm32 stm32f4discovery stm32f4 stm32-hal

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

为了使用一些外围设备,我已经配置了我的开发板:

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

  • 定时器 3 用于在它的 3 个 channel 上运行 PWM。

  • ADC 有 4 个 channel ,进入 DMA 模式,用于读取一些模拟输入。

现在让我们假设 PWM 的整个周期为 100 毫秒,其占空比为 50%(50 毫秒 PWM 开启,50 毫秒 PWM 关闭)。

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

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

你对我如何实现这种中断有什么建议吗?

预先感谢您的帮助!

最佳答案

由于STM32F411的ADC是在Regular模式下使用的(不是 Injected模式),四个 channel 中只有三个 channel 用于在Timer 3上产生PWM,所以第四个 channel 可以用来触发ADC。

因此定时器 3 配置如下:

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

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

关于timer - STM32 - 如何在一定的 PWM ON 时间后触发中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39800953/

相关文章:

java - 如何用Java制作倒计时器?

c - STM32F103如何使用ENC28j60

c - mbedTLS sha256 的性能现实吗?

STM32cubeMX固件包

c - STM32单次操作持续时间是多少

java - 取消Timer类对象后如何重新创建它?

c# - 从静态时间回调调用实例方法

c - ARM Cortex M4 处理器中耗时的测试 C 代码中出现错误 SEGV

c - 嵌入式系统上与频率相关的正弦波发生器

flutter - 如何在 Flutter 中一段时间​​不活动后执行函数