hzocce 发表于 2025-5-29 15:54

赛元芯片 2个GPIO引脚边沿触发 计脉冲数 异常。

本帖最后由 hzocce 于 2025-5-29 17:14 编辑

void gpioinit(void)
{
      GPIO_Init(GPIO2,GPIO_PIN_3, GPIO_MODE_IN_PU);                              //
      EXTI_SetExtInt2xTriggerMode(INT23, EXTI_TRIGGER_FALL_ONLY);
      EXTI_ITConfig(INT2, ENABLE, HIGH);      //INT0,//EXTI_ITConfig(INT2, ENABLE, LOW);      //INT0,
      
      
      GPIO_Init(GPIO2,GPIO_PIN_2, GPIO_MODE_IN_PU);                              //
      EXTI_SetExtInt2xTriggerMode(INT22, EXTI_TRIGGER_FALL_ONLY);
      EXTI_ITConfig(INT2, ENABLE, HIGH);      //INT0,
}

然后在同一中断里面通过查询方式,是否在此引脚? 对么?
void EXTI2Interrupt()                interrupt 10
{
      
      if(!GPIO_ReadPin(GPIO2, GPIO_PIN_2))
      {
                lPulseCount_p22++;
      };
      

if(!GPIO_ReadPin(GPIO2, GPIO_PIN_3))
      {
                lPulseCount_p23++++;

      };



}

hzocce 发表于 2025-5-29 16:00

其中P22接的是AC电机的霍尔脉冲,P23是另外个电机的霍尔脉冲数。

当P22对应的设备电机没有运行的时候, lPulseCount_p23是准的,但是当P22对应的电机转动起来周,lPulseCount_p23的数值就乱跳了。

求指导

hzocce 发表于 2025-5-29 16:00

其中P22接的是AC电机的霍尔脉冲,P23是另外个电机的霍尔脉冲数。

当P22对应的设备电机没有运行的时候, lPulseCount_p23是准的,但是当P22对应的电机转动起来周,lPulseCount_p23的数值就乱跳了。

求指导

hzocce 发表于 2025-5-29 17:14

GPIO 设成高阻,上拉 都 一样,其中一个影响了另外一个。

dffzh 发表于 2025-5-30 09:05

本帖最后由 dffzh 于 2025-5-30 09:07 编辑

两个GPIO的下降沿中断为什么是在同一个外部中断里处理的呀?不是各有自己的外部中断向量表吗?
本人没用过这款MCU;你这样设计,两个电机在同时工作的时候,估计也会丢脉冲吧。
页: [1]
查看完整版本: 赛元芯片 2个GPIO引脚边沿触发 计脉冲数 异常。