/*************************** (C) COPYRIGHT 2018 Ping ****************************
 * 文件名  ：key.h
 * 描  述  ：按键开关驱动程序头文件
 * 版  本  ：V1.0
 * 作  者  ：XuZhongPing
 * 日  期  ：2017/03/06 
*********************************************************************************/
#ifndef __KEY_H
#define __KEY_H	 
#include "stm32f10x.h"
#include "stdio.h"
#include "device.h"

#define KEY1				GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5)			//按键1输入
#define KEY2				GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)			//按键2输入
#define KEY3				GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5)			//按键3输入
#define KEY4				GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1)			//按键4输入

//注：第2、3、4路的限位根据硬件接口接线顺序来做相应的转换对应
//主板原来的顺序
#ifdef FOUR_CHANNEL_AND_HARMFUL
#define LIMI_KEY1		GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8)			//限位开关1
#define LIMI_KEY2		GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)			//限位开关2
#define LIMI_KEY3		GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0)			//限位开关3
#define LIMI_KEY4		GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1)			//限位开关4

#else
#define LIMI_KEY1 	GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8)			//限位开关1
#define LIMI_KEY4  	GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)			//限位开关4
#define LIMI_KEY2  	GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0)			//限位开关2
#define LIMI_KEY3 	GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1)			//限位开关3
#endif

extern uint8_t keyBit;											//按键采集按位组合后的值
extern uint8_t keyReleaseMark;							//按键松开标志
extern uint8_t keyValue;										//按钮键值

extern uint8_t keyNum;											//向外输出的按键编号
extern uint8_t keyStatus;										//对应输出的按键状态

extern uint8_t limitKey1Value;							//限位开关键值
extern uint8_t limitKey2Value;							//限位开关键值

extern uint8_t optoKeyStatus;								//光电开关状态（由MCU2传入）
extern uint8_t humanSensingKeyStatus;				//人体感应开关状态

extern uint8_t keyType;											//0:机械按键；1：触摸按键

void KeyInit(void);													//按键初始化
uint8_t KeyScanning(void);									//机械按键扫描检测
uint8_t TouchKeyScanning(void);							//触摸按键扫描检测
void SetKeyLedON(uint8_t whichOne);					//点亮对应按键的指示灯
void SetKeyLedAllON(void);									//点亮全部按键的指示灯
void SetKeyLedOFF(uint8_t whichOne);		    //熄灭对应按键的指示灯
void SetKeyLedAllOFF(void);									//熄灭全部按键的指示灯

void KeysTest(void);
void LimitKeysTest(void);

#endif

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