中断实验相关问题

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    delay_ms(10);      	//Ïû¶¶
    switch(GPIO_Pin)
    {
        case GPIO_PIN_0:
            if(WK_UP==1) 
            {
				      for(u8 i=0;i<3;i++)
							{
							  LED3=!LED3;
							  delay_ms(500);
								LED3=!LED3;
                delay_ms(500);
							}
							printf("WK_UP Start");	}	
            
            break;
        case GPIO_PIN_8:
            if(KEY0==0)  	//¿ØÖÆLED0·­×ª 
            {
                for(u8 i=0;i<5;i++)
							{
							LED4=!LED4;
							delay_ms(500);
							LED4=!LED4;
							delay_ms(500);
							}
            }
            break;
        case GPIO_PIN_9:
            if(KEY1==0)  
            {
				      LED0=!LED0;	//¿ØÖÆLED1·­×ª
					  	printf("KEY1 Start");	
            }
            break;
	    case GPIO_PIN_2:
			if(KEY2==0)
			{
				printf("KEY2 Start");
				BEEP=1;
				delay_ms(1000);
				BEEP=0;

			}
				
    }
	}

中断函数所包括的,所有的外部中断会调用此函数

注意优先级的设置

  1. 按KEY1按键后串口打印“KEY1  Start ”,控制LED0翻转;
  2. 按KEY2按键后串口打印“ KEY2  Start ” 1s后串口打印“KEY2  End”, 同时蜂鸣器鸣响一次;
  3. 按WK_UP按键后串口打印“WK_UP  Start ” LED3每隔1s翻转一次,翻转3次后串口打印“WK_UP  End”;
  4. 按KEY0按键后串口每隔1s打印“KEY0  Start ” “KEY0  End”一次,同时LED4闪烁一次,此现象共执行五次。
  5. KEY2能够打断其他中断程序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值