[STM32L4] STM32L476 比较器不断生成中断。

[复制链接]
60|1
咚了个咚 发表于 2025-10-12 20:23 | 显示全部楼层 |阅读模式
用 CubeIDE 和 LL 库配置了比较器的设置,以下是生成的代码片段:
COMP_InitStruct.PowerMode = LL_COMP_POWERMODE_HIGHSPEED;
  COMP_InitStruct.InputPlus = LL_COMP_INPUT_PLUS_IO1;
  COMP_InitStruct.InputMinus = LL_COMP_INPUT_MINUS_VREFINT;
  COMP_InitStruct.InputHysteresis = LL_COMP_HYSTERESIS_HIGH;
  COMP_InitStruct.OutputPolarity = LL_COMP_OUTPUTPOL_NONINVERTED;
  COMP_InitStruct.OutputBlankingSource = LL_COMP_BLANKINGSRC_NONE;
  LL_COMP_Init(COMP1, &COMP_InitStruct);
  LL_COMP_SetCommonWindowMode(__LL_COMP_COMMON_INSTANCE(COMP1), LL_COMP_WINDOWMODE_DISABLE);

中断的代码:
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_21);
  LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_21);
  LL_EXTI_DisableFallingTrig_0_31(LL_EXTI_LINE_21);
  LL_EXTI_DisableEvent_0_31(LL_EXTI_LINE_21);
  LL_EXTI_EnableIT_0_31(LL_EXTI_LINE_21);

使用了三种 INP(正输入)的连接配置:

INP 未连接任何东西;

INP 连接到 GND;

INP 连接到 DAC 输出引脚,并设置为最大值(4095)。

在配置 1) 中,使能了比较器,并不断生成中断(一个接一个)(我在 IRQ 中清除了标志)。

在配置 2) 中,使能了比较器,并生成了一次中断。

在配置 3) 中,使能了比较器,再次不断生成中断。

也许我不理解比较器的工作原理,但在我看来,它应该只在 INP(+) > INP(-)(在我的情况下是 Vref)时生成一次中断,仅此而已。因此:

在配置 1) 中,不应该触发中断。

在配置 2) 中,不应该触发中断。

在配置 3) 中,可能会触发中断?但无论如何,不应该一直生成中断。


jf101 发表于 2025-10-12 21:21 | 显示全部楼层
是不是配置问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

69

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部