请教PA、PB中断不能同时响应的问题

单独使能PA的多个IO口中断,中断能正常触发,程序运行也正常;

先使能PA的IO口中断,再使能PB口的PIN12中断时,PA口的中断不能触发,PB口的中断可以正常触发,但触发后,退出中断处理后,程序好象死机了。


请问   1、PA、PB是否可以同时使能IO口中断?

          2、PB 12的中断处理是否有什么需要特别注意的地方?


void HAL_SleepInit(void)

{

#if(defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)

  GPIOA_ModeCfg( GPIO_Pin_4 |GPIO_Pin_8 |GPIO_Pin_13, GPIO_ModeIN_PU );                //初始化IO状态

  GPIOA_ITModeCfg( GPIO_Pin_4 |GPIO_Pin_8 |GPIO_Pin_13, GPIO_ITMode_FallEdge );        // 设置下降沿唤醒

  PFIC_EnableIRQ( GPIO_A_IRQn );                              //开启GPIO中断 PA口

  GPIOB_ModeCfg( GPIO_Pin_12, GPIO_ModeIN_PU );                //初始化IO状态

  GPIOB_ITModeCfg( GPIO_Pin_12, GPIO_ITMode_FallEdge );        // 设置下降沿唤醒

  PFIC_EnableIRQ( GPIO_B_IRQn );                              //开启GPIO中断 PA口


  PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE, Long_Delay );//开启GPIO唤醒使能

#if 0

    sys_safe_access_enable();

    R8_SLP_WAKE_CTRL |= RB_SLP_RTC_WAKE; // RTC唤醒

    sys_safe_access_enable();

    R8_RTC_MODE_CTRL |= RB_RTC_TRIG_EN;  // 触发模式

    sys_safe_access_disable();              //

    PFIC_EnableIRQ(RTC_IRQn);

#endif

#endif

}


__INTERRUPT

__HIGH_CODE

void GPIOA_IRQHandler( void )

{

  GPIOA_ClearITFlagBit( GPIO_Pin_4 |GPIO_Pin_8 |GPIO_Pin_13 );  //GPIO唤醒会进中断,要清除GPIO中断

}


void GPIOB_IRQHandler( void )

{

  GPIOB_ClearITFlagBit( GPIO_Pin_12 );  //GPIO唤醒会进中断,要清除GPIO中断

}



从贴出的程序来看,PB中断缺少

__INTERRUPT
__HIGH_CODE

应该是:

__INTERRUPT
__HIGH_CODE
void GPIOB_IRQHandler( void )
{
  GPIOB_ClearITFlagBit( GPIO_Pin_12 );  //GPIO唤醒会进中断,要清除GPIO中断
}



非常感谢您的回复,您的建议,稍后我会测试。


但PA中断为什么不会触发呢?在添加PB中断配置之前,PA中断触发、响应都是正常的



添加PB中断唤醒对PA是没有影响的,可以将代码修改后再测试看看,


只有登录才能回复,可以选择微信账号登录