stm8l10x_tsl_ct_acquisition.c
来自「STM8s」· C语言 代码 · 共 2,078 行 · 第 1/4 页
C
2,078 行
/**
******************************************************************************
* @file stm8l10x_tsl_ct_acquisition.c
* @author MCD Application Team
* @version V2.3.1
* @date 14-February-2011
* @brief STM8 Touch Sensing Library - This file provides all the functions
* to manage the Charge-Transfer acquisition based on STM8L10x devices.
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
*/
/* Includes ------------------------------------------------------------------*/
#include "stm8l10x_tsl_ct_acquisition.h"
#include "stm8_tsl_services.h"
#if defined(CHARGE_TRANSFER) && defined(STM8L10X)
/* This file is use only with the STM8L10x product */
/* --------------- SECTION DEFINITION FOR THIS FILE ---------------------*/
#if defined(_COSMIC_) && defined(USE_PRAGMA_SECTION)
#pragma section [TSL_IO_RAM]
#pragma section @tiny [TSL_IO_RAM0]
#pragma section const {TSL_IO_CONST}
#pragma section (TSL_IO_CODE)
#endif
#if SPREAD_SPECTRUM
static u8 SpreadCounter;
u8 Previous_calibration_value;
#endif
/*define the SAMPLING capacitor comparator channel mask*/
#if (SAMP_CAP_CH == CH1)
/*define the sampling capacitor port*/
#define SAMP_CAP_PORT (GPIOB)
#define SAMP_CAP_IO_MASK_1 (0x01) /*PB0*/
#define SAMP_CAP_IO_MASK_2 (0x04) /*PB2*/
/*both comparators are used*/
#if defined(COMP1) && defined(COMP2)
#define SAMP_CAP_COMP_MASK (0x11)
#define SAMP_CAP_IO_MASK (0x05) /*PB2 and PB0*/
#elif defined(COMP1)
/*only the comparator 1 is used*/
#define SAMP_CAP_COMP_MASK (0x01)
#define SAMP_CAP_IO_MASK (0x01) /*PB0*/
#elif defined(COMP2)
/*only the comparator 2 is used*/
#define SAMP_CAP_COMP_MASK (0x10)
#define SAMP_CAP_IO_MASK (0x04) /*PB2*/
#else
#error "COMPARATOR definition wrong"
#endif
#elif (SAMP_CAP_CH == CH2)
#define SAMP_CAP_PORT (GPIOB)
#define SAMP_CAP_IO_MASK_1 (0x02) /*PB1*/
#define SAMP_CAP_IO_MASK_2 (0x08) /*PB3*/
/*both comparators are used*/
#if defined(COMP1) && defined(COMP2)
#define SAMP_CAP_COMP_MASK (0x22)
#define SAMP_CAP_IO_MASK (0x0A) /*PB3 and PB1*/
#elif defined(COMP1)
/*only the comparator 1 is used*/
#define SAMP_CAP_COMP_MASK (0x02)
#define SAMP_CAP_IO_MASK (0x02) /*PB1*/
#elif defined(COMP2)
/*only the comparator 2 is used*/
#define SAMP_CAP_COMP_MASK (0x20)
#define SAMP_CAP_IO_MASK (0x08) /*PB3*/
#else
#error "COMPARATOR definition wrong"
#endif
#elif (SAMP_CAP_CH == CH3)
#define SAMP_CAP_PORT (GPIOD)
#define SAMP_CAP_IO_MASK_1 (0x01) /*PD0*/
#define SAMP_CAP_IO_MASK_2 (0x04) /*PD2*/
/*both comparators are used*/
#if defined(COMP1) && defined(COMP2)
#define SAMP_CAP_COMP_MASK (0x44)
#define SAMP_CAP_IO_MASK (0x05) /*PD2 and PD0*/
#elif defined(COMP1)
/*only the comparator 1 is used*/
#define SAMP_CAP_COMP_MASK (0x04)
#define SAMP_CAP_IO_MASK (0x01) /*PD0*/
#elif defined(COMP2)
/*only the comparator 2 is used*/
#define SAMP_CAP_COMP_MASK (0x40)
#define SAMP_CAP_IO_MASK (0x04) /*PD2*/
#else
#error "COMPARATOR definition wrong"
#endif
#elif (SAMP_CAP_CH == CH4)
#define SAMP_CAP_PORT (GPIOD)
#define SAMP_CAP_IO_MASK_1 (0x02) /*PD1*/
#define SAMP_CAP_IO_MASK_2 (0x08) /*PD3*/
/*both comparators are used*/
#if defined(COMP1) && defined(COMP2)
#define SAMP_CAP_COMP_MASK (0x88)
#define SAMP_CAP_IO_MASK (0x0A) /*PD3 and PD1*/
#elif defined(COMP1)
/*only the comparator 1 is used*/
#define SAMP_CAP_COMP_MASK (0x08)
#define SAMP_CAP_IO_MASK (0x02) /*PD1*/
#elif defined(COMP2)
/*only the comparator 2 is used*/
#define SAMP_CAP_COMP_MASK (0x80)
#define SAMP_CAP_IO_MASK (0x08) /*PD3*/
#else
#error "COMPARATOR definition wrong"
#endif
#endif
/*define the PORT1 comparator channel mask*/
#if ((SCKEY_P1_CH == CH1) || MKEY_CH1_MASK)
#define P1_PORT (GPIOB)
#define P1_IO_MASK_1 (0x01) /*PB0*/
#define P1_IO_MASK_2 (0x04) /*PB2*/
#if (SCKEY_P1_CH == CH1)
#if ((SCKEY_P1_A == GROUP1) && (SCKEY_P1_B == GROUP2)) || ((SCKEY_P1_A == GROUP2) && (SCKEY_P1_B == GROUP1))
#define SCKEY_P1_COMP_MASK (0x11)
#define SCKEY_P1_IO_MASK (0x05) /*PB2 and PB0*/
#define SCKEY_P1_STATE_MASK (0x03)
#elif (SCKEY_P1_A == GROUP1) || (SCKEY_P1_B == GROUP1)
#define SCKEY_P1_COMP_MASK (0x01)
#define SCKEY_P1_IO_MASK (0x01) /*PB0*/
#define SCKEY_P1_STATE_MASK (0x01)
#elif (SCKEY_P1_A == GROUP2) || (SCKEY_P1_B == GROUP2)
#define SCKEY_P1_COMP_MASK (0x10)
#define SCKEY_P1_IO_MASK (0x04) /*PB2*/
#define SCKEY_P1_STATE_MASK (0x02)
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif // end of #if (SCKEY_P1_CH == CH1)
/*Multi channel key*/
#if (MKEY_CH1_MASK == (GROUP1|GROUP2))
#define MCKEY_P1_COMP_MASK (0x11)
#define MCKEY_P1_IO_MASK (0x05) /*PB0 and PB2*/
#define MCKEY_P1_STATE_MASK (0x03)
#elif MKEY_CH1_MASK == GROUP1
#define MCKEY_P1_COMP_MASK (0x01)
#define MCKEY_P1_IO_MASK (0x01) /*PB0*/
#define MCKEY_P1_STATE_MASK (0x01)
#elif MKEY_CH1_MASK == GROUP2
#define MCKEY_P1_COMP_MASK (0x10)
#define MCKEY_P1_IO_MASK (0x04)/*PB2*/
#define MCKEY_P1_STATE_MASK (0x02)
#else
#define MCKEY_P1_COMP_MASK (0x00)
#define MCKEY_P1_IO_MASK (0x00)
#define MCKEY_P1_STATE_MASK (0x00)
#endif
#if ACTIVE_SHIELD_GROUP == GROUP1
#define ASHLD_P1_COMP_MASK (0x01)
#define ASHLD_P1_IO_MASK (0x01) /*PB0*/
#define ASHLD_P1_STATE_MASK (0x01)
#elif ACTIVE_SHIELD_GROUP == GROUP2
#define ASHLD_P1_COMP_MASK (0x10)
#define ASHLD_P1_IO_MASK (0x04) /*PB2*/
#define ASHLD_P1_STATE_MASK (0x02)
#else
#define ASHLD_P1_COMP_MASK (0x00)
#define ASHLD_P1_IO_MASK (0x00)
#define ASHLD_P1_STATE_MASK (0x00)
#endif
#define P1_COMP_MASK (SCKEY_P1_COMP_MASK | MCKEY_P1_COMP_MASK | ASHLD_P1_COMP_MASK)
#define P1_IO_MASK (SCKEY_P1_IO_MASK | MCKEY_P1_IO_MASK | ASHLD_P1_IO_MASK)
#define P1_STATE_MASK (SCKEY_P1_STATE_MASK | MCKEY_P1_STATE_MASK | ASHLD_P1_STATE_MASK)
#elif ((SCKEY_P1_CH == CH2) || MKEY_CH2_MASK)
#define P1_PORT (GPIOB)
#define P1_IO_MASK_1 (0x02) /*PB1*/
#define P1_IO_MASK_2 (0x08) /*PB3*/
#if (SCKEY_P1_CH == CH2)
#if ((SCKEY_P1_A == GROUP1) && (SCKEY_P1_B == GROUP2)) || ((SCKEY_P1_A == GROUP2) && (SCKEY_P1_B == GROUP1))
#define SCKEY_P1_COMP_MASK (0x22)
#define SCKEY_P1_IO_MASK (0x0A) /*PB3 and PB1*/
#define SCKEY_P1_STATE_MASK (0x03)
#elif (SCKEY_P1_A == GROUP1) || (SCKEY_P1_B == GROUP1)
#define SCKEY_P1_COMP_MASK (0x02)
#define SCKEY_P1_IO_MASK (0x02) /*PB1*/
#define SCKEY_P1_STATE_MASK (0x01)
#elif (SCKEY_P1_A == GROUP2) || (SCKEY_P1_B == GROUP2)
#define SCKEY_P1_COMP_MASK (0x20)
#define SCKEY_P1_IO_MASK (0x08) /*PB3*/
#define SCKEY_P1_STATE_MASK (0x02)
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif // end of #if (SCKEY_P1_CH == CH2)
/*Multi channel key*/
#if MKEY_CH2_MASK == (GROUP1|GROUP2)
#define MCKEY_P1_COMP_MASK (0x22)
#define MCKEY_P1_IO_MASK (0x0A) /*PB1 and PB3*/
#define MCKEY_P1_STATE_MASK (0x03)
#elif MKEY_CH2_MASK == GROUP1
#define MCKEY_P1_COMP_MASK (0x02)
#define MCKEY_P1_IO_MASK (0x02) /*PB1*/
#define MCKEY_P1_STATE_MASK (0x01)
#elif MKEY_CH2_MASK == GROUP2
#define MCKEY_P1_COMP_MASK (0x20)
#define MCKEY_P1_IO_MASK (0x08) /*PB3*/
#define MCKEY_P1_STATE_MASK (0x02)
#else
#define MCKEY_P1_COMP_MASK (0x00)
#define MCKEY_P1_IO_MASK (0x00)
#define MCKEY_P1_STATE_MASK (0x00)
#endif
#if ACTIVE_SHIELD_GROUP == GROUP1
#define ASHLD_P1_COMP_MASK (0x02)
#define ASHLD_P1_IO_MASK (0x02) /*PB1*/
#define ASHLD_P1_STATE_MASK (0x01)
#elif ACTIVE_SHIELD_GROUP == GROUP2
#define ASHLD_P1_COMP_MASK (0x20)
#define ASHLD_P1_IO_MASK (0x08) /*PB3*/
#define ASHLD_P1_STATE_MASK (0x02)
#else
#define ASHLD_P1_COMP_MASK (0x00)
#define ASHLD_P1_IO_MASK (0x00)
#define ASHLD_P1_STATE_MASK (0x00)
#endif
#define P1_COMP_MASK (SCKEY_P1_COMP_MASK | MCKEY_P1_COMP_MASK | ASHLD_P1_COMP_MASK)
#define P1_IO_MASK (SCKEY_P1_IO_MASK | MCKEY_P1_IO_MASK | ASHLD_P1_IO_MASK)
#define P1_STATE_MASK (SCKEY_P1_STATE_MASK | MCKEY_P1_STATE_MASK | ASHLD_P1_STATE_MASK)
#elif ((SCKEY_P1_CH == CH3) || MKEY_CH3_MASK)
#define P1_PORT (GPIOD)
#define P1_IO_MASK_1 (0x01) /*PD0*/
#define P1_IO_MASK_2 (0x04) /*PD2*/
#if (SCKEY_P1_CH == CH3)
/*single channel key*/
#if ((SCKEY_P1_A == GROUP1) && (SCKEY_P1_B == GROUP2)) || ((SCKEY_P1_A == GROUP2) && (SCKEY_P1_B == GROUP1))
#define SCKEY_P1_COMP_MASK (0x44)
#define SCKEY_P1_IO_MASK (0x05) /*PD2 and PD0*/
#define SCKEY_P1_STATE_MASK (0x03)
#elif (SCKEY_P1_A == GROUP1) || (SCKEY_P1_B == GROUP1)
#define SCKEY_P1_COMP_MASK (0x04)
#define SCKEY_P1_IO_MASK (0x01) /*PD0*/
#define SCKEY_P1_STATE_MASK (0x01)
#elif (SCKEY_P1_A == GROUP2) || (SCKEY_P1_B == GROUP2)
#define SCKEY_P1_COMP_MASK (0x40) /*PD2*/
#define SCKEY_P1_IO_MASK (0x04)
#define SCKEY_P1_STATE_MASK (0x02)
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif // end of #if (SCKEY_P1_CH == CH3)
/*Multi channel key*/
#if MKEY_CH3_MASK == (GROUP1|GROUP2)
#define MCKEY_P1_COMP_MASK (0x44)
#define MCKEY_P1_IO_MASK (0x05) /*PD2 and PD0*/
#define MCKEY_P1_STATE_MASK (0x03)
#elif MKEY_CH3_MASK == GROUP1
#define MCKEY_P1_COMP_MASK (0x04)
#define MCKEY_P1_IO_MASK (0x01) /*PD0*/
#define MCKEY_P1_STATE_MASK (0x01)
#elif MKEY_CH3_MASK == GROUP2
#define MCKEY_P1_COMP_MASK (0x40) /*PD2*/
#define MCKEY_P1_IO_MASK (0x04)
#define MCKEY_P1_STATE_MASK (0x02)
#else
#define MCKEY_P1_COMP_MASK (0x00)
#define MCKEY_P1_IO_MASK (0x00)
#define MCKEY_P1_STATE_MASK (0x00)
#endif
#if ACTIVE_SHIELD_GROUP == GROUP1
#define ASHLD_P1_COMP_MASK (0x04)
#define ASHLD_P1_IO_MASK (0x01) /*PD0*/
#define ASHLD_P1_STATE_MASK (0x01)
#elif ACTIVE_SHIELD_GROUP == GROUP2
#define ASHLD_P1_COMP_MASK (0x40)
#define ASHLD_P1_IO_MASK (0x04) /*PD2*/
#define ASHLD_P1_STATE_MASK (0x02)
#else
#define ASHLD_P1_COMP_MASK (0x00)
#define ASHLD_P1_IO_MASK (0x00)
#define ASHLD_P1_STATE_MASK (0x00)
#endif
#define P1_COMP_MASK (SCKEY_P1_COMP_MASK | MCKEY_P1_COMP_MASK | ASHLD_P1_COMP_MASK)
#define P1_IO_MASK (SCKEY_P1_IO_MASK | MCKEY_P1_IO_MASK | ASHLD_P1_IO_MASK)
#define P1_STATE_MASK (SCKEY_P1_STATE_MASK | MCKEY_P1_STATE_MASK | ASHLD_P1_STATE_MASK)
#elif ((SCKEY_P1_CH == CH4) || MKEY_CH4_MASK)
#define P1_PORT (GPIOD)
#define P1_IO_MASK_1 (0x02) /*PB1*/
#define P1_IO_MASK_2 (0x08) /*PB3*/
#if (SCKEY_P1_CH == CH4)
/*Single channel key*/
#if ((SCKEY_P1_A == GROUP1) && (SCKEY_P1_B == GROUP2)) || ((SCKEY_P1_A == GROUP2) && (SCKEY_P1_B == GROUP1))
#define SCKEY_P1_COMP_MASK (0x88)
#define SCKEY_P1_IO_MASK (0x0A) /*PD3 and PD1*/
#define SCKEY_P1_STATE_MASK (0x03)
#elif (SCKEY_P1_A == GROUP1) || (SCKEY_P1_B == GROUP1)
#define SCKEY_P1_COMP_MASK (0x08)
#define SCKEY_P1_IO_MASK (0x02) /*PD1*/
#define SCKEY_P1_STATE_MASK (0x01)
#elif (SCKEY_P1_A == GROUP2) || (SCKEY_P1_B == GROUP2)
#define SCKEY_P1_COMP_MASK (0x80) /*PD3*/
#define SCKEY_P1_IO_MASK (0x08)
#define SCKEY_P1_STATE_MASK (0x02)
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif
#else
#define SCKEY_P1_COMP_MASK (0x00)
#define SCKEY_P1_IO_MASK (0x00)
#define SCKEY_P1_STATE_MASK (0x00)
#endif // end of #if (SCKEY_P1_CH == CH4)
/*Multi channel key*/
#if MKEY_CH4_MASK == (GROUP1|GROUP2)
#define MCKEY_P1_COMP_MASK (0x88)
#define MCKEY_P1_IO_MASK (0x0A) /*PD3 and PD1*/
#define MCKEY_P1_STATE_MASK (0x03)
#elif MKEY_CH4_MASK == GROUP1
#define MCKEY_P1_COMP_MASK (0x08)
#define MCKEY_P1_IO_MASK (0x02) /*PD1*/
#define MCKEY_P1_STATE_MASK (0x01)
#elif MKEY_CH4_MASK == GROUP2
#define MCKEY_P1_COMP_MASK (0x80) /*PD3*/
#define MCKEY_P1_IO_MASK (0x08)
#define MCKEY_P1_STATE_MASK (0x02)
#else
#define MCKEY_P1_COMP_MASK (0x00)
#define MCKEY_P1_IO_MASK (0x00)
#define MCKEY_P1_STATE_MASK (0x00)
#endif
#if ACTIVE_SHIELD_GROUP == GROUP1
#define ASHLD_P1_COMP_MASK (0x08)
#define ASHLD_P1_IO_MASK (0x02) /*PD1*/
#define ASHLD_P1_STATE_MASK (0x01)
#elif ACTIVE_SHIELD_GROUP == GROUP2
#define ASHLD_P1_COMP_MASK (0x80)
#define ASHLD_P1_IO_MASK (0x08) /*PD3*/
#define ASHLD_P1_STATE_MASK (0x02)
#else
#define ASHLD_P1_COMP_MASK (0x00)
#define ASHLD_P1_IO_MASK (0x00)
#define ASHLD_P1_STATE_MASK (0x00)
#endif
#define P1_COMP_MASK (SCKEY_P1_COMP_MASK | MCKEY_P1_COMP_MASK | ASHLD_P1_COMP_MASK)
#define P1_IO_MASK (SCKEY_P1_IO_MASK | MCKEY_P1_IO_MASK | ASHLD_P1_IO_MASK)
#define P1_STATE_MASK (SCKEY_P1_STATE_MASK | MCKEY_P1_STATE_MASK | ASHLD_P1_STATE_MASK)
#else
#error "Wrong Channel selection for SCKEY_P1 or MKEY_CHn_MASK"
#endif
#if NUMBER_OF_ACQUISITION_PORTS > 1
/*define the PORT2 comparator channel mask*/
#if ((SCKEY_P2_CH == CH1) || MKEY_CH1_MASK)
#define P2_PORT (GPIOB)
#define P2_IO_MASK_1 (0x01) /*PB0*/
#define P2_IO_MASK_2 (0x04) /*PB2*/
#if (SCKEY_P2_CH == CH1)
#if ((SCKEY_P2_A == GROUP1) && (SCKEY_P2_B == GROUP2)) || ((SCKEY_P2_A == GROUP2) && (SCKEY_P2_B == GROUP1))
#define SCKEY_P2_COMP_MASK (0x11)
#define SCKEY_P2_IO_MASK (0x05) /*PB2 and PB0*/
#define SCKEY_P2_STATE_MASK (0x03)
#elif (SCKEY_P2_A == GROUP1) || (SCKEY_P2_B == GROUP1)
#define SCKEY_P2_COMP_MASK (0x01)
#define SCKEY_P2_IO_MASK (0x01) /*PB0*/
#define SCKEY_P2_STATE_MASK (0x01)
#elif (SCKEY_P2_A == GROUP2) || (SCKEY_P2_B == GROUP2)
#define SCKEY_P2_COMP_MASK (0x10)
#define SCKEY_P2_IO_MASK (0x04) /*PB2*/
#define SCKEY_P2_STATE_MASK (0x02)
#else
#define SCKEY_P2_COMP_MASK (0x00)
#define SCKEY_P2_IO_MASK (0x00)
#define SCKEY_P2_STATE_MASK (0x00)
#endif
#else
#define SCKEY_P2_COMP_MASK (0x00)
#define SCKEY_P2_IO_MASK (0x00)
#define SCKEY_P2_STATE_MASK (0x00)
#endif // end of #if (SCKEY_P2_CH == CH1)
/*Multi channel key*/
#if MKEY_CH1_MASK == (GROUP1|GROUP2)
#define MCKEY_P2_COMP_MASK (0x11)
#define MCKEY_P2_IO_MASK (0x05) /*PB2 and PB0*/
#define MCKEY_P2_STATE_MASK (0x03)
#elif MKEY_CH1_MASK == GROUP1
#define MCKEY_P2_COMP_MASK (0x01)
#define MCKEY_P2_IO_MASK (0x01) /*PB0*/
#define MCKEY_P2_STATE_MASK (0x01)
#elif MKEY_CH1_MASK == GROUP2
#define MCKEY_P2_COMP_MASK (0x10) /*PB2*/
#define MCKEY_P2_IO_MASK (0x04)
#define MCKEY_P2_STATE_MASK (0x02)
#else
#define MCKEY_P2_COMP_MASK (0x00)
#define MCKEY_P2_IO_MASK (0x00)
#define MCKEY_P2_STATE_MASK (0x00)
#endif
#if ACTIVE_SHIELD_GROUP == GROUP1
#define ASHLD_P2_COMP_MASK (0x01)
#define ASHLD_P2_IO_MASK (0x01) /*PB0*/
#define ASHLD_P2_STATE_MASK (0x01)
#elif ACTIVE_SHIELD_GROUP == GROUP2
#define ASHLD_P2_COMP_MASK (0x10)
#define ASHLD_P2_IO_MASK (0x04) /*PB2*/
#define ASHLD_P2_STATE_MASK (0x02)
#else
#define ASHLD_P2_COMP_MASK (0x00)
#define ASHLD_P2_IO_MASK (0x00)
#define ASHLD_P2_STATE_MASK (0x00)
#endif
#define P2_COMP_MASK (SCKEY_P2_COMP_MASK | MCKEY_P2_COMP_MASK | ASHLD_P2_COMP_MASK)
#define P2_IO_MASK (SCKEY_P2_IO_MASK | MCKEY_P2_IO_MASK | ASHLD_P2_IO_MASK)
#define P2_STATE_MASK (SCKEY_P2_STATE_MASK | MCKEY_P2_STATE_MASK | ASHLD_P2_STATE_MASK)
#elif ((SCKEY_P2_CH == CH2) || MKEY_CH2_MASK)
#define P2_PORT (GPIOB)
#define P2_IO_MASK_1 (0x02) /*PB1*/
#define P2_IO_MASK_2 (0x08) /*PB3*/
#if (SCKEY_P2_CH == CH2)
#if ((SCKEY_P2_A == GROUP1) && (SCKEY_P2_B == GROUP2)) || ((SCKEY_P2_A == GROUP2) && (SCKEY_P2_B == GROUP1))
#define SCKEY_P2_COMP_MASK (0x22)
#define SCKEY_P2_IO_MASK (0x0A) /*PB3 and PB1*/
#define SCKEY_P2_STATE_MASK (0x03)
#elif (SCKEY_P2_A == GROUP1) || (SCKEY_P2_B == GROUP1)
#define SCKEY_P2_COMP_MASK (0x02)
#define SCKEY_P2_IO_MASK (0x02) /*PB1*/
#define SCKEY_P2_STATE_MASK (0x01)
#elif (SCKEY_P2_A == GROUP2) || (SCKEY_P2_B == GROUP2)
#define SCKEY_P2_COMP_MASK (0x20)
#define SCKEY_P2_IO_MASK (0x08) /*PB3*/
#define SCKEY_P2_STATE_MASK (0x02)
#else
#define SCKEY_P2_COMP_MASK (0x00)
#define SCKEY_P2_IO_MASK (0x00)
#define SCKEY_P2_STATE_MASK (0x00)
#endif
#else
#define SCKEY_P2_COMP_MASK (0x00)
#define SCKEY_P2_IO_MASK (0x00)
#define SCKEY_P2_STATE_MASK (0x00)
#endif // end of #if (SCKEY_P2_CH == CH2)
/*Multi channel key*/
#if MKEY_CH2_MASK == (GROUP1|GROUP2)
#define MCKEY_P2_COMP_MASK (0x22)
#define MCKEY_P2_IO_MASK (0x0A) /*PB1 and PB3*/
#define MCKEY_P2_STATE_MASK (0x03)
#elif MKEY_CH2_MASK == GROUP1
#define MCKEY_P2_COMP_MASK (0x02)
#define MCKEY_P2_IO_MASK (0x02) /*PB1*/
#define MCKEY_P2_STATE_MASK (0x01)
#elif MKEY_CH2_MASK == GROUP2
#define MCKEY_P2_COMP_MASK (0x20) /*PB3*/
#define MCKEY_P2_IO_MASK (0x08)
#define MCKEY_P2_STATE_MASK (0x02)
#else
#define MCKEY_P2_COMP_MASK (0x00)
#define MCKEY_P2_IO_MASK (0x00)
#define MCKEY_P2_STATE_MASK (0x00)
#endif
#if ACTIVE_SHIELD_GROUP == GROUP1
#define ASHLD_P2_COMP_MASK (0x02)
#define ASHLD_P2_IO_MASK (0x02) /*PB1*/
#define ASHLD_P2_STATE_MASK (0x01)
#elif ACTIVE_SHIELD_GROUP == GROUP2
#define ASHLD_P2_COMP_MASK (0x20)
#define ASHLD_P2_IO_MASK (0x08) /*PB3*/
#define ASHLD_P2_STATE_MASK (0x02)
#else
#define ASHLD_P2_COMP_MASK (0x00)
#define ASHLD_P2_IO_MASK (0x00)
#define ASHLD_P2_STATE_MASK (0x00)
#endif
#define P2_COMP_MASK (SCKEY_P2_COMP_MASK | MCKEY_P2_COMP_MASK | ASHLD_P2_COMP_MASK)
#define P2_IO_MASK (SCKEY_P2_IO_MASK | MCKEY_P2_IO_MASK | ASHLD_P2_IO_MASK)
#define P2_STATE_MASK (SCKEY_P2_STATE_MASK | MCKEY_P2_STATE_MASK | ASHLD_P2_STATE_MASK)
#elif ((SCKEY_P2_CH == CH3) || MKEY_CH3_MASK)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?