Embedded STM32F302 PWM输入CubeMX设置

Embedded STM32F302 PWM输入CubeMX设置,embedded,stm32,cortex-m,cubemx,stm32cubemx,Embedded,Stm32,Cortex M,Cubemx,Stm32cubemx,我试图在STM32F302R8上设置PWM输入,以计算频率和占空比。在STM32F302x8参考手册中,它说我们需要将IC1映射到TI1(CC1S=01),并将IC2映射到TI1 为了符合STM32F302x8参考手册的建议,我需要IC选择为通道1的直接,为通道2的间接。我硬编码的设置和PWM输入工作 我想在CubeMX中设置它,但它只允许IC选择=直接。而将两个通道都设为Direct则不起作用,因为IC通道1的计数器总是返回0 我做错了什么?我不确定如何在STM32CubeMX中正确

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

为了符合STM32F302x8参考手册的建议,我需要
IC选择
为通道1的
直接
,为通道2的
间接
。我硬编码的设置和PWM输入工作

我想在CubeMX中设置它,但它只允许
IC选择
=
直接
。而将两个通道都设为
Direct
则不起作用,因为IC通道1的计数器总是返回0


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

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


如果默认情况下将所有内容都保留在TIM配置中,则可以选择“组合通道”到“PWM输入”模式,该模式会自动设置所有内容。然而,这和@Tagli的截图显示是一样的。

哇,似乎就是这样。我真的被CubeMX的UI弄糊涂了。您是否也知道在两个频道上使用direct与在一个频道上使用direct与在另一个频道上使用indirect之间的区别?我见过两种配置的例子。在这种情况下,IC2连接到物理TIMx_CH2引脚。我想在这种配置下仍然可以测量PWM信号,但需要将相同的信号连接到2个物理引脚(这没有多大意义)。当然,该配置对于检测两个独立信号的周期(但不是占空比)非常有用。您所说的配置中,两个通道都是“直接”的?例如,如果IC1和IC2都是直接的,则意味着IC1连接到TIMx_CH1引脚,IC2连接到TIMx_CH2引脚。太棒了,我觉得这对我来说更有意义了。然而,当我将IC1和IC2都映射到TI1时,它实际上在做什么?这是否意味着我正在将TIMx_CH1连接到IC1和IC2?TI1代表什么?太疯狂了?Dave,这解决了问题吗?我对你答案的最后一部分有点困惑。我的意思是,如果你在“组合通道”菜单中选择“CH1上的PWM输入模式”,自动配置的参数将与Tagli的屏幕截图相同。这样的配置完美地解决了我的问题。在CubeMX生成基本代码后,您只需在main()中使用函数HAL_TIM_OC_Start_IT在两个通道上消除可恢复中断,并在HAL_TIM_IC_CaptureCallback中使用HAL_TIM_ReadCapturedValue读取CCR1/2。这样就可以很容易地计算出频率和占空比。顺便说一句,您不需要在CCR读数值上加1,也不需要为CCR1投保!=0通过使用HAL_TIM_ReadCapturedValue,您还应单击“NVIC设置”中的“捕获比较中断”复选框