stm8_tsl_checkconfig.h

来自「STM8s」· C头文件 代码 · 共 799 行 · 第 1/3 页

H
799
字号
/**
  ******************************************************************************
  * @file    stm8_tsl_checkconfig.h
  * @author  MCD Application Team
  * @version V2.3.1
  * @date    14-February-2011
  * @brief   STM8 Touch Sensing Library - This file checks the configuration
 *          file options.
  ******************************************************************************
  * @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>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __TSL_CHECKCONFIG_H
#define __TSL_CHECKCONFIG_H

/* Includes ------------------------------------------------------------------*/
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macros -----------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/


//------------------------------------------------------------------------------
// MCU check and Firmware Library selection
//------------------------------------------------------------------------------

#if defined(CHARGE_TRANSFER)

#if defined(STM8L10X) && defined(STM8L15X)
#error "Wrong MCU selection for Charge-Transfer technology (select only one)"
#elif defined(STM8L10X)
#include "stm8l10x.h"
#elif defined(STM8L15X)
#include "stm8l15x.h"
#else
#error "Wrong MCU selection for Charge-Transfer technology (select one)."
#endif

#else // RC technology

#if defined(STM8L10X) && defined(STM8L15X) && defined(STM8S)
#error "Wrong MCU selection for RC technology (select only one)"
#elif defined(STM8L10X) && defined(STM8L15X)
#error "Wrong MCU selection for RC technology (select only one)"
#elif defined(STM8L10X) && defined(STM8S)
#error "Wrong MCU selection for RC technology (select only one)"
#elif defined(STM8L15X) && defined(STM8S)
#error "Wrong MCU selection for RC technology (select only one)"
#elif defined(STM8L10X)
#include "stm8l10x.h"
#elif defined(STM8L15X)
#include "stm8l15x.h"
#elif defined(STM8S)
#include "stm8s.h"
#else
#error "Wrong MCU selected for RC technology (select one)."
#endif

#endif


//------------------------------------------------------------------------------
// Single channel keys check
//------------------------------------------------------------------------------

#if (SCKEY_P1_KEY_COUNT < 0) || (SCKEY_P1_KEY_COUNT > 8)
#error "Wrong number of single channel keys on port1. Must be in the [0..8] range."
#endif

#if (SCKEY_P2_KEY_COUNT < 0) || (SCKEY_P2_KEY_COUNT > 8)
#error "Wrong number of single channel keys on port2. Must be in the [0..8] range."
#endif

#if (SCKEY_P3_KEY_COUNT < 0) || (SCKEY_P3_KEY_COUNT > 8)
#error "Wrong number of single channel keys on port3. Must be in the [0..8] range."
#endif

// Calculates the total number of single-channel keys
#if defined(CHARGE_TRANSFER) && defined(STM8L15X)
#define NUMBER_OF_SINGLE_CHANNEL_KEYS (SCKEY_P1_KEY_COUNT + SCKEY_P2_KEY_COUNT)
#else
#define NUMBER_OF_SINGLE_CHANNEL_KEYS (SCKEY_P1_KEY_COUNT + SCKEY_P2_KEY_COUNT + SCKEY_P3_KEY_COUNT)
#endif

#if (SCKEY_P1_KEY_COUNT == 0) && ( (SCKEY_P2_KEY_COUNT > 0) || (SCKEY_P3_KEY_COUNT > 0) )
#error "Key(s) defined on PORT2 or PORT3 while no key seems defined on PORT1. PORT1 must be used before using PORT2 or PORT3"
#endif

#if (SCKEY_P2_KEY_COUNT == 0) && (SCKEY_P3_KEY_COUNT > 0)
#error "Key(s) defined on PORT3 while no key seems defined on PORT2. PORT2 must be used before using PORT3"
#endif

#if (SCKEY_P1_KEY_COUNT == 0)
#define NUMBER_OF_SINGLE_CHANNEL_PORTS (0)
#else

#if (SCKEY_P2_KEY_COUNT == 0) && (SCKEY_P3_KEY_COUNT == 0)
#define NUMBER_OF_SINGLE_CHANNEL_PORTS (1)
#endif

#if (SCKEY_P2_KEY_COUNT > 0) && (SCKEY_P3_KEY_COUNT == 0)
#define NUMBER_OF_SINGLE_CHANNEL_PORTS (2)
#endif

#if (SCKEY_P2_KEY_COUNT > 0) && (SCKEY_P3_KEY_COUNT > 0)
#define NUMBER_OF_SINGLE_CHANNEL_PORTS (3)
#endif

#endif
//==============================================================================
//
// PORT MASK definition for multi-channel keys
//
//
//==============================================================================

#if NUMBER_OF_MULTI_CHANNEL_KEYS == 0
#define MKEY_CH1_MASK (0)
#define MKEY_CH2_MASK (0)
#define MKEY_CH3_MASK (0)
#if defined(STM8L10X)
#define MKEY_CH4_MASK (0)
#endif

#elif NUMBER_OF_MULTI_CHANNEL_KEYS == 1
#define MKEY_CH1_MASK \
  ( ((MCKEY1_A_CH == CH1)? MCKEY1_A:0)|((MCKEY1_B_CH == CH1)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH1)? MCKEY1_C:0)|((MCKEY1_D_CH == CH1)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH1)? MCKEY1_E:0)|((MCKEY1_F_CH == CH1)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH1)? MCKEY1_G:0)|((MCKEY1_H_CH == CH1)? MCKEY1_H:0)\
  )
#define MKEY_CH2_MASK \
  ( ((MCKEY1_A_CH == CH2)? MCKEY1_A:0)|((MCKEY1_B_CH == CH2)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH2)? MCKEY1_C:0)|((MCKEY1_D_CH == CH2)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH2)? MCKEY1_E:0)|((MCKEY1_F_CH == CH2)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH2)? MCKEY1_G:0)|((MCKEY1_H_CH == CH2)? MCKEY1_H:0)\
  )
#define MKEY_CH3_MASK \
  ( ((MCKEY1_A_CH == CH3)? MCKEY1_A:0)|((MCKEY1_B_CH == CH3)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH3)? MCKEY1_C:0)|((MCKEY1_D_CH == CH3)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH3)? MCKEY1_E:0)|((MCKEY1_F_CH == CH3)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH3)? MCKEY1_G:0)|((MCKEY1_H_CH == CH3)? MCKEY1_H:0)\
  )

#if defined(STM8L10X)
#define MKEY_CH4_MASK \
  ( ((MCKEY1_A_CH == CH4)? MCKEY1_A:0)|((MCKEY1_B_CH == CH4)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH4)? MCKEY1_C:0)|((MCKEY1_D_CH == CH4)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH4)? MCKEY1_E:0)|((MCKEY1_F_CH == CH4)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH4)? MCKEY1_G:0)|((MCKEY1_H_CH == CH4)? MCKEY1_H:0)\
  )
#endif

#elif NUMBER_OF_MULTI_CHANNEL_KEYS == 2

#define MKEY_CH1_MASK \
  ( ((MCKEY1_A_CH == CH1)? MCKEY1_A:0)|((MCKEY1_B_CH == CH1)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH1)? MCKEY1_C:0)|((MCKEY1_D_CH == CH1)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH1)? MCKEY1_E:0)|((MCKEY1_F_CH == CH1)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH1)? MCKEY1_G:0)|((MCKEY1_H_CH == CH1)? MCKEY1_H:0)|\
    ((MCKEY2_A_CH == CH1)? MCKEY2_A:0)|((MCKEY2_B_CH == CH1)? MCKEY2_B:0)|\
    ((MCKEY2_C_CH == CH1)? MCKEY2_C:0)|((MCKEY2_D_CH == CH1)? MCKEY2_D:0)|\
    ((MCKEY2_E_CH == CH1)? MCKEY2_E:0)|((MCKEY2_F_CH == CH1)? MCKEY2_F:0)|\
    ((MCKEY2_G_CH == CH1)? MCKEY2_G:0)|((MCKEY2_H_CH == CH1)? MCKEY2_H:0)\
  )
#define MKEY_CH2_MASK \
  ( ((MCKEY1_A_CH == CH2)? MCKEY1_A:0)|((MCKEY1_B_CH == CH2)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH2)? MCKEY1_C:0)|((MCKEY1_D_CH == CH2)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH2)? MCKEY1_E:0)|((MCKEY1_F_CH == CH2)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH2)? MCKEY1_G:0)|((MCKEY1_H_CH == CH2)? MCKEY1_H:0)|\
    ((MCKEY2_A_CH == CH2)? MCKEY2_A:0)|((MCKEY2_B_CH == CH2)? MCKEY2_B:0)|\
    ((MCKEY2_C_CH == CH2)? MCKEY2_C:0)|((MCKEY2_D_CH == CH2)? MCKEY2_D:0)|\
    ((MCKEY2_E_CH == CH2)? MCKEY2_E:0)|((MCKEY2_F_CH == CH2)? MCKEY2_F:0)|\
    ((MCKEY2_G_CH == CH2)? MCKEY2_G:0)|((MCKEY2_H_CH == CH2)? MCKEY2_H:0)\
  )
#define MKEY_CH3_MASK \
  ( ((MCKEY1_A_CH == CH3)? MCKEY1_A:0)|((MCKEY1_B_CH == CH3)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH3)? MCKEY1_C:0)|((MCKEY1_D_CH == CH3)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH3)? MCKEY1_E:0)|((MCKEY1_F_CH == CH3)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH3)? MCKEY1_G:0)|((MCKEY1_H_CH == CH3)? MCKEY1_H:0)|\
    ((MCKEY2_A_CH == CH3)? MCKEY2_A:0)|((MCKEY2_B_CH == CH3)? MCKEY2_B:0)|\
    ((MCKEY2_C_CH == CH3)? MCKEY2_C:0)|((MCKEY2_D_CH == CH3)? MCKEY2_D:0)|\
    ((MCKEY2_E_CH == CH3)? MCKEY2_E:0)|((MCKEY2_F_CH == CH3)? MCKEY2_F:0)|\
    ((MCKEY2_G_CH == CH3)? MCKEY2_G:0)|((MCKEY2_H_CH == CH3)? MCKEY2_H:0)\
  )

#if defined(STM8L10X)
#define MKEY_CH4_MASK \
  ( ((MCKEY1_A_CH == CH4)? MCKEY1_A:0)|((MCKEY1_B_CH == CH4)? MCKEY1_B:0)|\
    ((MCKEY1_C_CH == CH4)? MCKEY1_C:0)|((MCKEY1_D_CH == CH4)? MCKEY1_D:0)|\
    ((MCKEY1_E_CH == CH4)? MCKEY1_E:0)|((MCKEY1_F_CH == CH4)? MCKEY1_F:0)|\
    ((MCKEY1_G_CH == CH4)? MCKEY1_G:0)|((MCKEY1_H_CH == CH4)? MCKEY1_H:0)|\
    ((MCKEY2_A_CH == CH4)? MCKEY2_A:0)|((MCKEY2_B_CH == CH4)? MCKEY2_B:0)|\
    ((MCKEY2_C_CH == CH4)? MCKEY2_C:0)|((MCKEY2_D_CH == CH4)? MCKEY2_D:0)|\
    ((MCKEY2_E_CH == CH4)? MCKEY2_E:0)|((MCKEY2_F_CH == CH4)? MCKEY2_F:0)|\
    ((MCKEY2_G_CH == CH4)? MCKEY2_G:0)|((MCKEY2_H_CH == CH4)? MCKEY2_H:0)\
  )
#endif

#endif

//------------------------------------------------------------------------------
// Multi channel keys check
//------------------------------------------------------------------------------

#if (NUMBER_OF_MULTI_CHANNEL_KEYS < 0) || (NUMBER_OF_MULTI_CHANNEL_KEYS > 2)
#error "Wrong number of multi channel keys. Must be in the [0..2] range."
#endif

#if (NUMBER_OF_MULTI_CHANNEL_KEYS > 0)

#if defined(CHARGE_TRANSFER)
#if (CHANNEL_PER_MCKEY != 3) && (CHANNEL_PER_MCKEY != 5) && (CHANNEL_PER_MCKEY != 8)
#error "Wrong number of channel for multi channel keys. Must be equal to 3, 5 or 8."
#endif
#else // RC technology
#if (CHANNEL_PER_MCKEY != 5) && (CHANNEL_PER_MCKEY != 8)
#error "Wrong number of channel for multi channel keys. Must be equal to 5 or 8."
#endif
#endif

#ifndef MCKEY1_TYPE
#error "MCKEY1_TYPE is not defined."
#endif

#if (MCKEY1_TYPE != 0) && (MCKEY1_TYPE != 1)
#error "Wrong MCKEY1 type. Must be equal to 0 (wheel) or 1 (slider)."
#endif

#ifndef MCKEY1_LAYOUT_TYPE
#error "MCKEY1_LAYOUT_TYPE is not defined."
#endif

#if (MCKEY1_LAYOUT_TYPE != 0) && (MCKEY1_LAYOUT_TYPE != 1)
#error "Wrong MCKEY1 layout type. Must be equal to 0 (Interlaced) or 1 (Normal)."
#endif

#endif

#if (NUMBER_OF_MULTI_CHANNEL_KEYS > 1)

#ifndef MCKEY2_TYPE
#error "MCKEY2_TYPE is not defined."
#endif

#if (MCKEY2_TYPE != 0) && (MCKEY2_TYPE != 1)
#error "Wrong MCKEY2 type. Must be equal to 0 (wheel) or 1 (slider)."
#endif

#ifndef MCKEY2_LAYOUT_TYPE
#error "MCKEY2_LAYOUT_TYPE is not defined."
#endif

#if (MCKEY2_LAYOUT_TYPE != 0) && (MCKEY2_LAYOUT_TYPE != 1)
#error "Wrong MCKEY2 layout type. Must be equal to 0 (Interlaced) or 1 (Normal)."

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?