STM32
直播中

mintsy

9年用户 1492经验值
擅长:MEMS/传感技术
私信 关注
[问答]

使用STM32cubemx的外部中断只能触发一次的原因?

配置截图在下边,还有外部输入的三路PWM方波的截图。 我们的需求是三个GPIO做外部中断,接三路PWM方波输入,方波周期为60ms,高电平20ms低电平40ms。
现在的问题是,GPIO的管脚只有配置成无上下拉模式,下降沿触发时才会收到中间那一路的波形一次,然后不再触发中断(注意三路中仅会触发中间那一路的波形)。  如果改成上拉或者下拉模式以及触发方式,其中任何一种都不会触发中断。
我没有用过外部中断,不知道为什么会出现这样的问题。 哪位有经验的朋友给说下如何解决吧,谢谢。

回帖(1)

洒下墨色

2024-5-7 18:14:24
STM32CubeMX 是 STMicroelectronics 提供的一个图形化软件配置工具,用于配置 STM32 微控制器的各种参数。在使用 STM32CubeMX 配置外部中断时,可能会遇到一些问题,如您所描述的只能触发一次的问题。这个问题可能由多种原因导致,以下是一些建议和可能的解决方案:

1. **中断优先级配置**:确保您的中断优先级配置正确。如果中断优先级设置得太高,可能会导致其他中断被阻塞,从而影响外部中断的正常触发。

2. **中断触发方式**:根据您的描述,您已经尝试了不同的触发方式(上升沿、下降沿、双沿触发等)。确保您选择了正确的触发方式,以便正确地响应外部信号。

3. **GPIO 配置**:您提到了无上下拉模式、上拉模式和下拉模式。确保您的 GPIO 配置正确。在某些情况下,上拉或下拉电阻可能对信号的稳定性产生影响,导致中断无法正常触发。您可以尝试不同的配置,以找到最适合您应用的设置。

4. **中断服务程序**:检查您的中断服务程序(ISR)是否正确处理了中断。在 ISR 中,您需要清除中断标志,以确保中断可以再次触发。如果中断标志没有被清除,中断将不会再次触发。

5. **外部信号**:您提到了三路 PWM 方波输入。确保这些信号的质量和特性符合 STM32 的要求。例如,信号的幅度、频率和占空比等参数可能会影响中断的触发。

6. **硬件连接**:检查您的硬件连接是否正确。确保 GPIO 引脚与外部信号之间的连接稳定且无短路或断路现象。

7. **软件调试**:使用调试工具(如 ST-LINK)逐步执行您的程序,观察中断触发和处理的过程。这有助于您发现潜在的问题,并找到解决方案。

8. **固件版本**:确保您使用的 STM32CubeMX 和 STM32CubeIDE 的版本是最新的。新版本的软件可能会修复一些已知的问题,提高软件的稳定性和性能。


举报

更多回帖

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