关于STM32103系列外部中断有个问题想请教一下

2019-07-21 07:25发布


这是我写的一段外部中断部分代码,
#define GET_BEEP PAin(0)
uint16_t beep_time;
uint8_t  beep_flag;

void EXTI2_INT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //IO时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //外部中断时钟使能
//配置中断引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//清零
//连接中断线
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
//中断模式配置
EXTI_DeInit();
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//任意电平触发(上升+下降)
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init( &EXTI_InitStructure );
/*配置中断优先级*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init( &NVIC_InitStructure );
}
//外中断处理
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET)
{
  if(GET_BEEP)    //IO输入高电平
  {
   beep_flag=1;
  }
  else
  {
   beep_flag=0;
  }
  EXTI_ClearITPendingBit(EXTI_Line0);
}
}

主程序有关中断部分:
if(beep_flag)
{
printf("beep is ok");

}
else
printf("beep is not");

串口部分已经初始化过,打印其他正常,感觉是外中断没有进去,但是对比了几遍都没发现问题,现在想请各位前辈帮忙看下有什么问题。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。