用触摸按键控制流水灯流水方向或暂停 工程4

  • 接线规则
  • 除电源外LED灯接A0-A5,触摸按键接A6A7B0B1
  • 注:LED为共阳极
  #include"stm32f10x.h"
    #include"delay.h"
    #define ABC Delay(0x4FFFFF);
    #define ABD Delay(0x0FFFFF);
    #define ABE Delay(0x04FFFF);
    /*
    
    Author: Skye99
    Github: Skye99
    
    */
    
    void GPIO_Config()
    {
    	GPIO_InitTypeDef arms;
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    	arms.GPIO_Pin=GPIO_Pin_6;
    	arms.GPIO_Mode=GPIO_Mode_IPD;
    	GPIO_Init(GPIOA,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    	arms.GPIO_Pin=GPIO_Pin_7;
    	arms.GPIO_Mode=GPIO_Mode_IPD;
    	GPIO_Init(GPIOA,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    	arms.GPIO_Pin=GPIO_Pin_0;
    	arms.GPIO_Mode=GPIO_Mode_IPD;
    	GPIO_Init(GPIOB,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    	arms.GPIO_Pin=GPIO_Pin_1;
    	arms.GPIO_Mode=GPIO_Mode_IPD;
    	GPIO_Init(GPIOB,&arms);
    
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    	arms.GPIO_Mode=GPIO_Mode_Out_PP;
    	arms.GPIO_Pin=GPIO_Pin_0;
    	arms.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    	arms.GPIO_Mode=GPIO_Mode_Out_PP;
    	arms.GPIO_Pin=GPIO_Pin_1;
    	arms.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    	arms.GPIO_Mode=GPIO_Mode_Out_PP;
    	arms.GPIO_Pin=GPIO_Pin_2;
    	arms.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    	arms.GPIO_Mode=GPIO_Mode_Out_PP;
    	arms.GPIO_Pin=GPIO_Pin_3;
    	arms.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );
    	arms.GPIO_Mode=GPIO_Mode_Out_PP;
    	arms.GPIO_Pin=GPIO_Pin_4;
    	arms.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA,&arms);
    	
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    	arms.GPIO_Mode=GPIO_Mode_Out_PP;
    	arms.GPIO_Pin=GPIO_Pin_5;
    	arms.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA,&arms);
    
    }
    
    void Delay(__IO uint32_t nCount)
    {
    	for(; nCount != 0; nCount--);
    }
    
    int main()
    {
    	int i=0;
    	int c=0;
    	int choose=0;
    	GPIO_Config();
    	while(1)
    	{
    	if(GPIO_ReadInputDataBit( GPIOA,GPIO_Pin_6)==1)
    {
      while(GPIO_ReadInputDataBit( GPIOA,GPIO_Pin_6)==1);
    	choose=1;
    }
    if(GPIO_ReadInputDataBit( GPIOA,GPIO_Pin_7)==1)
    {
      while(GPIO_ReadInputDataBit( GPIOA,GPIO_Pin_7)==1);
    	choose=2;
    }
    if(GPIO_ReadInputDataBit( GPIOB,GPIO_Pin_0)==1)
    {
      while(GPIO_ReadInputDataBit( GPIOB,GPIO_Pin_0)==1);
    	choose=3;
    }
    if(GPIO_ReadInputDataBit( GPIOB,GPIO_Pin_1)==1)
    {
      while(GPIO_ReadInputDataBit( GPIOB,GPIO_Pin_1)==1);
    	choose=4;
    }
    if(choose==2)
    {
    	c=99;
    }
    if(choose==1)
    {
    	switch(c){
    		case 0:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_5);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
    		ABE;c++;break;}
    		case 1:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_0);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_1);
    		ABE;c++;break;}
    		case 2:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_1);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_2);
    		ABE;c++;break;}
    		case 3:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_2);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_3);
    		ABE;c++;break;}
    		case 4:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_3);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_4);
    			ABE;c++;break;}
    		case 5:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_4);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_5);
    			ABE;c++;break;}
    		case 99:{break;}
    	}
    }
    if(choose==3)
    {
    	switch(c){
    	case 0:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_0);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_5);
    		ABE;c++;break;}
    		case 1:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_5);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_4);
    		ABE;c++;break;}
    		case 2:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_4);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_3);
    		ABE;c++;break;}
    		case 3:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_3);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_2);
    		ABE;c++;break;}
    		case 4:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_2);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_1);
    			ABE;c++;break;}
    		case 5:{
    		GPIO_SetBits(GPIOA,GPIO_Pin_1);
    		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
    			ABE;c++;break;}
    		case 99:{break;}
    	}
    }
    	if(c>=6)
    	{c=0;}
    } 
    }`

用触摸按键控制流水灯流水方向或暂停 工程4