组合显示屏和按键实现两级窗口

任务:

组合显示屏和按键实现一个两级窗口,程序由三个页面组成,交互方式自定

一级窗口A:
有陀螺仪显示和LED控制两个选项,分别对应跳转二级窗口A和B

二级窗口A:
显示陀螺仪数据,如果无陀螺仪插入应当报错

二级窗口B:
显示任意两个LED状态,仅可在此界面控制LED亮灭,控制方式自定

进入二级窗口后还应当具备返回的功能,窗口可以重复调用,多次窗口跳转LED状态自锁

窗口的跳转和返回要符合菜单的思想,不能一个按键绑定一个窗口直接跳转
 
 

第一阶段

第一个界面显示,陀螺仪选择key1,LED选择key2 ok
按下key1来到二级窗口A
显示陀螺仪数据

int main (void){//主程序
	u16 t[6]={0};
	delay_ms(500); //上电时等待其他器件就绪
	RCC_Configuration(); //系统时钟初始化 
	RELAY_Init();//继电器初始化

	I2C_Configuration();//I2C初始化
	KEY_Init();
	LED_Init();
	TOUCH_KEY_Init();
	OLED0561_Init(); //OLED初始化

	  	OLED_DISPLAY_8x16_BUFFER(0,"   MPU6050");
	OLED_DISPLAY_8x16_BUFFER(2,"key1");
	OLED_DISPLAY_8x16_BUFFER(4,"    LED Control");
	OLED_DISPLAY_8x16_BUFFER(6,"key2");

	MPU6050_Init(); //MPU6050初始化

	while(1){

	if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
				OLED_DISPLAY_CLEAR();
    OLED_DISPLAY_8x16_BUFFER(0,"   MPU6050");
	OLED_DISPLAY_8x16_BUFFER(2,"X:       X:     "); //显示字符串
	OLED_DISPLAY_8x16_BUFFER(4,"Y:       Y:     "); //显示字符串
	OLED_DISPLAY_8x16_BUFFER(6,"Z:       Z:     "); //显示字符串
	while(1)
{
		MPU6050_READ(t);	//加速度
		//其中t[0~2]是加速度ACCEL,t[3~5]是陀螺仪GYRO
		OLED_DISPLAY_8x16(2,2*8,t[0]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(2,3*8,t[0]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(2,4*8,t[0]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(2,5*8,t[0]%100/10 +0x30);//
		OLED_DISPLAY_8x16(2,6*8,t[0]%10 +0x30);//
		OLED_DISPLAY_8x16(2,11*8,t[3]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(2,12*8,t[3]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(2,13*8,t[3]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(2,14*8,t[3]%100/10 +0x30);//
		OLED_DISPLAY_8x16(2,15*8,t[3]%10 +0x30);//

		OLED_DISPLAY_8x16(4,2*8,t[1]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(4,3*8,t[1]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(4,4*8,t[1]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(4,5*8,t[1]%100/10 +0x30);//
		OLED_DISPLAY_8x16(4,6*8,t[1]%10 +0x30);//
		OLED_DISPLAY_8x16(4,11*8,t[4]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(4,12*8,t[4]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(4,13*8,t[4]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(4,14*8,t[4]%100/10 +0x30);//
		OLED_DISPLAY_8x16(4,15*8,t[4]%10 +0x30);//

		OLED_DISPLAY_8x16(6,2*8,t[2]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(6,3*8,t[2]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(6,4*8,t[2]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(6,5*8,t[2]%100/10 +0x30);//
		OLED_DISPLAY_8x16(6,6*8,t[2]%10 +0x30);//
		OLED_DISPLAY_8x16(6,11*8,t[5]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(6,12*8,t[5]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(6,13*8,t[5]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(6,14*8,t[5]%100/10 +0x30);//
		OLED_DISPLAY_8x16(6,15*8,t[5]%10 +0x30);//

		delay_ms(200); //延时(决定刷新速度)

		}

 	while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 
			}
		}


	if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
				OLED_DISPLAY_CLEAR();
			OLED_DISPLAY_8x16_BUFFER(0,"   LED Control");
			OLED_DISPLAY_8x16_BUFFER(2,"LED1 TOUCH_C");
			OLED_DISPLAY_8x16_BUFFER(4,"LED2 TOUVH_D");
			 while(1)
			 {
				if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
		
			if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
			GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1))); //LED取反
				while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)); //等待按键松开 防止程序在按键没有松开的情况下反复运行
			}
		}

		
				if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){ //读按键接口的电平
		
			if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){ //读按键接口的电平
			GPIO_WriteBit(LEDPORT,LED2,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED2))); //LED取反
				while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)); //等待按键松开 防止程序在按键没有松开的情况下反复运行
			}
		}
		  }
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 
			}
		}
		
	}
}

 
现在的代码只能实现从一级窗口跳转到一个二级窗口,不能返回一级窗口,而且二级窗口之间也不能互转,到了二级窗口只能就在那个窗口。
因为代码进入了二级窗口的while(1)死循环里面了

第二阶段


int main (void){//主程序
	u16 t[6]={0};
	
	delay_ms(500); //上电时等待其他器件就绪
	RCC_Configuration(); //系统时钟初始化 
	RELAY_Init();//继电器初始化

	I2C_Configuration();//I2C初始化
	KEY_Init();
	LED_Init();
	TOUCH_KEY_Init();
	OLED0561_Init(); //OLED初始化

	  	OLED_DISPLAY_8x16_BUFFER(0,"   MPU6050");
	OLED_DISPLAY_8x16_BUFFER(2,"key1");
	OLED_DISPLAY_8x16_BUFFER(4,"    LED Control");
	OLED_DISPLAY_8x16_BUFFER(6,"key2");

	MPU6050_Init(); //MPU6050初始化

	while(1){
	  
	if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
				OLED_DISPLAY_CLEAR();
    OLED_DISPLAY_8x16_BUFFER(0,"   MPU6050");
	OLED_DISPLAY_8x16_BUFFER(2,"X:       X:     "); //显示字符串
	OLED_DISPLAY_8x16_BUFFER(4,"Y:       Y:     "); //显示字符串
	OLED_DISPLAY_8x16_BUFFER(6,"Z:       Z:     "); //显示字符串

	while(1)
{	
		MPU6050_READ(t);	//加速度
		//其中t[0~2]是加速度ACCEL,t[3~5]是陀螺仪GYRO
		OLED_DISPLAY_8x16(2,2*8,t[0]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(2,3*8,t[0]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(2,4*8,t[0]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(2,5*8,t[0]%100/10 +0x30);//
		OLED_DISPLAY_8x16(2,6*8,t[0]%10 +0x30);//
		OLED_DISPLAY_8x16(2,11*8,t[3]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(2,12*8,t[3]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(2,13*8,t[3]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(2,14*8,t[3]%100/10 +0x30);//
		OLED_DISPLAY_8x16(2,15*8,t[3]%10 +0x30);//

		OLED_DISPLAY_8x16(4,2*8,t[1]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(4,3*8,t[1]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(4,4*8,t[1]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(4,5*8,t[1]%100/10 +0x30);//
		OLED_DISPLAY_8x16(4,6*8,t[1]%10 +0x30);//
		OLED_DISPLAY_8x16(4,11*8,t[4]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(4,12*8,t[4]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(4,13*8,t[4]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(4,14*8,t[4]%100/10 +0x30);//
		OLED_DISPLAY_8x16(4,15*8,t[4]%10 +0x30);//

		OLED_DISPLAY_8x16(6,2*8,t[2]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(6,3*8,t[2]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(6,4*8,t[2]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(6,5*8,t[2]%100/10 +0x30);//
		OLED_DISPLAY_8x16(6,6*8,t[2]%10 +0x30);//
		OLED_DISPLAY_8x16(6,11*8,t[5]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(6,12*8,t[5]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(6,13*8,t[5]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(6,14*8,t[5]%100/10 +0x30);//
		OLED_DISPLAY_8x16(6,15*8,t[5]%10 +0x30);//

		delay_ms(200); //延时(决定刷新速度)

	
					if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
		
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 
			}
			break;
		}
		 }

		
		 
		

 	while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 
			}
		}


	if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
				
				OLED_DISPLAY_CLEAR();
			OLED_DISPLAY_8x16_BUFFER(0,"   LED Control");
			OLED_DISPLAY_8x16_BUFFER(2,"LED1 TOUCH_C");
			OLED_DISPLAY_8x16_BUFFER(4,"LED2 TOUVH_D");

			 while(1)
			 {
				if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
		
			if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
			GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1))); //LED取反
				while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)); //等待按键松开 防止程序在按键没有松开的情况下反复运行
			}
		}

		
				if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){ //读按键接口的电平
		
			if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){ //读按键接口的电平
			GPIO_WriteBit(LEDPORT,LED2,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED2))); //LED取反
				while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)); //等待按键松开 防止程序在按键没有松开的情况下反复运行
			}
		}
					if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
		
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 
			}
			break;
		}
		 }
			
		  
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 
			}
		}
		
	}
}

 
使用break跳出循环;需要按想要跳转的窗口对应的按键两下就可以跳转,并且LED也能实现自锁,并且只有在二级B窗口才能控制。
第一下按下是停止while循环,第二次按下才会跳转。
 
 

第三阶段

实现返回功能!
菜单:
key1 陀螺仪
key2 LED touchD 长按led1亮 双击 led2亮 单击是熄灭
touchC返回


#define KEYA_SPEED1	100	  //长按的时间长度(单位10mS)
#define KEYA_SPEED2	10	  //双击的时间长度(单位20mS)

int main (void){//主程序
	u16 t[6]={0};
u8 a=0,b,c=0;
//	u8 dir = 1;
//	u8 p=0;
	delay_ms(500); //上电时等待其他器件就绪
	RCC_Configuration(); //系统时钟初始化 
	RELAY_Init();//继电器初始化

	I2C_Configuration();//I2C初始化
	KEY_Init();
	LED_Init();
	TOUCH_KEY_Init();
	OLED0561_Init(); //OLED初始化

	//一A
	OLED_DISPLAY_8x16_BUFFER(0,"    The menu");
	OLED_DISPLAY_8x16_BUFFER(2,"key1 MPU6050");
    OLED_DISPLAY_8x16_BUFFER(4,"key2 LED Control");
	OLED_DISPLAY_8x16_BUFFER(6,"TOUCH_C Return");

	MPU6050_Init(); //MPU6050初始化

	while(1){

	
//二A  
	if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
			delay_ms(20); //延时去抖动	
		if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
	OLED_DISPLAY_CLEAR();
    OLED_DISPLAY_8x16_BUFFER(0,"   MPU6050");
	OLED_DISPLAY_8x16_BUFFER(2,"X:       X:     "); //显示字符串
	OLED_DISPLAY_8x16_BUFFER(4,"Y:       Y:     "); //显示字符串
	OLED_DISPLAY_8x16_BUFFER(6,"Z:       Z:     "); //显示字符串
	while(1){	
		MPU6050_READ(t);	//加速度
		//其中t[0~2]是加速度ACCEL,t[3~5]是陀螺仪GYRO
		OLED_DISPLAY_8x16(2,2*8,t[0]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(2,3*8,t[0]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(2,4*8,t[0]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(2,5*8,t[0]%100/10 +0x30);//
		OLED_DISPLAY_8x16(2,6*8,t[0]%10 +0x30);//
		OLED_DISPLAY_8x16(2,11*8,t[3]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(2,12*8,t[3]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(2,13*8,t[3]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(2,14*8,t[3]%100/10 +0x30);//
		OLED_DISPLAY_8x16(2,15*8,t[3]%10 +0x30);//

		OLED_DISPLAY_8x16(4,2*8,t[1]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(4,3*8,t[1]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(4,4*8,t[1]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(4,5*8,t[1]%100/10 +0x30);//
		OLED_DISPLAY_8x16(4,6*8,t[1]%10 +0x30);//
		OLED_DISPLAY_8x16(4,11*8,t[4]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(4,12*8,t[4]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(4,13*8,t[4]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(4,14*8,t[4]%100/10 +0x30);//
		OLED_DISPLAY_8x16(4,15*8,t[4]%10 +0x30);//

		OLED_DISPLAY_8x16(6,2*8,t[2]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(6,3*8,t[2]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(6,4*8,t[2]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(6,5*8,t[2]%100/10 +0x30);//
		OLED_DISPLAY_8x16(6,6*8,t[2]%10 +0x30);//
		OLED_DISPLAY_8x16(6,11*8,t[5]/10000 +0x30);//显示
		OLED_DISPLAY_8x16(6,12*8,t[5]%10000/1000 +0x30);//显示
		OLED_DISPLAY_8x16(6,13*8,t[5]%1000/100 +0x30);//
		OLED_DISPLAY_8x16(6,14*8,t[5]%100/10 +0x30);//
		OLED_DISPLAY_8x16(6,15*8,t[5]%10 +0x30);//

		delay_ms(100); //延时(决定刷新速度)

	
					if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
		
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 
			}
			break;
		}
		 	 if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
					if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)); //等待按键松开 
			}
			break;
		}



		 }

	
		 

	while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 
	
			}
		}//
							



   //二B
	if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
				
				OLED_DISPLAY_CLEAR();
			OLED_DISPLAY_8x16_BUFFER(0,"LED TOUCH_D");
			OLED_DISPLAY_8x16_BUFFER(2,"0    One");
			OLED_DISPLAY_8x16_BUFFER(4,"LED1 Long");
			OLED_DISPLAY_8x16_BUFFER(6,"LED2 Double");

			 while(1)
			 {	
		   		if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){ //检测按键是否按下
			delay_ms(20); //延时去抖动
			if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){//判断长短键
				while((!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D))&&c<KEYA_SPEED1){ //循环判断长按,到时跳转
					c++;delay_ms(10); //长按判断的计时
				}
				if(c>=KEYA_SPEED1){ //长键处理
					//长按后执行的程序放到此处
					GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1));//LED控制
					while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D));
				}else{ //单击处理
					for(b=0;b<KEYA_SPEED2;b++){//检测双击
						delay_ms(20);
						if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D)){
							a=1;
							//双击后执行的程序放到此处
							GPIO_WriteBit(LEDPORT,LED2,(BitAction)(1));//LED控制

							while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D));
						}
					}
					if(a==0){ //判断单击
						//单击后执行的程序放到此处
						GPIO_WriteBit(LEDPORT,LED1|LED2,(BitAction)(0));//LED控制
						
					}
				}
				a=0;c=0; //参数清0
			}
		} //按键判断在此结束
		
					if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
		
		//跳出循环
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 
			}
			break;
		}

		   if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
					if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)); //等待按键松开 
			}
			break;
		}

		 }
			
		  
				while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 
			}
		}

		//返回
	  			if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
			delay_ms(20); //延时去抖动
				OLED_DISPLAY_CLEAR();
	OLED_DISPLAY_8x16_BUFFER(0,"    The menu");
	OLED_DISPLAY_8x16_BUFFER(2,"key1 MPU6050");
    OLED_DISPLAY_8x16_BUFFER(4,"key2 LED Control");
	OLED_DISPLAY_8x16_BUFFER(6,"TOUCH_C Return");
			if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)){ //读按键接口的电平
				while(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C)); //等待按键松开 
			}
		}
  

		
	}
}

你可能感兴趣的:(STM32,单片机,嵌入式硬件)