stm8_tsl_checkconfig.h

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

H
799
字号
#endif

#endif


//------------------------------------------------------------------------------
// Assign Comparators (for CHARGE_TRANSFER and STM8L10X only)
//------------------------------------------------------------------------------

#if defined(CHARGE_TRANSFER) && defined(STM8L10X)

#ifdef COMP1
#undef COMP1
#endif

#ifdef COMP2
#undef COMP2
#endif

#if (SCKEY_P1_A == GROUP1) || (SCKEY_P1_B == GROUP1) ||\
    (SCKEY_P2_A == GROUP1) || (SCKEY_P2_B == GROUP1) ||\
    (SCKEY_P3_A == GROUP1) || (SCKEY_P3_B == GROUP1)
#define COMP1 (1)
#endif

#if (SCKEY_P1_A == GROUP2) || (SCKEY_P1_B == GROUP2) ||\
    (SCKEY_P2_A == GROUP2) || (SCKEY_P2_B == GROUP2) ||\
    (SCKEY_P3_A == GROUP2) || (SCKEY_P3_B == GROUP2)
#define COMP2 (1)
#endif

#endif


//------------------------------------------------------------------------------
// Check SCKEY_Px_y settings (for CHARGE_TRANSFER and STM8L10X only)
//------------------------------------------------------------------------------

#if defined(CHARGE_TRANSFER) && defined(STM8L10X)

#if (SCKEY_P1_A != GROUP1) && (SCKEY_P1_A != GROUP2) && (SCKEY_P1_A != 0)
#error "SCKEY_P1_A must be equal to 0 or GROUP1 or GROUP2 only"
#endif

#if (SCKEY_P1_B != GROUP1) && (SCKEY_P1_B != GROUP2) && (SCKEY_P1_B != 0)
#error "SCKEY_P1_B must be equal to 0 or GROUP1 or GROUP2 only"
#endif

#if (SCKEY_P2_A != GROUP1) && (SCKEY_P2_A != GROUP2) && (SCKEY_P2_A != 0)
#error "SCKEY_P2_A must be equal to 0 or GROUP1 or GROUP2 only"
#endif

#if (SCKEY_P2_B != GROUP1) && (SCKEY_P2_B != GROUP2) && (SCKEY_P2_B != 0)
#error "SCKEY_P2_B must be equal to 0 or GROUP1 or GROUP2 only"
#endif

#if (SCKEY_P3_A != GROUP1) && (SCKEY_P3_A != GROUP2) && (SCKEY_P3_A != 0)
#error "SCKEY_P3_A must be equal to 0 or GROUP1 or GROUP2 only"
#endif

#if (SCKEY_P3_B != GROUP1) && (SCKEY_P3_B != GROUP2) && (SCKEY_P3_B != 0)
#error "SCKEY_P3_B must be equal to 0 or GROUP1 or GROUP2 only"
#endif

#if (SCKEY_P1_C != 0) || (SCKEY_P1_D != 0) || (SCKEY_P1_E != 0) ||\
    (SCKEY_P1_F != 0) || (SCKEY_P1_G != 0) || (SCKEY_P1_H != 0)
#error "SCKEY_P1_C to SCKEY_P1_H must be equal to 0"
#endif

#if (SCKEY_P2_C != 0) || (SCKEY_P2_D != 0) || (SCKEY_P2_E != 0) ||\
    (SCKEY_P2_F != 0) || (SCKEY_P2_G != 0) || (SCKEY_P2_H != 0)
#error "SCKEY_P2_C to SCKEY_P2_H must be equal to 0"
#endif

#endif


//------------------------------------------------------------------------------
// Check channels settings (for CHARGE_TRANSFER only)
//------------------------------------------------------------------------------

#if defined(CHARGE_TRANSFER)

#if (SCKEY_P1_CH == SAMP_CAP_CH)
#error "Wrong channel assigment: SCKEY_P1_CH and SAMP_CAP_CH must be different"
#endif

#if (SCKEY_P2_CH == SAMP_CAP_CH)
#error "Wrong channel assigment: SCKEY_P2_CH and SAMP_CAP_CH must be different"
#endif

#if defined(STM8L10X)

#if (SCKEY_P3_CH == SAMP_CAP_CH)
#error "Wrong channel assigment: SCKEY_P3_CH and SAMP_CAP_CH must be different"
#endif

#if (SCKEY_P4_CH == SAMP_CAP_CH)
#error "Wrong channel assigment: SCKEY_P4_CH and SAMP_CAP_CH must be different"
#endif

#endif

#if ((MCKEY1_A_CH == SAMP_CAP_CH) || (MCKEY1_B_CH == SAMP_CAP_CH) || (MCKEY1_C_CH == SAMP_CAP_CH) || (MCKEY1_D_CH == SAMP_CAP_CH) ||\
     (MCKEY1_E_CH == SAMP_CAP_CH) || (MCKEY1_F_CH == SAMP_CAP_CH) || (MCKEY1_G_CH == SAMP_CAP_CH) || (MCKEY1_H_CH == SAMP_CAP_CH))
#error "Wrong channel assigment: MCKEY1_x_CH and SAMP_CAP_CH must be different"
#endif

#if ((MCKEY2_A_CH == SAMP_CAP_CH) || (MCKEY2_B_CH == SAMP_CAP_CH) || (MCKEY2_C_CH == SAMP_CAP_CH) || (MCKEY2_D_CH == SAMP_CAP_CH) ||\
     (MCKEY2_E_CH == SAMP_CAP_CH) || (MCKEY2_F_CH == SAMP_CAP_CH) || (MCKEY2_G_CH == SAMP_CAP_CH) || (MCKEY2_H_CH == SAMP_CAP_CH))
#error "Wrong channel assigment: MCKEY2_x_CH and SAMP_CAP_CH must be different"
#endif

#endif

//----------------------------------------------------------------------------
//                       Acquisition slot selection
//----------------------------------------------------------------------------

#if defined(CHARGE_TRANSFER)

#if (NUMBER_OF_MULTI_CHANNEL_KEYS > 0)

#if (CHANNEL_PER_MCKEY == 3)

#define MCKEY1_USE_P1 (MCKEY1_A_CH == SCKEY_P1_CH)||(MCKEY1_B_CH == SCKEY_P1_CH)||(MCKEY1_C_CH == SCKEY_P1_CH)
#define MCKEY1_USE_P2 (MCKEY1_A_CH == SCKEY_P2_CH)||(MCKEY1_B_CH == SCKEY_P2_CH)||(MCKEY1_C_CH == SCKEY_P2_CH)
#if defined(SCKEY_P3_KEY_COUNT)
#define MCKEY1_USE_P3 (MCKEY1_A_CH == SCKEY_P3_CH)||(MCKEY1_B_CH == SCKEY_P3_CH)||(MCKEY1_C_CH == SCKEY_P3_CH)
#endif

#endif  // (CHANNEL_PER_MCKEY == 3)
#if (CHANNEL_PER_MCKEY == 5)

#define MCKEY1_USE_P1 (MCKEY1_A_CH == SCKEY_P1_CH)||(MCKEY1_B_CH == SCKEY_P1_CH)||(MCKEY1_C_CH == SCKEY_P1_CH)||\
  (MCKEY1_D_CH == SCKEY_P1_CH)||(MCKEY1_E_CH == SCKEY_P1_CH)
#define MCKEY1_USE_P2 (MCKEY1_A_CH == SCKEY_P2_CH)||(MCKEY1_B_CH == SCKEY_P2_CH)||(MCKEY1_C_CH == SCKEY_P2_CH)||\
  (MCKEY1_D_CH == SCKEY_P2_CH)||(MCKEY1_E_CH == SCKEY_P2_CH)
#if defined(SCKEY_P3_KEY_COUNT)
#define MCKEY1_USE_P3 (MCKEY1_A_CH == SCKEY_P3_CH)||(MCKEY1_B_CH == SCKEY_P3_CH)||(MCKEY1_C_CH == SCKEY_P3_CH)||\
  (MCKEY1_D_CH == SCKEY_P3_CH)||(MCKEY1_E_CH == SCKEY_P3_CH)
#endif

#endif  // (CHANNEL_PER_MCKEY == 5)
#if (CHANNEL_PER_MCKEY == 8)

#define MCKEY1_USE_P1 (MCKEY1_A_CH == SCKEY_P1_CH)||(MCKEY1_B_CH == SCKEY_P1_CH)||(MCKEY1_B_CH == SCKEY_P1_CH)||\
  (MCKEY1_D_CH == SCKEY_P1_CH)||(MCKEY1_E_CH == SCKEY_P1_CH)||\
  (MCKEY1_F_CH == SCKEY_P1_CH)||(MCKEY1_G_CH == SCKEY_P1_CH)||(MCKEY1_H_CH == SCKEY_P1_CH)
#define MCKEY1_USE_P2 (MCKEY1_A_CH == SCKEY_P2_CH)||(MCKEY1_B_CH == SCKEY_P2_CH)||(MCKEY1_B_CH == SCKEY_P2_CH)||\
  (MCKEY1_D_CH == SCKEY_P2_CH)||(MCKEY1_E_CH == SCKEY_P2_CH)||\
  (MCKEY1_F_CH == SCKEY_P2_CH)||(MCKEY1_G_CH == SCKEY_P2_CH)||(MCKEY1_H_CH == SCKEY_P2_CH)
#if defined(SCKEY_P3_KEY_COUNT)
#define MCKEY1_USE_P3 (MCKEY1_A_CH == SCKEY_P3_CH)||(MCKEY1_B_CH == SCKEY_P3_CH)||(MCKEY1_B_CH == SCKEY_P3_CH)||\
  (MCKEY1_D_CH == SCKEY_P3_CH)||(MCKEY1_E_CH == SCKEY_P3_CH)||\
  (MCKEY1_F_CH == SCKEY_P3_CH)||(MCKEY1_G_CH == SCKEY_P3_CH)||(MCKEY1_H_CH == SCKEY_P3_CH)
#endif

#endif  // (CHANNEL_PER_MCKEY == 8)

#endif // (NUMBER_OF_MULTI_CHANNEL_KEYS > 0)

#if (NUMBER_OF_MULTI_CHANNEL_KEYS > 1)

#if (CHANNEL_PER_MCKEY == 3)

#define MCKEY2_USE_P1 (MCKEY2_A_CH == SCKEY_P1_CH)||(MCKEY2_B_CH == SCKEY_P1_CH)||(MCKEY2_C_CH == SCKEY_P1_CH)
#define MCKEY2_USE_P2 (MCKEY2_A_CH == SCKEY_P2_CH)||(MCKEY2_B_CH == SCKEY_P2_CH)||(MCKEY2_C_CH == SCKEY_P2_CH)
#if defined(SCKEY_P3_KEY_COUNT)
#define MCKEY2_USE_P3 (MCKEY2_A_CH == SCKEY_P3_CH)||(MCKEY2_B_CH == SCKEY_P3_CH)||(MCKEY2_C_CH == SCKEY_P3_CH)
#endif

#endif  // (CHANNEL_PER_MCKEY == 3)
#if (CHANNEL_PER_MCKEY == 5)

#define MCKEY2_USE_P1 (MCKEY2_A_CH == SCKEY_P1_CH)||(MCKEY2_B_CH == SCKEY_P1_CH)||(MCKEY2_C_CH == SCKEY_P1_CH)||\
  (MCKEY2_D_CH == SCKEY_P1_CH)||(MCKEY2_E_CH == SCKEY_P1_CH)
#define MCKEY2_USE_P2 (MCKEY2_A_CH == SCKEY_P2_CH)||(MCKEY2_B_CH == SCKEY_P2_CH)||(MCKEY2_C_CH == SCKEY_P2_CH)||\
  (MCKEY2_D_CH == SCKEY_P2_CH)||(MCKEY2_E_CH == SCKEY_P2_CH)
#if defined(SCKEY_P3_KEY_COUNT)
#define MCKEY2_USE_P3 (MCKEY2_A_CH == SCKEY_P3_CH)||(MCKEY2_B_CH == SCKEY_P3_CH)||(MCKEY2_C_CH == SCKEY_P3_CH)||\
  (MCKEY2_D_CH == SCKEY_P3_CH)||(MCKEY2_E_CH == SCKEY_P3_CH)
#endif

#endif  // (CHANNEL_PER_MCKEY == 5)
#if (CHANNEL_PER_MCKEY == 8)

#define MCKEY2_USE_P1 (MCKEY2_A_CH == SCKEY_P1_CH)||(MCKEY2_B_CH == SCKEY_P1_CH)||(MCKEY2_B_CH == SCKEY_P1_CH)||\
  (MCKEY2_D_CH == SCKEY_P1_CH)||(MCKEY2_E_CH == SCKEY_P1_CH)||\
  (MCKEY2_F_CH == SCKEY_P1_CH)||(MCKEY2_G_CH == SCKEY_P1_CH)||(MCKEY2_H_CH == SCKEY_P1_CH)
#define MCKEY2_USE_P2 (MCKEY2_A_CH == SCKEY_P2_CH)||(MCKEY2_B_CH == SCKEY_P2_CH)||(MCKEY2_B_CH == SCKEY_P2_CH)||\
  (MCKEY2_D_CH == SCKEY_P2_CH)||(MCKEY2_E_CH == SCKEY_P2_CH)||\
  (MCKEY2_F_CH == SCKEY_P2_CH)||(MCKEY2_G_CH == SCKEY_P2_CH)||(MCKEY2_H_CH == SCKEY_P2_CH)
#if defined(SCKEY_P3_KEY_COUNT)
#define MCKEY2_USE_P3 (MCKEY2_A_CH == SCKEY_P3_CH)||(MCKEY2_B_CH == SCKEY_P3_CH)||(MCKEY2_B_CH == SCKEY_P3_CH)||\
  (MCKEY2_D_CH == SCKEY_P3_CH)||(MCKEY2_E_CH == SCKEY_P3_CH)||\
  (MCKEY2_F_CH == SCKEY_P3_CH)||(MCKEY2_G_CH == SCKEY_P3_CH)||(MCKEY2_H_CH == SCKEY_P3_CH)
#endif

#endif  // (CHANNEL_PER_MCKEY == 8)
#else
#define MCKEY2_USE_P1 0
#define MCKEY2_USE_P2 0
#define MCKEY2_USE_P3 0

#endif // (NUMBER_OF_MULTI_CHANNEL_KEYS > 1)

#if (SCKEY_P2_KEY_COUNT > 0)||(MCKEY1_USE_P2)||(MCKEY2_USE_P2)
#if (SCKEY_P3_KEY_COUNT > 0)||(MCKEY1_USE_P3)||(MCKEY2_USE_P3)
#define NUMBER_OF_ACQUISITION_PORTS (3)
#else
#define NUMBER_OF_ACQUISITION_PORTS (2)
#endif
#else
#define NUMBER_OF_ACQUISITION_PORTS (1)  // always used
#endif

#else //RC
#define NUMBER_OF_ACQUISITION_PORTS  NUMBER_OF_SINGLE_CHANNEL_PORTS
#endif // CT or RC

#if (NUMBER_OF_SINGLE_CHANNEL_KEYS == 0) && (NUMBER_OF_MULTI_CHANNEL_KEYS == 0)
#error "At least one key must be defined !"
#endif


//============================================================================
// TSL PARAMETERS CONFIGURATION
//============================================================================

#if !defined(NEGDETECT_AUTOCAL)
#error "Please define NEGDETECT_AUTOCAL (with value at 0 or 1)"
#endif

#if !defined(SPREAD_SPECTRUM)
#error "Please define SPREAD_SPECTRUM (with value at 0 or 1)"
#endif

#ifdef SW_SPREAD_SPECTRUM
#if !SPREAD_SPECTRUM && SW_SPREAD_SPECTRUM
#error "SW_SPREAD_SPECTRUM can only be enabled if SPREAD_SPECTRUM is enabled !"
#endif
#endif

#if (SPREAD_SPECTRUM && defined(STM8L10X)) || (SW_SPREAD_SPECTRUM &&defined(STM8L15X))
#if !SPREAD_COUNTER_MIN
#error " The SPREAD_COUNTER_MIN value must not be null !"
#endif
#endif

#if SPREAD_SPECTRUM
#if (SPREAD_COUNTER_MAX > 255) || (SPREAD_COUNTER_MAX <= SPREAD_COUNTER_MIN)
#error " The SPREAD_COUNTER_MAX value must be a 8-bit value in the range of [2 - 255] !"
#endif
#endif

#if defined(CHARGE_TRANSFER)
#ifndef ACTIVE_SHIELD_GROUP
#error "The ACTIVE_SHIELD_GROUP must be defined (set it to 0 to disable the Active Shield feature)!"
#else //ACTIVE_SHIELD_GROUP is defined
#if ACTIVE_SHIELD_GROUP
#if defined(STM8L15X)
#if (ACTIVE_SHIELD_GROUP == GROUP1)
#if (SCKEY_P1_CH == CH1)
//PA6 define as active shield for port1
#define ACTIVE_SHIELD_P1_PORT (GPIOA)
#define ACTIVE_SHIELD_P1_BIT (1<<6)

⌨️ 快捷键说明

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