我是 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)<
- CH2、CH3、CH4用于PWM输出
因此,TIM3->CCR1 被加载到一个提供 25% 占空比的值,然后它将生成 TIM3_CH1 事件,可用于在 25% 时触发 ADC 转换开始TIM3 时基。
关于timer - STM32 - 如何在一定的 PWM ON 时间后触发中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39800953/