[国产单片机] 赛元芯片 2个GPIO引脚边沿触发 计脉冲数 异常。

[复制链接]
 楼主| hzocce 发表于 2025-5-29 15:54 | 显示全部楼层 |阅读模式
本帖最后由 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;你这样设计,两个电机在同时工作的时候,估计也会丢脉冲吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

617

帖子

4

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