#include "led.h"

void LED_GPIOA_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE); 
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_15;		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void LED_GPIOB_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOB, ENABLE); 
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 |
																	GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 ;		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void LED_GPIOC_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOC, ENABLE); 
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 |
																	GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 ;		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void LED_GPIOD_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOD, ENABLE); 
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | 
																	GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOD, &GPIO_InitStructure);
}
void LED_GPIOE_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOE, ENABLE); 
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_All;		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOE, &GPIO_InitStructure);
}
void LED_GPIOF_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOF, ENABLE); 
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_All;		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOF, &GPIO_InitStructure);
}
void LED_GPIOG_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOG, ENABLE); 
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_0 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 ;	
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOG, &GPIO_InitStructure);
}
// LED初始化
void LED_GPIO_Config()
{
	LED_GPIOA_Config();
	LED_GPIOB_Config();
	LED_GPIOC_Config();
	LED_GPIOD_Config();
	LED_GPIOE_Config();
	LED_GPIOF_Config();
	LED_GPIOG_Config();
}
/*
*********************************************************************************************************
*	函 数 名: void led(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, uint8_t a)
*	功能说明: 操作LED
*	形    参: GPIOx: x_LEDy_GPIO_PORT(x : A-D,y :1-18).		
						GPIO_Pin:x_LEDy_PIN(x : A-D,y :1-18).
						a: ON 打开  OFF 关闭
*	返 回 值: 无
*********************************************************************************************************
*/
void led(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, uint8_t a) {
    if(a)	  GPIO_SetBits(GPIOx,GPIO_Pin);
		else		GPIO_ResetBits(GPIOx,GPIO_Pin);	
}		

//uint8_t all_whilte_light(uint8_t cmd)
//{
//	// A
//	led(A_LED1_GPIO_PORT,A_LED1_PIN,cmd);//red
//	led(A_LED3_GPIO_PORT,A_LED3_PIN,cmd);//green
//	led(A_LED4_GPIO_PORT,A_LED4_PIN,cmd);//red
//	led(A_LED6_GPIO_PORT,A_LED6_PIN,cmd);//green
//	led(A_LED7_GPIO_PORT,A_LED7_PIN,cmd);//red
//	led(A_LED9_GPIO_PORT,A_LED9_PIN,cmd);//green
//	led(A_LED10_GPIO_PORT,A_LED10_PIN,cmd);//red
//	led(A_LED12_GPIO_PORT,A_LED12_PIN,cmd);//green
//	led(A_LED13_GPIO_PORT,A_LED13_PIN,cmd);//red
//	led(A_LED15_GPIO_PORT,A_LED15_PIN,cmd);//green
//	led(A_LED16_GPIO_PORT,A_LED16_PIN,cmd);//red
//	led(A_LED18_GPIO_PORT,A_LED18_PIN,cmd);//green
//	
//	//	B
//	led(B_LED1_GPIO_PORT,B_LED1_PIN,cmd);//red
//	led(B_LED3_GPIO_PORT,B_LED3_PIN,cmd);//green
//	led(B_LED4_GPIO_PORT,B_LED4_PIN,cmd);//red
//	led(B_LED6_GPIO_PORT,B_LED6_PIN,cmd);//green
//	led(B_LED7_GPIO_PORT,B_LED7_PIN,cmd);//red
//	led(B_LED9_GPIO_PORT,B_LED9_PIN,cmd);//green
//	led(B_LED10_GPIO_PORT,B_LED10_PIN,cmd);//red
//	led(B_LED12_GPIO_PORT,B_LED12_PIN,cmd);//green
//	led(B_LED13_GPIO_PORT,B_LED13_PIN,cmd);//red
//	led(B_LED15_GPIO_PORT,B_LED15_PIN,cmd);//green
//	led(B_LED16_GPIO_PORT,B_LED16_PIN,cmd);//red
//	led(B_LED18_GPIO_PORT,B_LED18_PIN,cmd);//green
//	
//	// C
//	led(C_LED1_GPIO_PORT,C_LED1_PIN,cmd);//red
//	led(C_LED3_GPIO_PORT,C_LED3_PIN,cmd);//green
//	led(C_LED4_GPIO_PORT,C_LED4_PIN,cmd);//red
//	led(C_LED6_GPIO_PORT,C_LED6_PIN,cmd);//green
//	led(C_LED7_GPIO_PORT,C_LED7_PIN,cmd);//red
//	led(C_LED9_GPIO_PORT,C_LED9_PIN,cmd);//green
//	led(C_LED10_GPIO_PORT,C_LED10_PIN,cmd);//red
//	led(C_LED12_GPIO_PORT,C_LED12_PIN,cmd);//green
//	led(C_LED13_GPIO_PORT,C_LED13_PIN,cmd);//red
//	led(C_LED15_GPIO_PORT,C_LED15_PIN,cmd);//green
//	led(C_LED16_GPIO_PORT,C_LED16_PIN,cmd);//red
//	led(C_LED18_GPIO_PORT,C_LED18_PIN,cmd);//green
//	
//	// D
//	led(D_LED1_GPIO_PORT,D_LED1_PIN,cmd);//red
//	led(D_LED3_GPIO_PORT,D_LED3_PIN,cmd);//green
//	led(D_LED4_GPIO_PORT,D_LED4_PIN,cmd);//red
//	led(D_LED6_GPIO_PORT,D_LED6_PIN,cmd);//green
//	led(D_LED7_GPIO_PORT,D_LED7_PIN,cmd);//red
//	led(D_LED9_GPIO_PORT,D_LED9_PIN,cmd);//green
//	led(D_LED10_GPIO_PORT,D_LED10_PIN,cmd);//red
//	led(D_LED12_GPIO_PORT,D_LED12_PIN,cmd);//green
//	led(D_LED13_GPIO_PORT,D_LED13_PIN,cmd);//red
//	led(D_LED15_GPIO_PORT,D_LED15_PIN,cmd);//green
//	led(D_LED16_GPIO_PORT,D_LED16_PIN,cmd);//red
//	led(D_LED18_GPIO_PORT,D_LED18_PIN,cmd);//green
//	return 1;
//}
uint8_t all_green_light(uint8_t cmd)
{
	// A
	led(A_LED3_GPIO_PORT,A_LED3_PIN,cmd);
	led(A_LED6_GPIO_PORT,A_LED6_PIN,cmd);
	led(A_LED9_GPIO_PORT,A_LED9_PIN,cmd);
	led(A_LED12_GPIO_PORT,A_LED12_PIN,cmd);
	led(A_LED15_GPIO_PORT,A_LED15_PIN,cmd);
	led(A_LED18_GPIO_PORT,A_LED18_PIN,cmd);
	
	// B
	led(B_LED3_GPIO_PORT,B_LED3_PIN,cmd);
	led(B_LED6_GPIO_PORT,B_LED6_PIN,cmd);
	led(B_LED9_GPIO_PORT,B_LED9_PIN,cmd);
	led(B_LED12_GPIO_PORT,B_LED12_PIN,cmd);
	led(B_LED15_GPIO_PORT,B_LED15_PIN,cmd);
	led(B_LED18_GPIO_PORT,B_LED18_PIN,cmd);
	
	// C
	led(C_LED3_GPIO_PORT,C_LED3_PIN,cmd);
	led(C_LED6_GPIO_PORT,C_LED6_PIN,cmd);
	led(C_LED9_GPIO_PORT,C_LED9_PIN,cmd);
	led(C_LED12_GPIO_PORT,C_LED12_PIN,cmd);
	led(C_LED15_GPIO_PORT,C_LED15_PIN,cmd);
	led(C_LED18_GPIO_PORT,C_LED18_PIN,cmd);
	
	// D
	led(D_LED3_GPIO_PORT,D_LED3_PIN,cmd);
	led(D_LED6_GPIO_PORT,D_LED6_PIN,cmd);
	led(D_LED9_GPIO_PORT,D_LED9_PIN,cmd);
	led(D_LED12_GPIO_PORT,D_LED12_PIN,cmd);
	led(D_LED15_GPIO_PORT,D_LED15_PIN,cmd);
	led(D_LED18_GPIO_PORT,D_LED18_PIN,cmd);
	return 1;
}
uint8_t all_red_light(uint8_t cmd)
{
	// A
	led(A_LED1_GPIO_PORT,A_LED1_PIN,cmd);
	led(A_LED4_GPIO_PORT,A_LED4_PIN,cmd);
	led(A_LED7_GPIO_PORT,A_LED7_PIN,cmd);
	led(A_LED10_GPIO_PORT,A_LED10_PIN,cmd);
	led(A_LED13_GPIO_PORT,A_LED13_PIN,cmd);
	led(A_LED16_GPIO_PORT,A_LED16_PIN,cmd);
	
	// B
	led(B_LED1_GPIO_PORT,B_LED1_PIN,cmd);
	led(B_LED4_GPIO_PORT,B_LED4_PIN,cmd);
	led(B_LED7_GPIO_PORT,B_LED7_PIN,cmd);
	led(B_LED10_GPIO_PORT,B_LED10_PIN,cmd);
	led(B_LED13_GPIO_PORT,B_LED13_PIN,cmd);
	led(B_LED16_GPIO_PORT,B_LED16_PIN,cmd);
	
	// C
	led(C_LED1_GPIO_PORT,C_LED1_PIN,cmd);
	led(C_LED4_GPIO_PORT,C_LED4_PIN,cmd);
	led(C_LED7_GPIO_PORT,C_LED7_PIN,cmd);
	led(C_LED10_GPIO_PORT,C_LED10_PIN,cmd);
	led(C_LED13_GPIO_PORT,C_LED13_PIN,cmd);
	led(C_LED16_GPIO_PORT,C_LED16_PIN,cmd);
	
	// D
	led(D_LED1_GPIO_PORT,D_LED1_PIN,cmd);
	led(D_LED4_GPIO_PORT,D_LED4_PIN,cmd);
	led(D_LED7_GPIO_PORT,D_LED7_PIN,cmd);
	led(D_LED10_GPIO_PORT,D_LED10_PIN,cmd);
	led(D_LED13_GPIO_PORT,D_LED13_PIN,cmd);
	led(D_LED16_GPIO_PORT,D_LED16_PIN,cmd);
	return 1;
}
uint8_t all_yellow_light(uint8_t cmd)
{
	// A
	led(A_LED2_GPIO_PORT,A_LED2_PIN,cmd);
	led(A_LED5_GPIO_PORT,A_LED5_PIN,cmd);
	led(A_LED8_GPIO_PORT,A_LED8_PIN,cmd);
	led(A_LED11_GPIO_PORT,A_LED11_PIN,cmd);
	led(A_LED14_GPIO_PORT,A_LED14_PIN,cmd);
	led(A_LED17_GPIO_PORT,A_LED17_PIN,cmd);
	
	// B
	led(B_LED2_GPIO_PORT,B_LED2_PIN,cmd);
	led(B_LED5_GPIO_PORT,B_LED5_PIN,cmd);
	led(B_LED8_GPIO_PORT,B_LED8_PIN,cmd);
	led(B_LED11_GPIO_PORT,B_LED11_PIN,cmd);
	led(B_LED14_GPIO_PORT,B_LED14_PIN,cmd);
	led(B_LED17_GPIO_PORT,B_LED17_PIN,cmd);
	
	// C
	led(C_LED2_GPIO_PORT,C_LED2_PIN,cmd);
	led(C_LED5_GPIO_PORT,C_LED5_PIN,cmd);
	led(C_LED8_GPIO_PORT,C_LED8_PIN,cmd);
	led(C_LED11_GPIO_PORT,C_LED11_PIN,cmd);
	led(C_LED14_GPIO_PORT,C_LED14_PIN,cmd);
	led(C_LED17_GPIO_PORT,C_LED17_PIN,cmd);
	
	// D
	led(D_LED2_GPIO_PORT,D_LED2_PIN,cmd);
	led(D_LED5_GPIO_PORT,D_LED5_PIN,cmd);
	led(D_LED8_GPIO_PORT,D_LED8_PIN,cmd);
	led(D_LED11_GPIO_PORT,D_LED11_PIN,cmd);
	led(D_LED14_GPIO_PORT,D_LED14_PIN,cmd);
	led(D_LED17_GPIO_PORT,D_LED17_PIN,cmd);

	return 1;
}
uint8_t all_light(uint8_t cmd)
{
//	all_whilte_light(cmd);
	all_green_light(cmd);
	all_red_light(cmd);
	all_yellow_light(cmd);
	return 1;
}
