初级会员 
  
	- 积分
 - 163
 
        - 金钱
 - 163 
 
       - 注册时间
 - 2020-5-11
 
      - 在线时间
 - 26 小时
 
 
 
 | 
 
1金钱 
如题,选择STM32F407ZET6的PB5作为外部按键的输入,烧录程序后按下按键,程序直接卡死。 
代码如下: 
初始化部分 
void EnCo_Init(){ 
        /*定义初始化结构体*/ 
        NVIC_InitTypeDef KEYNVICInitStructure; 
        EXTI_InitTypeDef KEYEXTIInitStructure; 
        GPIO_InitTypeDef GPIOInitStructure; 
        /*使能相关时钟*/ 
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); 
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);//使能时钟 
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB,EXTI_PinSource5);//链接PE2到外部中断线2 
         
        // PB5 设置为输入 
        GPIOInitStructure.GPIO_Pin=GPIO_Pin_5; 
        GPIOInitStructure.GPIO_Mode = GPIO_Mode_IN; 
        GPIOInitStructure.GPIO_Speed = GPIO_Speed_100MHz; 
        GPIOInitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉输入 
        GPIO_Init(GPIOB,&GPIOInitStructure); 
         
        //配置PB5外部中断线 
        KEYEXTIInitStructure.EXTI_Line = EXTI_Line5; 
        KEYEXTIInitStructure.EXTI_LineCmd=ENABLE; 
        KEYEXTIInitStructure.EXTI_Mode=EXTI_Mode_Interrupt; 
        KEYEXTIInitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发 
        EXTI_Init(&KEYEXTIInitStructure); 
         
        //PB5外部中断配置 
        KEYNVICInitStructure.NVIC_IRQChannel= EXTI9_5_IRQn;  
        KEYNVICInitStructure.NVIC_IRQChannelCmd= ENABLE; 
        KEYNVICInitStructure.NVIC_IRQChannelPreemptionPriority=0; 
        KEYNVICInitStructure.NVIC_IRQChannelSubPriority=1; 
        NVIC_Init(&KEYNVICInitStructure); 
} 
// PB5外部中断函数 
void EXTI9_5_IRQnHandler(void){ 
         
        if(EXTI_GetFlagStatus(EXTI_Line5)!=RESET){ 
                 
        EXTI_ClearITPendingBit(EXTI_Line5);//清除LINE5上的中断标志位  
        } 
} 
 
 
中断服务函数,增加延时软件消抖后,MCU仍然死机。 
 |   
 
 
 
 
 
 |