STM32
直播中

斗地主之神

8年用户 744经验值
擅长:嵌入式技术
私信 关注
[问答]

STM8使用了TIM1_PWMIConfig配置,捕获PWM输入,进入不了中断是怎么回事?

使用了tiM1_PWMIConfig配置,捕获PWM输入。输入管脚有信号,但是进入不了中断。使用普通的输入捕获配置TIM1_ICInit就能进入中断

回帖(1)

cherry1989

2024-5-14 16:58:12
在STM8中,如果您使用TIM1_PWMIConfig配置捕获PWM输入,但是无法进入中断,可能是由以下几个原因导致的:

1. 中断使能:请确保您已经使能了TIM1的捕获/比较中断。在STM8中,您需要设置TIM1_IER寄存器中的相关位,例如TIM1_IER_CC1IE(捕获/比较1中断使能)。

2. 中断优先级:检查您的中断优先级设置是否正确。STM8的中断优先级分为4级,确保您的TIM1中断优先级设置在允许范围内。

3. 中断服务函数:确保您已经正确实现了TIM1中断服务函数,并且在您的代码中使用了正确的中断服务函数名称。例如,如果您使用的是TIM1_CAP_COM_IRQHandler(),则需要在代码中声明该函数。

4. 输入信号质量:检查PWM输入信号的质量,确保信号的上升沿和下降沿清晰,没有噪声。如果信号质量不佳,可能导致捕获失败。

5. 输入管脚配置:确保您的输入管脚已经正确配置为浮空输入或上拉/下拉输入。错误的管脚配置可能导致捕获失败。

6. 时钟配置:检查您的系统时钟配置,确保TIM1的时钟源和时钟分频设置正确。

7. 软件滤波:STM8的输入捕获模块具有软件滤波功能,可以通过设置TIM1_CCER寄存器中的CC1PSC和CC1CE位来实现。如果需要,您可以启用软件滤波以提高捕获的稳定性。

8. 硬件滤波:STM8的输入捕获模块还具有硬件滤波功能,可以通过设置TIM1_CCMR1寄存器中的IC1F和IC1PSC位来实现。如果需要,您可以启用硬件滤波以提高捕获的稳定性。

如果以上步骤都无法解决问题,您可以尝试使用普通的输入捕获配置TIM1_ICInit,以便进一步排查问题。同时,您也可以参考STM8的官方示例代码,以确保您的配置和实现与官方推荐的方法一致。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分