【问题标题】:STM32F302 PWM Input CubeMX SettingsSTM32F302 PWM 输入 CubeMX 设置
【发布时间】:2020-05-18 08:35:54
【问题描述】:

我正在尝试在 STM32F302R8 上设置 PWM 输入来计算频率和占空比。在STM32F302x8参考手册中,它说我们需要将IC1映射到TI1CC1S = 01)并将IC2映射到TI1

为了符合 STM32F302x8 参考手册的建议,我需要 IC Selection 为通道 1 的 Direct 和通道 2 的 Indirect。我对设置进行了硬编码,并且 PWM 输入正常工作。

我想在 CubeMX 中进行设置,但它只允许 IC Selection = Direct。并且将两个通道都设置为Direct 确实不起作用,因为 IC 通道 1 的计数器始终返回 0。

我在这里做错了什么?我不确定如何在 STM32CubeMX 中正确设置 PWM 输入。

【问题讨论】:

    标签: embedded stm32 cortex-m cubemx stm32cubemx


    【解决方案1】:

    如果您将 TIM 配置中的所有内容保留为默认设置,您可以选择“组合通道”到“PWM 输入”模式,该模式会自动设置所有内容。但是,它与@Tagli 的屏幕截图显示相同。

    【讨论】:

    • Crazy_Dave,这解决了问题吗?我对你答案的最后一部分有点困惑。
    • 我的意思是,如果您在“组合通道”菜单中选择“CH1 上的 PWM 输入模式”,则自动配置的参数将与 Tagli 的屏幕截图显示的相同。这样的配置完美地解决了我的问题。在 CubeMX 生成基本代码后,您只需使用 main() 中的函数 HAL_TIM_OC_Start_IT 在两个通道上启用中断,并使用 HAL_TIM_IC_CaptureCallback 中的 HAL_TIM_ReadCapturedValue 读取 CCR1/2。然后可以轻松计算频率和占空比。顺便说一句,您不需要为 CCR 读数值加 1,也不需要使用 HAL_TIM_ReadCapturedValue 来确保 CCR1 != 0
    • 另外,您应该点击“NVIC 设置”中的“捕获比较中断”复选框
    【解决方案2】:

    我几乎没有使用 CubeMX 的经验,但您似乎需要从 Mode 窗口的 Channel2 下拉菜单中选择它。

    【讨论】:

    • 哇,好像是这样。我真的对 CubeMX 的 UI 感到困惑。您是否也知道在两个通道上使用直接与在一个通道上使用直接和在另一个通道上使用间接之间的区别?我已经看到了这两种配置的示例。
    • 在这种情况下,IC2 连接到物理 TIMx_CH2 引脚。我想仍然可以在该配置中测量 PWM 信号,但是您需要将相同的信号连接到 2 个物理引脚(这没有多大意义)。当然,该配置对于检测 2 个单独信号的周期(但不是占空比)很有用。
    • 你说的是两个通道都是“直接”的配置?
    • 例如IC1和IC2都是直连的,表示IC1接TIMx_CH1管脚,IC2接TIMx_CH2管脚。
    • 太棒了,我认为这对我来说更有意义了。但是,当我将 IC1 和 IC2 都映射到 TI1 时,这实际上在做什么?这是否意味着我将 TIMx_CH1 连接到 IC1 和 IC2? TI1代表什么?
    猜你喜欢
    • 2018-03-27
    • 2015-10-06
    • 2015-03-22
    • 2021-11-25
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多