#include "bat.h"

void BAT_GPIOA_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE); 	
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_8;		
		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 BAT_GPIOB_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOB, ENABLE); 	
		GPIO_InitStructure.GPIO_Pin =	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(GPIOB, &GPIO_InitStructure);
}
void BAT_GPIOC_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOC, ENABLE); 	
		GPIO_InitStructure.GPIO_Pin =	GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;		
		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 BAT_GPIOD_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOD, ENABLE); 	
		GPIO_InitStructure.GPIO_Pin =	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(GPIOD, &GPIO_InitStructure);
}
void BAT_GPIOG_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOG, ENABLE); 	
		GPIO_InitStructure.GPIO_Pin =	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_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);
}

void BAT_12V_Config()
{
	BAT_GPIOA_Config();
	BAT_GPIOB_Config();
	BAT_GPIOC_Config();
	BAT_GPIOD_Config();
	BAT_GPIOG_Config();
	
}

void BAT_5V_Config()
{
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE); 	
		GPIO_InitStructure.GPIO_Pin =GPIO_Pin_12;		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
		GPIO_Init(GPIOA, &GPIO_InitStructure);
		GPIO_SetBits(GPIOA,GPIO_Pin_12);
}


void BAT12V(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, uint8_t a) {
    if(a)	  GPIO_SetBits(GPIOx,GPIO_Pin);
		else		GPIO_ResetBits(GPIOx,GPIO_Pin);	
}

void all_12VBAT(uint8_t cmd)
{
	BAT12V(GPIO0_PORT, GPIO0_PIN, cmd);
	BAT12V(GPIO1_PORT, GPIO1_PIN, cmd);
	BAT12V(GPIO2_PORT, GPIO2_PIN, cmd);
	BAT12V(GPIO3_PORT, GPIO3_PIN, cmd);
	BAT12V(GPIO4_PORT, GPIO4_PIN, cmd);
	BAT12V(GPIO5_PORT, GPIO5_PIN, cmd);
	BAT12V(GPIO6_PORT, GPIO6_PIN, cmd);
	BAT12V(GPIO7_PORT, GPIO7_PIN, cmd);
	BAT12V(GPIO8_PORT, GPIO8_PIN, cmd);
	BAT12V(GPIO9_PORT, GPIO9_PIN, cmd);
	BAT12V(GPIO10_PORT, GPIO10_PIN, cmd);
	BAT12V(GPIO11_PORT, GPIO11_PIN, cmd);
	BAT12V(GPIO12_PORT, GPIO12_PIN, cmd);
	BAT12V(GPIO13_PORT, GPIO13_PIN, cmd);
	BAT12V(GPIO14_PORT, GPIO14_PIN, cmd);
	BAT12V(GPIO15_PORT, GPIO15_PIN, cmd);
	BAT12V(GPIO16_PORT, GPIO16_PIN, cmd);
	BAT12V(GPIO17_PORT, GPIO17_PIN, cmd);
	BAT12V(GPIO18_PORT, GPIO18_PIN, cmd);
	BAT12V(GPIO19_PORT, GPIO19_PIN, cmd);
	BAT12V(GPIO20_PORT, GPIO20_PIN, cmd);
	BAT12V(GPIO21_PORT, GPIO21_PIN, cmd);
	BAT12V(GPIO22_PORT, GPIO22_PIN, cmd);
	BAT12V(GPIO23_PORT, GPIO23_PIN, cmd);
}
