/*************************** (C) COPYRIGHT 2017 CXHY ****************************
 * 文件名  ：key.c
 * 描  述  ：拨码开关驱动程序
 * 版  本  ：V1.0
 * 作  者  ：XuZhongPing
 * 日  期  ：2017/03/06 
*********************************************************************************/
#include "sw_key.h"
#include "delay.h"
#include "usart.h"

//拨码开关
#define SW_KEY1_PORT				GPIOB						
#define SW_KEY1_PIN					GPIO_Pin_4
#define SW_KEY2_PORT				GPIOB								
#define SW_KEY2_PIN					GPIO_Pin_3
#define SW_KEY3_PORT				GPIOD								
#define SW_KEY3_PIN					GPIO_Pin_7
#define SW_KEY4_PORT				GPIOD							
#define SW_KEY4_PIN					GPIO_Pin_6
#define SW_KEY5_PORT				GPIOD							
#define SW_KEY5_PIN					GPIO_Pin_5
#define SW_KEY6_PORT				GPIOD							
#define SW_KEY6_PIN					GPIO_Pin_4
	
/*
***********************************************************************
*	函 数 名: SwKeyInit
*	功能说明: 拔码开关IO口初始化
*	形    参：无
*	返 回 值: 无
***********************************************************************
*/
void SwKeyInit(void)
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);
	
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = SW_KEY1_PIN;			 				
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 		
	GPIO_Init(SW_KEY1_PORT, &GPIO_InitStructure);	
	
	GPIO_InitStructure.GPIO_Pin = SW_KEY2_PIN;			 				
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 		
	GPIO_Init(SW_KEY2_PORT, &GPIO_InitStructure);	
	
	GPIO_InitStructure.GPIO_Pin = SW_KEY3_PIN;			 				
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 		
	GPIO_Init(SW_KEY3_PORT, &GPIO_InitStructure);	
	
	GPIO_InitStructure.GPIO_Pin = SW_KEY4_PIN;			 				
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 		
	GPIO_Init(SW_KEY4_PORT, &GPIO_InitStructure);	
	
	GPIO_InitStructure.GPIO_Pin = SW_KEY5_PIN;			 				
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 		
	GPIO_Init(SW_KEY5_PORT, &GPIO_InitStructure);	
	
	GPIO_InitStructure.GPIO_Pin = SW_KEY6_PIN;			 				
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 		
	GPIO_Init(SW_KEY6_PORT, &GPIO_InitStructure);	
}

/*
***********************************************************************
*	函 数 名: SwKeysCanning
*	功能说明: 拨码开关扫描
*	形    参：无
*	返 回 值: 返回对应开关的键值
***********************************************************************
*/
uint8_t SwKeysCanning(void)
{
	uint8_t res = 0;
	
	uint8_t res1 = 0;
	uint8_t res2 = 0;
	uint8_t res3 = 0;
	uint8_t res4 = 0;
	uint8_t res5 = 0;
	uint8_t res6 = 0;
	
	delay_ms(10);
	if(SW_KEY1 == 0)
	{
		res1 = 1;
	}
	if(SW_KEY2 == 0)
	{
		res2 = 1;
	}
	if(SW_KEY3 == 0)
	{
		res3 = 1;
	}
	if(SW_KEY4 == 0)
	{
		res4 = 1;
	}
	if(SW_KEY5 == 0)
	{
		res5 = 1;
	}
	if(SW_KEY6 == 0)
	{
		res6 = 1;
	}
	
	res = (res6 << 5) | (res5 << 4) | (res4 << 3) | (res3 << 2) | (res2 << 1) | res1;
	printf("\r\nswkey = %x\r\n", res);

	return res;
}

/******************** (C) COPYRIGHT 2018 Ping *****END OF FILE*******************/
