STM32L486xx HAL User Manual
stm32l4xx_hal_tsc.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l4xx_hal_tsc.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of TSC HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
00010   *
00011   * Redistribution and use in source and binary forms, with or without modification,
00012   * are permitted provided that the following conditions are met:
00013   *   1. Redistributions of source code must retain the above copyright notice,
00014   *      this list of conditions and the following disclaimer.
00015   *   2. Redistributions in binary form must reproduce the above copyright notice,
00016   *      this list of conditions and the following disclaimer in the documentation
00017   *      and/or other materials provided with the distribution.
00018   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00019   *      may be used to endorse or promote products derived from this software
00020   *      without specific prior written permission.
00021   *
00022   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00023   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00024   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00025   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00026   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00027   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00028   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00030   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00031   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00032   *
00033   ******************************************************************************
00034   */
00035 
00036 /* Define to prevent recursive inclusion -------------------------------------*/
00037 #ifndef __STM32L4xx_HAL_TSC_H
00038 #define __STM32L4xx_HAL_TSC_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 /* Includes ------------------------------------------------------------------*/
00045 #include "stm32l4xx_hal_def.h"
00046 
00047 /** @addtogroup STM32L4xx_HAL_Driver
00048   * @{
00049   */
00050 
00051 /** @addtogroup TSC
00052   * @{
00053   */
00054 
00055 /* Exported types ------------------------------------------------------------*/
00056 /** @defgroup TSC_Exported_Types TSC Exported Types
00057   * @{
00058   */
00059 
00060 /**
00061   * @brief TSC state structure definition
00062   */
00063 typedef enum
00064 {
00065   HAL_TSC_STATE_RESET  = 0x00U, /*!< TSC registers have their reset value */
00066   HAL_TSC_STATE_READY  = 0x01U, /*!< TSC registers are initialized or acquisition is completed with success */
00067   HAL_TSC_STATE_BUSY   = 0x02U, /*!< TSC initialization or acquisition is on-going */
00068   HAL_TSC_STATE_ERROR  = 0x03U  /*!< Acquisition is completed with max count error */
00069 } HAL_TSC_StateTypeDef;
00070 
00071 /**
00072   * @brief TSC group status structure definition
00073   */
00074 typedef enum
00075 {
00076   TSC_GROUP_ONGOING   = 0x00U, /*!< Acquisition on group is on-going or not started */
00077   TSC_GROUP_COMPLETED = 0x01U  /*!< Acquisition on group is completed with success (no max count error) */
00078 } TSC_GroupStatusTypeDef;
00079 
00080 /**
00081   * @brief TSC init structure definition
00082   */
00083 typedef struct
00084 {
00085   uint32_t CTPulseHighLength;       /*!< Charge-transfer high pulse length
00086                                          This parameter can be a value of @ref TSC_CTPulseHL_Config  */
00087   uint32_t CTPulseLowLength;        /*!< Charge-transfer low pulse length
00088                                          This parameter can be a value of @ref TSC_CTPulseLL_Config  */
00089   uint32_t SpreadSpectrum;          /*!< Spread spectrum activation
00090                                          This parameter can be a value of @ref TSC_CTPulseLL_Config  */
00091   uint32_t SpreadSpectrumDeviation; /*!< Spread spectrum deviation
00092                                          This parameter must be a number between Min_Data = 0 and Max_Data = 127 */
00093   uint32_t SpreadSpectrumPrescaler; /*!< Spread spectrum prescaler
00094                                          This parameter can be a value of @ref TSC_SpreadSpec_Prescaler */
00095   uint32_t PulseGeneratorPrescaler; /*!< Pulse generator prescaler
00096                                          This parameter can be a value of @ref TSC_PulseGenerator_Prescaler */
00097   uint32_t MaxCountValue;           /*!< Max count value
00098                                          This parameter can be a value of @ref TSC_MaxCount_Value  */
00099   uint32_t IODefaultMode;           /*!< IO default mode
00100                                          This parameter can be a value of @ref TSC_IO_Default_Mode  */
00101   uint32_t SynchroPinPolarity;      /*!< Synchro pin polarity
00102                                          This parameter can be a value of @ref TSC_Synchro_Pin_Polarity */
00103   uint32_t AcquisitionMode;         /*!< Acquisition mode
00104                                          This parameter can be a value of @ref TSC_Acquisition_Mode  */
00105   uint32_t MaxCountInterrupt;       /*!< Max count interrupt activation
00106                                          This parameter can be set to ENABLE or DISABLE. */
00107   uint32_t ChannelIOs;              /*!< Channel IOs mask */
00108   uint32_t ShieldIOs;               /*!< Shield IOs mask */
00109   uint32_t SamplingIOs;             /*!< Sampling IOs mask */
00110 } TSC_InitTypeDef;
00111 
00112 /**
00113   * @brief TSC IOs configuration structure definition
00114   */
00115 typedef struct
00116 {
00117   uint32_t ChannelIOs;  /*!< Channel IOs mask */
00118   uint32_t ShieldIOs;   /*!< Shield IOs mask */
00119   uint32_t SamplingIOs; /*!< Sampling IOs mask */
00120 } TSC_IOConfigTypeDef;
00121 
00122 /**
00123   * @brief  TSC handle Structure definition
00124   */
00125 typedef struct __TSC_HandleTypeDef
00126 {
00127   TSC_TypeDef               *Instance;  /*!< Register base address      */
00128   TSC_InitTypeDef           Init;       /*!< Initialization parameters  */
00129   __IO HAL_TSC_StateTypeDef State;      /*!< Peripheral state           */
00130   HAL_LockTypeDef           Lock;       /*!< Lock feature               */
00131   __IO uint32_t             ErrorCode;  /*!< I2C Error code             */
00132 
00133 #if (USE_HAL_TSC_REGISTER_CALLBACKS == 1)
00134   void (* ConvCpltCallback)(struct __TSC_HandleTypeDef *htsc);   /*!< TSC Conversion complete callback  */
00135   void (* ErrorCallback)(struct __TSC_HandleTypeDef *htsc);      /*!< TSC Error callback                */
00136 
00137   void (* MspInitCallback)(struct __TSC_HandleTypeDef *htsc);    /*!< TSC Msp Init callback             */
00138   void (* MspDeInitCallback)(struct __TSC_HandleTypeDef *htsc);  /*!< TSC Msp DeInit callback           */
00139 
00140 #endif  /* USE_HAL_TSC_REGISTER_CALLBACKS */
00141 } TSC_HandleTypeDef;
00142 
00143 /**
00144   * @brief  TSC Group Index Structure definition
00145   */
00146 typedef enum
00147 {
00148   TSC_GROUP1_IDX = 0x00U,
00149   TSC_GROUP2_IDX,
00150   TSC_GROUP3_IDX,
00151   TSC_GROUP4_IDX,
00152 #if defined(TSC_IOCCR_G5_IO1)
00153   TSC_GROUP5_IDX,
00154 #endif
00155 #if defined(TSC_IOCCR_G6_IO1)
00156   TSC_GROUP6_IDX,
00157 #endif
00158 #if defined(TSC_IOCCR_G7_IO1)
00159   TSC_GROUP7_IDX,
00160 #endif
00161 #if defined(TSC_IOCCR_G8_IO1)
00162   TSC_GROUP8_IDX,
00163 #endif
00164   TSC_NB_OF_GROUPS
00165 }TSC_GroupIndexTypeDef;
00166 
00167 #if (USE_HAL_TSC_REGISTER_CALLBACKS == 1)
00168 /**
00169   * @brief  HAL TSC Callback ID enumeration definition
00170   */
00171 typedef enum
00172 {
00173   HAL_TSC_CONV_COMPLETE_CB_ID           = 0x00U,    /*!< TSC Conversion completed callback ID  */
00174   HAL_TSC_ERROR_CB_ID                   = 0x01U,    /*!< TSC Error callback ID                 */
00175 
00176   HAL_TSC_MSPINIT_CB_ID                 = 0x02U,    /*!< TSC Msp Init callback ID              */
00177   HAL_TSC_MSPDEINIT_CB_ID               = 0x03U     /*!< TSC Msp DeInit callback ID            */
00178 
00179 } HAL_TSC_CallbackIDTypeDef;
00180 
00181 /**
00182   * @brief  HAL TSC Callback pointer definition
00183   */
00184 typedef  void (*pTSC_CallbackTypeDef)(TSC_HandleTypeDef *htsc); /*!< pointer to an TSC callback function */
00185 
00186 #endif  /* USE_HAL_TSC_REGISTER_CALLBACKS */
00187 
00188 /**
00189   * @}
00190   */
00191 
00192 /* Exported constants --------------------------------------------------------*/
00193 /** @defgroup TSC_Exported_Constants TSC Exported Constants
00194   * @{
00195   */
00196 
00197 /** @defgroup TSC_Error_Code_definition TSC Error Code definition
00198   * @brief  TSC Error Code definition
00199   * @{
00200   */
00201 #define HAL_TSC_ERROR_NONE      0x00000000U    /*!< No error              */
00202 #if (USE_HAL_TSC_REGISTER_CALLBACKS == 1)
00203 #define HAL_TSC_ERROR_INVALID_CALLBACK  (0x00000001U)    /*!< Invalid Callback error */
00204 #endif /* USE_HAL_TSC_REGISTER_CALLBACKS */
00205 /**
00206   * @}
00207   */
00208 
00209 /** @defgroup TSC_CTPulseHL_Config CTPulse High Length
00210   * @{
00211   */
00212 #define TSC_CTPH_1CYCLE         0x00000000U                                                     /*!< Charge transfer pulse high during 1 cycle (PGCLK)   */
00213 #define TSC_CTPH_2CYCLES        TSC_CR_CTPH_0                                                   /*!< Charge transfer pulse high during 2 cycles (PGCLK)  */
00214 #define TSC_CTPH_3CYCLES        TSC_CR_CTPH_1                                                   /*!< Charge transfer pulse high during 3 cycles (PGCLK)  */
00215 #define TSC_CTPH_4CYCLES        (TSC_CR_CTPH_1 | TSC_CR_CTPH_0)                                 /*!< Charge transfer pulse high during 4 cycles (PGCLK)  */
00216 #define TSC_CTPH_5CYCLES        TSC_CR_CTPH_2                                                   /*!< Charge transfer pulse high during 5 cycles (PGCLK)  */
00217 #define TSC_CTPH_6CYCLES        (TSC_CR_CTPH_2 | TSC_CR_CTPH_0)                                 /*!< Charge transfer pulse high during 6 cycles (PGCLK)  */
00218 #define TSC_CTPH_7CYCLES        (TSC_CR_CTPH_2 | TSC_CR_CTPH_1)                                 /*!< Charge transfer pulse high during 7 cycles (PGCLK)  */
00219 #define TSC_CTPH_8CYCLES        (TSC_CR_CTPH_2 | TSC_CR_CTPH_1 | TSC_CR_CTPH_0)                 /*!< Charge transfer pulse high during 8 cycles (PGCLK)  */
00220 #define TSC_CTPH_9CYCLES        TSC_CR_CTPH_3                                                   /*!< Charge transfer pulse high during 9 cycles (PGCLK)  */
00221 #define TSC_CTPH_10CYCLES       (TSC_CR_CTPH_3 | TSC_CR_CTPH_0)                                 /*!< Charge transfer pulse high during 10 cycles (PGCLK) */
00222 #define TSC_CTPH_11CYCLES       (TSC_CR_CTPH_3 | TSC_CR_CTPH_1)                                 /*!< Charge transfer pulse high during 11 cycles (PGCLK) */
00223 #define TSC_CTPH_12CYCLES       (TSC_CR_CTPH_3 | TSC_CR_CTPH_1 | TSC_CR_CTPH_0)                 /*!< Charge transfer pulse high during 12 cycles (PGCLK) */
00224 #define TSC_CTPH_13CYCLES       (TSC_CR_CTPH_3 | TSC_CR_CTPH_2)                                 /*!< Charge transfer pulse high during 13 cycles (PGCLK) */
00225 #define TSC_CTPH_14CYCLES       (TSC_CR_CTPH_3 | TSC_CR_CTPH_2 | TSC_CR_CTPH_0)                 /*!< Charge transfer pulse high during 14 cycles (PGCLK) */
00226 #define TSC_CTPH_15CYCLES       (TSC_CR_CTPH_3 | TSC_CR_CTPH_2 | TSC_CR_CTPH_1)                 /*!< Charge transfer pulse high during 15 cycles (PGCLK) */
00227 #define TSC_CTPH_16CYCLES       (TSC_CR_CTPH_3 | TSC_CR_CTPH_2 | TSC_CR_CTPH_1 | TSC_CR_CTPH_0) /*!< Charge transfer pulse high during 16 cycles (PGCLK) */
00228 /**
00229   * @}
00230   */
00231 
00232 /** @defgroup TSC_CTPulseLL_Config CTPulse Low Length
00233   * @{
00234   */
00235 #define TSC_CTPL_1CYCLE         0x00000000U                                                      /*!< Charge transfer pulse low during 1 cycle (PGCLK)   */
00236 #define TSC_CTPL_2CYCLES        TSC_CR_CTPL_0                                                    /*!< Charge transfer pulse low during 2 cycles (PGCLK)  */
00237 #define TSC_CTPL_3CYCLES        TSC_CR_CTPL_1                                                    /*!< Charge transfer pulse low during 3 cycles (PGCLK)  */
00238 #define TSC_CTPL_4CYCLES        (TSC_CR_CTPL_1 | TSC_CR_CTPL_0)                                  /*!< Charge transfer pulse low during 4 cycles (PGCLK)  */
00239 #define TSC_CTPL_5CYCLES        TSC_CR_CTPL_2                                                    /*!< Charge transfer pulse low during 5 cycles (PGCLK)  */
00240 #define TSC_CTPL_6CYCLES        (TSC_CR_CTPL_2 | TSC_CR_CTPL_0)                                  /*!< Charge transfer pulse low during 6 cycles (PGCLK)  */
00241 #define TSC_CTPL_7CYCLES        (TSC_CR_CTPL_2 | TSC_CR_CTPL_1)                                  /*!< Charge transfer pulse low during 7 cycles (PGCLK)  */
00242 #define TSC_CTPL_8CYCLES        (TSC_CR_CTPL_2 | TSC_CR_CTPL_1 | TSC_CR_CTPL_0)                  /*!< Charge transfer pulse low during 8 cycles (PGCLK)  */
00243 #define TSC_CTPL_9CYCLES        TSC_CR_CTPL_3                                                    /*!< Charge transfer pulse low during 9 cycles (PGCLK)  */
00244 #define TSC_CTPL_10CYCLES       (TSC_CR_CTPL_3 | TSC_CR_CTPL_0)                                  /*!< Charge transfer pulse low during 10 cycles (PGCLK) */
00245 #define TSC_CTPL_11CYCLES       (TSC_CR_CTPL_3 | TSC_CR_CTPL_1)                                  /*!< Charge transfer pulse low during 11 cycles (PGCLK) */
00246 #define TSC_CTPL_12CYCLES       (TSC_CR_CTPL_3 | TSC_CR_CTPL_1 | TSC_CR_CTPL_0)                  /*!< Charge transfer pulse low during 12 cycles (PGCLK) */
00247 #define TSC_CTPL_13CYCLES       (TSC_CR_CTPL_3 | TSC_CR_CTPL_2)                                  /*!< Charge transfer pulse low during 13 cycles (PGCLK) */
00248 #define TSC_CTPL_14CYCLES       (TSC_CR_CTPL_3 | TSC_CR_CTPL_2 | TSC_CR_CTPL_0)                  /*!< Charge transfer pulse low during 14 cycles (PGCLK) */
00249 #define TSC_CTPL_15CYCLES       (TSC_CR_CTPL_3 | TSC_CR_CTPL_2 | TSC_CR_CTPL_1)                  /*!< Charge transfer pulse low during 15 cycles (PGCLK) */
00250 #define TSC_CTPL_16CYCLES       (TSC_CR_CTPL_3 | TSC_CR_CTPL_2 | TSC_CR_CTPL_1 | TSC_CR_CTPL_0)  /*!< Charge transfer pulse low during 16 cycles (PGCLK) */
00251 /**
00252   * @}
00253   */
00254 
00255 /** @defgroup TSC_SpreadSpec_Prescaler Spread Spectrum Prescaler
00256   * @{
00257   */
00258 #define TSC_SS_PRESC_DIV1       0x00000000U   /*!< Spread Spectrum Prescaler Div1 */
00259 #define TSC_SS_PRESC_DIV2       TSC_CR_SSPSC  /*!< Spread Spectrum Prescaler Div2 */
00260 /**
00261   * @}
00262   */
00263 
00264 /** @defgroup TSC_PulseGenerator_Prescaler Pulse Generator Prescaler
00265   * @{
00266   */
00267 #define TSC_PG_PRESC_DIV1       0x00000000U                                         /*!< Pulse Generator HCLK Div1   */
00268 #define TSC_PG_PRESC_DIV2       TSC_CR_PGPSC_0                                      /*!< Pulse Generator HCLK Div2   */
00269 #define TSC_PG_PRESC_DIV4       TSC_CR_PGPSC_1                                      /*!< Pulse Generator HCLK Div4   */
00270 #define TSC_PG_PRESC_DIV8       (TSC_CR_PGPSC_1 | TSC_CR_PGPSC_0)                   /*!< Pulse Generator HCLK Div8   */
00271 #define TSC_PG_PRESC_DIV16      TSC_CR_PGPSC_2                                      /*!< Pulse Generator HCLK Div16  */
00272 #define TSC_PG_PRESC_DIV32      (TSC_CR_PGPSC_2 | TSC_CR_PGPSC_0)                   /*!< Pulse Generator HCLK Div32  */
00273 #define TSC_PG_PRESC_DIV64      (TSC_CR_PGPSC_2 | TSC_CR_PGPSC_1)                   /*!< Pulse Generator HCLK Div64  */
00274 #define TSC_PG_PRESC_DIV128     (TSC_CR_PGPSC_2 | TSC_CR_PGPSC_1 | TSC_CR_PGPSC_0)  /*!< Pulse Generator HCLK Div128 */
00275 /**
00276   * @}
00277   */
00278 
00279 /** @defgroup TSC_MaxCount_Value Max Count Value
00280   * @{
00281   */
00282 #define TSC_MCV_255             0x00000000U                    /*!< 255 maximum number of charge transfer pulses   */
00283 #define TSC_MCV_511             TSC_CR_MCV_0                   /*!< 511 maximum number of charge transfer pulses   */
00284 #define TSC_MCV_1023            TSC_CR_MCV_1                   /*!< 1023 maximum number of charge transfer pulses  */
00285 #define TSC_MCV_2047            (TSC_CR_MCV_1 | TSC_CR_MCV_0)  /*!< 2047 maximum number of charge transfer pulses  */
00286 #define TSC_MCV_4095            TSC_CR_MCV_2                   /*!< 4095 maximum number of charge transfer pulses  */
00287 #define TSC_MCV_8191            (TSC_CR_MCV_2 | TSC_CR_MCV_0)  /*!< 8191 maximum number of charge transfer pulses  */
00288 #define TSC_MCV_16383           (TSC_CR_MCV_2 | TSC_CR_MCV_1)  /*!< 16383 maximum number of charge transfer pulses */
00289 /**
00290   * @}
00291   */
00292 
00293 /** @defgroup TSC_IO_Default_Mode IO Default Mode
00294   * @{
00295   */
00296 #define TSC_IODEF_OUT_PP_LOW    0x00000000U  /*!< I/Os are forced to output push-pull low */
00297 #define TSC_IODEF_IN_FLOAT      TSC_CR_IODEF /*!< I/Os are in input floating              */
00298 /**
00299   * @}
00300   */
00301 
00302 /** @defgroup TSC_Synchro_Pin_Polarity Synchro Pin Polarity
00303   * @{
00304   */
00305 #define TSC_SYNC_POLARITY_FALLING  0x00000000U    /*!< Falling edge only           */
00306 #define TSC_SYNC_POLARITY_RISING   TSC_CR_SYNCPOL /*!< Rising edge and high level  */
00307 /**
00308   * @}
00309   */
00310 
00311 /** @defgroup TSC_Acquisition_Mode Acquisition Mode
00312   * @{
00313   */
00314 #define TSC_ACQ_MODE_NORMAL     0x00000000U /*!< Normal acquisition mode (acquisition starts as soon as START bit is set)                                                              */
00315 #define TSC_ACQ_MODE_SYNCHRO    TSC_CR_AM   /*!< Synchronized acquisition mode (acquisition starts if START bit is set and when the selected signal is detected on the SYNC input pin) */
00316 /**
00317   * @}
00318   */
00319 
00320 /** @defgroup TSC_interrupts_definition Interrupts definition
00321   * @{
00322   */
00323 #define TSC_IT_EOA              TSC_IER_EOAIE /*!< End of acquisition interrupt enable */
00324 #define TSC_IT_MCE              TSC_IER_MCEIE /*!< Max count error interrupt enable    */
00325 /**
00326   * @}
00327   */
00328 
00329 /** @defgroup TSC_flags_definition Flags definition
00330   * @{
00331   */
00332 #define TSC_FLAG_EOA            TSC_ISR_EOAF /*!< End of acquisition flag */
00333 #define TSC_FLAG_MCE            TSC_ISR_MCEF /*!< Max count error flag    */
00334 /**
00335   * @}
00336   */
00337 
00338 /** @defgroup TSC_Group_definition Group definition
00339   * @{
00340   */
00341 #define TSC_GROUP1              (uint32_t)(0x1U << TSC_GROUP1_IDX)
00342 #define TSC_GROUP2              (uint32_t)(0x1U << TSC_GROUP2_IDX)
00343 #define TSC_GROUP3              (uint32_t)(0x1U << TSC_GROUP3_IDX)
00344 #define TSC_GROUP4              (uint32_t)(0x1U << TSC_GROUP4_IDX)
00345 #if defined(TSC_IOCCR_G5_IO1)
00346 #define TSC_GROUP5              (uint32_t)(0x1U << TSC_GROUP5_IDX)
00347 #endif
00348 #if defined(TSC_IOCCR_G6_IO1)
00349 #define TSC_GROUP6              (uint32_t)(0x1U << TSC_GROUP6_IDX)
00350 #endif
00351 #if defined(TSC_IOCCR_G7_IO1)
00352 #define TSC_GROUP7              (uint32_t)(0x1U << TSC_GROUP7_IDX)
00353 #endif
00354 #if defined(TSC_IOCCR_G8_IO1)
00355 #define TSC_GROUP8              (uint32_t)(0x1U << TSC_GROUP8_IDX)
00356 #endif
00357 
00358 #define TSC_GROUPX_NOT_SUPPORTED        0xFF000000U     /*!< TSC GroupX not supported       */
00359 
00360 #define TSC_GROUP1_IO1          TSC_IOCCR_G1_IO1 /*!< TSC Group1 IO1 */
00361 #define TSC_GROUP1_IO2          TSC_IOCCR_G1_IO2 /*!< TSC Group1 IO2 */
00362 #define TSC_GROUP1_IO3          TSC_IOCCR_G1_IO3 /*!< TSC Group1 IO3 */
00363 #define TSC_GROUP1_IO4          TSC_IOCCR_G1_IO4 /*!< TSC Group1 IO4 */
00364 
00365 #define TSC_GROUP2_IO1          TSC_IOCCR_G2_IO1 /*!< TSC Group2 IO1 */
00366 #define TSC_GROUP2_IO2          TSC_IOCCR_G2_IO2 /*!< TSC Group2 IO2 */
00367 #define TSC_GROUP2_IO3          TSC_IOCCR_G2_IO3 /*!< TSC Group2 IO3 */
00368 #define TSC_GROUP2_IO4          TSC_IOCCR_G2_IO4 /*!< TSC Group2 IO4 */
00369 
00370 #define TSC_GROUP3_IO1          TSC_IOCCR_G3_IO1 /*!< TSC Group3 IO1 */
00371 #define TSC_GROUP3_IO2          TSC_IOCCR_G3_IO2 /*!< TSC Group3 IO2 */
00372 #define TSC_GROUP3_IO3          TSC_IOCCR_G3_IO3 /*!< TSC Group3 IO3 */
00373 #define TSC_GROUP3_IO4          TSC_IOCCR_G3_IO4 /*!< TSC Group3 IO4 */
00374 
00375 #define TSC_GROUP4_IO1          TSC_IOCCR_G4_IO1 /*!< TSC Group4 IO1 */
00376 #define TSC_GROUP4_IO2          TSC_IOCCR_G4_IO2 /*!< TSC Group4 IO2 */
00377 #define TSC_GROUP4_IO3          TSC_IOCCR_G4_IO3 /*!< TSC Group4 IO3 */
00378 #define TSC_GROUP4_IO4          TSC_IOCCR_G4_IO4 /*!< TSC Group4 IO4 */
00379 #if defined(TSC_IOCCR_G5_IO1)
00380 
00381 #define TSC_GROUP5_IO1          TSC_IOCCR_G5_IO1 /*!< TSC Group5 IO1 */
00382 #define TSC_GROUP5_IO2          TSC_IOCCR_G5_IO2 /*!< TSC Group5 IO2 */
00383 #define TSC_GROUP5_IO3          TSC_IOCCR_G5_IO3 /*!< TSC Group5 IO3 */
00384 #define TSC_GROUP5_IO4          TSC_IOCCR_G5_IO4 /*!< TSC Group5 IO4 */
00385 #else
00386 
00387 #define TSC_GROUP5_IO1          (uint32_t)(0x00000010U | TSC_GROUPX_NOT_SUPPORTED)      /*!< TSC Group5 IO1 not supported   */
00388 #define TSC_GROUP5_IO2          TSC_GROUP5_IO1                                          /*!< TSC Group5 IO2 not supported   */
00389 #define TSC_GROUP5_IO3          TSC_GROUP5_IO1                                          /*!< TSC Group5 IO3 not supported   */
00390 #define TSC_GROUP5_IO4          TSC_GROUP5_IO1                                          /*!< TSC Group5 IO4 not supported   */
00391 #endif
00392 #if defined(TSC_IOCCR_G6_IO1)
00393 
00394 #define TSC_GROUP6_IO1          TSC_IOCCR_G6_IO1 /*!< TSC Group6 IO1 */
00395 #define TSC_GROUP6_IO2          TSC_IOCCR_G6_IO2 /*!< TSC Group6 IO2 */
00396 #define TSC_GROUP6_IO3          TSC_IOCCR_G6_IO3 /*!< TSC Group6 IO3 */
00397 #define TSC_GROUP6_IO4          TSC_IOCCR_G6_IO4 /*!< TSC Group6 IO4 */
00398 #else
00399 
00400 #define TSC_GROUP6_IO1          (uint32_t)(0x00000020U | TSC_GROUPX_NOT_SUPPORTED)      /*!< TSC Group6 IO1 not supported   */
00401 #define TSC_GROUP6_IO2          TSC_GROUP6_IO1                                          /*!< TSC Group6 IO2 not supported   */
00402 #define TSC_GROUP6_IO3          TSC_GROUP6_IO1                                          /*!< TSC Group6 IO3 not supported   */
00403 #define TSC_GROUP6_IO4          TSC_GROUP6_IO1                                          /*!< TSC Group6 IO4 not supported   */
00404 #endif
00405 #if defined(TSC_IOCCR_G7_IO1)
00406 
00407 #define TSC_GROUP7_IO1          TSC_IOCCR_G7_IO1 /*!< TSC Group7 IO1 */
00408 #define TSC_GROUP7_IO2          TSC_IOCCR_G7_IO2 /*!< TSC Group7 IO2 */
00409 #define TSC_GROUP7_IO3          TSC_IOCCR_G7_IO3 /*!< TSC Group7 IO3 */
00410 #define TSC_GROUP7_IO4          TSC_IOCCR_G7_IO4 /*!< TSC Group7 IO4 */
00411 #else
00412 
00413 #define TSC_GROUP7_IO1          (uint32_t)(0x00000040U | TSC_GROUPX_NOT_SUPPORTED)      /*!< TSC Group7 IO1 not supported   */
00414 #define TSC_GROUP7_IO2          TSC_GROUP7_IO1                                          /*!< TSC Group7 IO2 not supported   */
00415 #define TSC_GROUP7_IO3          TSC_GROUP7_IO1                                          /*!< TSC Group7 IO3 not supported   */
00416 #define TSC_GROUP7_IO4          TSC_GROUP7_IO1                                          /*!< TSC Group7 IO4 not supported   */
00417 #endif
00418 #if defined(TSC_IOCCR_G8_IO1)
00419 
00420 #define TSC_GROUP8_IO1          TSC_IOCCR_G8_IO1 /*!< TSC Group8 IO1 */
00421 #define TSC_GROUP8_IO2          TSC_IOCCR_G8_IO2 /*!< TSC Group8 IO2 */
00422 #define TSC_GROUP8_IO3          TSC_IOCCR_G8_IO3 /*!< TSC Group8 IO3 */
00423 #define TSC_GROUP8_IO4          TSC_IOCCR_G8_IO4 /*!< TSC Group8 IO4 */
00424 #else
00425 
00426 #define TSC_GROUP8_IO1          (uint32_t)(0x00000080U | TSC_GROUPX_NOT_SUPPORTED)      /*!< TSC Group8 IO1 not supported   */
00427 #define TSC_GROUP8_IO2          TSC_GROUP8_IO1                                          /*!< TSC Group8 IO2 not supported   */
00428 #define TSC_GROUP8_IO3          TSC_GROUP8_IO1                                          /*!< TSC Group8 IO3 not supported   */
00429 #define TSC_GROUP8_IO4          TSC_GROUP8_IO1                                          /*!< TSC Group8 IO4 not supported   */
00430 #endif
00431 /**
00432   * @}
00433   */
00434 
00435 /**
00436   * @}
00437   */
00438 
00439 /* Exported macros -----------------------------------------------------------*/
00440 
00441 /** @defgroup TSC_Exported_Macros TSC Exported Macros
00442   * @{
00443   */
00444 
00445 /** @brief Reset TSC handle state.
00446   * @param  __HANDLE__ TSC handle
00447   * @retval None
00448   */
00449 #if (USE_HAL_TSC_REGISTER_CALLBACKS == 1)
00450 #define __HAL_TSC_RESET_HANDLE_STATE(__HANDLE__)                   do{                                                   \
00451                                                                        (__HANDLE__)->State = HAL_TSC_STATE_RESET;       \
00452                                                                        (__HANDLE__)->MspInitCallback = NULL;            \
00453                                                                        (__HANDLE__)->MspDeInitCallback = NULL;          \
00454                                                                      } while(0)
00455 #else
00456 #define __HAL_TSC_RESET_HANDLE_STATE(__HANDLE__)                   ((__HANDLE__)->State = HAL_TSC_STATE_RESET)
00457 #endif
00458 
00459 /**
00460   * @brief Enable the TSC peripheral.
00461   * @param  __HANDLE__ TSC handle
00462   * @retval None
00463   */
00464 #define __HAL_TSC_ENABLE(__HANDLE__)                               ((__HANDLE__)->Instance->CR |= TSC_CR_TSCE)
00465 
00466 /**
00467   * @brief Disable the TSC peripheral.
00468   * @param  __HANDLE__ TSC handle
00469   * @retval None
00470   */
00471 #define __HAL_TSC_DISABLE(__HANDLE__)                              ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_TSCE))
00472 
00473 /**
00474   * @brief Start acquisition.
00475   * @param  __HANDLE__ TSC handle
00476   * @retval None
00477   */
00478 #define __HAL_TSC_START_ACQ(__HANDLE__)                            ((__HANDLE__)->Instance->CR |= TSC_CR_START)
00479 
00480 /**
00481   * @brief Stop acquisition.
00482   * @param  __HANDLE__ TSC handle
00483   * @retval None
00484   */
00485 #define __HAL_TSC_STOP_ACQ(__HANDLE__)                             ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_START))
00486 
00487 /**
00488   * @brief Set IO default mode to output push-pull low.
00489   * @param  __HANDLE__ TSC handle
00490   * @retval None
00491   */
00492 #define __HAL_TSC_SET_IODEF_OUTPPLOW(__HANDLE__)                   ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_IODEF))
00493 
00494 /**
00495   * @brief Set IO default mode to input floating.
00496   * @param  __HANDLE__ TSC handle
00497   * @retval None
00498   */
00499 #define __HAL_TSC_SET_IODEF_INFLOAT(__HANDLE__)                    ((__HANDLE__)->Instance->CR |= TSC_CR_IODEF)
00500 
00501 /**
00502   * @brief Set synchronization polarity to falling edge.
00503   * @param  __HANDLE__ TSC handle
00504   * @retval None
00505   */
00506 #define __HAL_TSC_SET_SYNC_POL_FALL(__HANDLE__)                    ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_SYNCPOL))
00507 
00508 /**
00509   * @brief Set synchronization polarity to rising edge and high level.
00510   * @param  __HANDLE__ TSC handle
00511   * @retval None
00512   */
00513 #define __HAL_TSC_SET_SYNC_POL_RISE_HIGH(__HANDLE__)               ((__HANDLE__)->Instance->CR |= TSC_CR_SYNCPOL)
00514 
00515 /**
00516   * @brief Enable TSC interrupt.
00517   * @param  __HANDLE__ TSC handle
00518   * @param  __INTERRUPT__ TSC interrupt
00519   * @retval None
00520   */
00521 #define __HAL_TSC_ENABLE_IT(__HANDLE__, __INTERRUPT__)             ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
00522 
00523 /**
00524   * @brief Disable TSC interrupt.
00525   * @param  __HANDLE__ TSC handle
00526   * @param  __INTERRUPT__ TSC interrupt
00527   * @retval None
00528   */
00529 #define __HAL_TSC_DISABLE_IT(__HANDLE__, __INTERRUPT__)            ((__HANDLE__)->Instance->IER &= (uint32_t)(~(__INTERRUPT__)))
00530 
00531 /** @brief Check whether the specified TSC interrupt source is enabled or not.
00532   * @param  __HANDLE__ TSC Handle
00533   * @param  __INTERRUPT__ TSC interrupt
00534   * @retval SET or RESET
00535   */
00536 #define __HAL_TSC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)         ((((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
00537 
00538 /**
00539   * @brief Check whether the specified TSC flag is set or not.
00540   * @param  __HANDLE__ TSC handle
00541   * @param  __FLAG__ TSC flag
00542   * @retval SET or RESET
00543   */
00544 #define __HAL_TSC_GET_FLAG(__HANDLE__, __FLAG__)                   ((((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
00545 
00546 /**
00547   * @brief Clear the TSC's pending flag.
00548   * @param  __HANDLE__ TSC handle
00549   * @param  __FLAG__ TSC flag
00550   * @retval None
00551   */
00552 #define __HAL_TSC_CLEAR_FLAG(__HANDLE__, __FLAG__)                 ((__HANDLE__)->Instance->ICR = (__FLAG__))
00553 
00554 /**
00555   * @brief Enable schmitt trigger hysteresis on a group of IOs.
00556   * @param  __HANDLE__ TSC handle
00557   * @param  __GX_IOY_MASK__ IOs mask
00558   * @retval None
00559   */
00560 #define __HAL_TSC_ENABLE_HYSTERESIS(__HANDLE__, __GX_IOY_MASK__)   ((__HANDLE__)->Instance->IOHCR |= (__GX_IOY_MASK__))
00561 
00562 /**
00563   * @brief Disable schmitt trigger hysteresis on a group of IOs.
00564   * @param  __HANDLE__ TSC handle
00565   * @param  __GX_IOY_MASK__ IOs mask
00566   * @retval None
00567   */
00568 #define __HAL_TSC_DISABLE_HYSTERESIS(__HANDLE__, __GX_IOY_MASK__)  ((__HANDLE__)->Instance->IOHCR &= (uint32_t)(~(__GX_IOY_MASK__)))
00569 
00570 /**
00571   * @brief Open analog switch on a group of IOs.
00572   * @param  __HANDLE__ TSC handle
00573   * @param  __GX_IOY_MASK__ IOs mask
00574   * @retval None
00575   */
00576 #define __HAL_TSC_OPEN_ANALOG_SWITCH(__HANDLE__, __GX_IOY_MASK__)  ((__HANDLE__)->Instance->IOASCR &= (uint32_t)(~(__GX_IOY_MASK__)))
00577 
00578 /**
00579   * @brief Close analog switch on a group of IOs.
00580   * @param  __HANDLE__ TSC handle
00581   * @param  __GX_IOY_MASK__ IOs mask
00582   * @retval None
00583   */
00584 #define __HAL_TSC_CLOSE_ANALOG_SWITCH(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOASCR |= (__GX_IOY_MASK__))
00585 
00586 /**
00587   * @brief Enable a group of IOs in channel mode.
00588   * @param  __HANDLE__ TSC handle
00589   * @param  __GX_IOY_MASK__ IOs mask
00590   * @retval None
00591   */
00592 #define __HAL_TSC_ENABLE_CHANNEL(__HANDLE__, __GX_IOY_MASK__)      ((__HANDLE__)->Instance->IOCCR |= (__GX_IOY_MASK__))
00593 
00594 /**
00595   * @brief Disable a group of channel IOs.
00596   * @param  __HANDLE__ TSC handle
00597   * @param  __GX_IOY_MASK__ IOs mask
00598   * @retval None
00599   */
00600 #define __HAL_TSC_DISABLE_CHANNEL(__HANDLE__, __GX_IOY_MASK__)     ((__HANDLE__)->Instance->IOCCR &= (uint32_t)(~(__GX_IOY_MASK__)))
00601 
00602 /**
00603   * @brief Enable a group of IOs in sampling mode.
00604   * @param  __HANDLE__ TSC handle
00605   * @param  __GX_IOY_MASK__ IOs mask
00606   * @retval None
00607   */
00608 #define __HAL_TSC_ENABLE_SAMPLING(__HANDLE__, __GX_IOY_MASK__)     ((__HANDLE__)->Instance->IOSCR |= (__GX_IOY_MASK__))
00609 
00610 /**
00611   * @brief Disable a group of sampling IOs.
00612   * @param  __HANDLE__ TSC handle
00613   * @param  __GX_IOY_MASK__ IOs mask
00614   * @retval None
00615   */
00616 #define __HAL_TSC_DISABLE_SAMPLING(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOSCR &= (uint32_t)(~(__GX_IOY_MASK__)))
00617 
00618 /**
00619   * @brief Enable acquisition groups.
00620   * @param  __HANDLE__ TSC handle
00621   * @param  __GX_MASK__ Groups mask
00622   * @retval None
00623   */
00624 #define __HAL_TSC_ENABLE_GROUP(__HANDLE__, __GX_MASK__) ((__HANDLE__)->Instance->IOGCSR |= (__GX_MASK__))
00625 
00626 /**
00627   * @brief Disable acquisition groups.
00628   * @param  __HANDLE__ TSC handle
00629   * @param  __GX_MASK__ Groups mask
00630   * @retval None
00631   */
00632 #define __HAL_TSC_DISABLE_GROUP(__HANDLE__, __GX_MASK__) ((__HANDLE__)->Instance->IOGCSR &= (uint32_t)(~(__GX_MASK__)))
00633 
00634 /** @brief Gets acquisition group status.
00635   * @param  __HANDLE__ TSC Handle
00636   * @param  __GX_INDEX__ Group index
00637   * @retval SET or RESET
00638   */
00639 #define __HAL_TSC_GET_GROUP_STATUS(__HANDLE__, __GX_INDEX__) \
00640 ((((__HANDLE__)->Instance->IOGCSR & (uint32_t)((uint32_t)1U << ((__GX_INDEX__) + (uint32_t)16U))) == (uint32_t)((uint32_t)1U << ((__GX_INDEX__) + (uint32_t)16U))) ? TSC_GROUP_COMPLETED : TSC_GROUP_ONGOING)
00641 
00642 /**
00643   * @}
00644   */
00645 
00646 /* Private macros ------------------------------------------------------------*/
00647 
00648 /** @defgroup TSC_Private_Macros TSC Private Macros
00649   * @{
00650   */
00651 
00652 #define IS_TSC_CTPH(__VALUE__)          (((__VALUE__) == TSC_CTPH_1CYCLE)   || \
00653                                          ((__VALUE__) == TSC_CTPH_2CYCLES)  || \
00654                                          ((__VALUE__) == TSC_CTPH_3CYCLES)  || \
00655                                          ((__VALUE__) == TSC_CTPH_4CYCLES)  || \
00656                                          ((__VALUE__) == TSC_CTPH_5CYCLES)  || \
00657                                          ((__VALUE__) == TSC_CTPH_6CYCLES)  || \
00658                                          ((__VALUE__) == TSC_CTPH_7CYCLES)  || \
00659                                          ((__VALUE__) == TSC_CTPH_8CYCLES)  || \
00660                                          ((__VALUE__) == TSC_CTPH_9CYCLES)  || \
00661                                          ((__VALUE__) == TSC_CTPH_10CYCLES) || \
00662                                          ((__VALUE__) == TSC_CTPH_11CYCLES) || \
00663                                          ((__VALUE__) == TSC_CTPH_12CYCLES) || \
00664                                          ((__VALUE__) == TSC_CTPH_13CYCLES) || \
00665                                          ((__VALUE__) == TSC_CTPH_14CYCLES) || \
00666                                          ((__VALUE__) == TSC_CTPH_15CYCLES) || \
00667                                          ((__VALUE__) == TSC_CTPH_16CYCLES))
00668 
00669 #define IS_TSC_CTPL(__VALUE__)          (((__VALUE__) == TSC_CTPL_1CYCLE)   || \
00670                                          ((__VALUE__) == TSC_CTPL_2CYCLES)  || \
00671                                          ((__VALUE__) == TSC_CTPL_3CYCLES)  || \
00672                                          ((__VALUE__) == TSC_CTPL_4CYCLES)  || \
00673                                          ((__VALUE__) == TSC_CTPL_5CYCLES)  || \
00674                                          ((__VALUE__) == TSC_CTPL_6CYCLES)  || \
00675                                          ((__VALUE__) == TSC_CTPL_7CYCLES)  || \
00676                                          ((__VALUE__) == TSC_CTPL_8CYCLES)  || \
00677                                          ((__VALUE__) == TSC_CTPL_9CYCLES)  || \
00678                                          ((__VALUE__) == TSC_CTPL_10CYCLES) || \
00679                                          ((__VALUE__) == TSC_CTPL_11CYCLES) || \
00680                                          ((__VALUE__) == TSC_CTPL_12CYCLES) || \
00681                                          ((__VALUE__) == TSC_CTPL_13CYCLES) || \
00682                                          ((__VALUE__) == TSC_CTPL_14CYCLES) || \
00683                                          ((__VALUE__) == TSC_CTPL_15CYCLES) || \
00684                                          ((__VALUE__) == TSC_CTPL_16CYCLES))
00685 
00686 #define IS_TSC_SS(__VALUE__)            (((__VALUE__) == DISABLE) || ((__VALUE__) == ENABLE))
00687 
00688 #define IS_TSC_SSD(__VALUE__)           (((__VALUE__) == 0U) || (((__VALUE__) > 0U) && ((__VALUE__) < 128U)))
00689 
00690 #define IS_TSC_SS_PRESC(__VALUE__)      (((__VALUE__) == TSC_SS_PRESC_DIV1) || ((__VALUE__) == TSC_SS_PRESC_DIV2))
00691 
00692 #define IS_TSC_PG_PRESC(__VALUE__)      (((__VALUE__) == TSC_PG_PRESC_DIV1)  || \
00693                                          ((__VALUE__) == TSC_PG_PRESC_DIV2)  || \
00694                                          ((__VALUE__) == TSC_PG_PRESC_DIV4)  || \
00695                                          ((__VALUE__) == TSC_PG_PRESC_DIV8)  || \
00696                                          ((__VALUE__) == TSC_PG_PRESC_DIV16) || \
00697                                          ((__VALUE__) == TSC_PG_PRESC_DIV32) || \
00698                                          ((__VALUE__) == TSC_PG_PRESC_DIV64) || \
00699                                          ((__VALUE__) == TSC_PG_PRESC_DIV128))
00700 
00701 #define IS_TSC_MCV(__VALUE__)           (((__VALUE__) == TSC_MCV_255)  || \
00702                                          ((__VALUE__) == TSC_MCV_511)  || \
00703                                          ((__VALUE__) == TSC_MCV_1023) || \
00704                                          ((__VALUE__) == TSC_MCV_2047) || \
00705                                          ((__VALUE__) == TSC_MCV_4095) || \
00706                                          ((__VALUE__) == TSC_MCV_8191) || \
00707                                           ((__VALUE__) == TSC_MCV_16383))
00708 
00709 #define IS_TSC_IODEF(__VALUE__)         (((__VALUE__) == TSC_IODEF_OUT_PP_LOW) || ((__VALUE__) == TSC_IODEF_IN_FLOAT))
00710 
00711 #define IS_TSC_SYNC_POL(__VALUE__)      (((__VALUE__) == TSC_SYNC_POLARITY_FALLING) || ((__VALUE__) == TSC_SYNC_POLARITY_RISING))
00712 
00713 #define IS_TSC_ACQ_MODE(__VALUE__)      (((__VALUE__) == TSC_ACQ_MODE_NORMAL) || ((__VALUE__) == TSC_ACQ_MODE_SYNCHRO))
00714 
00715 #define IS_TSC_MCE_IT(__VALUE__)        (((__VALUE__) == DISABLE) || ((__VALUE__) == ENABLE))
00716 
00717 #define IS_TSC_GROUP_INDEX(__VALUE__)   (((__VALUE__) == 0U) || (((__VALUE__) > 0U) && ((__VALUE__) < TSC_NB_OF_GROUPS)))
00718 
00719 
00720 #define IS_TSC_GROUP(__VALUE__)        ((((__VALUE__) & TSC_GROUPX_NOT_SUPPORTED) != TSC_GROUPX_NOT_SUPPORTED) && \
00721                                         ((((__VALUE__) & TSC_GROUP1_IO1) == TSC_GROUP1_IO1) ||\
00722                                          (((__VALUE__) & TSC_GROUP1_IO2) == TSC_GROUP1_IO2) ||\
00723                                          (((__VALUE__) & TSC_GROUP1_IO3) == TSC_GROUP1_IO3) ||\
00724                                          (((__VALUE__) & TSC_GROUP1_IO4) == TSC_GROUP1_IO4) ||\
00725                                          (((__VALUE__) & TSC_GROUP2_IO1) == TSC_GROUP2_IO1) ||\
00726                                          (((__VALUE__) & TSC_GROUP2_IO2) == TSC_GROUP2_IO2) ||\
00727                                          (((__VALUE__) & TSC_GROUP2_IO3) == TSC_GROUP2_IO3) ||\
00728                                          (((__VALUE__) & TSC_GROUP2_IO4) == TSC_GROUP2_IO4) ||\
00729                                          (((__VALUE__) & TSC_GROUP3_IO1) == TSC_GROUP3_IO1) ||\
00730                                          (((__VALUE__) & TSC_GROUP3_IO2) == TSC_GROUP3_IO2) ||\
00731                                          (((__VALUE__) & TSC_GROUP3_IO3) == TSC_GROUP3_IO3) ||\
00732                                          (((__VALUE__) & TSC_GROUP3_IO4) == TSC_GROUP3_IO4) ||\
00733                                          (((__VALUE__) & TSC_GROUP4_IO1) == TSC_GROUP4_IO1) ||\
00734                                          (((__VALUE__) & TSC_GROUP4_IO2) == TSC_GROUP4_IO2) ||\
00735                                          (((__VALUE__) & TSC_GROUP4_IO3) == TSC_GROUP4_IO3) ||\
00736                                          (((__VALUE__) & TSC_GROUP4_IO4) == TSC_GROUP4_IO4) ||\
00737                                          (((__VALUE__) & TSC_GROUP5_IO1) == TSC_GROUP5_IO1) ||\
00738                                          (((__VALUE__) & TSC_GROUP5_IO2) == TSC_GROUP5_IO2) ||\
00739                                          (((__VALUE__) & TSC_GROUP5_IO3) == TSC_GROUP5_IO3) ||\
00740                                          (((__VALUE__) & TSC_GROUP5_IO4) == TSC_GROUP5_IO4) ||\
00741                                          (((__VALUE__) & TSC_GROUP6_IO1) == TSC_GROUP6_IO1) ||\
00742                                          (((__VALUE__) & TSC_GROUP6_IO2) == TSC_GROUP6_IO2) ||\
00743                                          (((__VALUE__) & TSC_GROUP6_IO3) == TSC_GROUP6_IO3) ||\
00744                                          (((__VALUE__) & TSC_GROUP6_IO4) == TSC_GROUP6_IO4) ||\
00745                                          (((__VALUE__) & TSC_GROUP7_IO1) == TSC_GROUP7_IO1) ||\
00746                                          (((__VALUE__) & TSC_GROUP7_IO2) == TSC_GROUP7_IO2) ||\
00747                                          (((__VALUE__) & TSC_GROUP7_IO3) == TSC_GROUP7_IO3) ||\
00748                                          (((__VALUE__) & TSC_GROUP7_IO4) == TSC_GROUP7_IO4) ||\
00749                                          (((__VALUE__) & TSC_GROUP8_IO1) == TSC_GROUP8_IO1) ||\
00750                                          (((__VALUE__) & TSC_GROUP8_IO2) == TSC_GROUP8_IO2) ||\
00751                                          (((__VALUE__) & TSC_GROUP8_IO3) == TSC_GROUP8_IO3) ||\
00752                                          (((__VALUE__) & TSC_GROUP8_IO4) == TSC_GROUP8_IO4)))
00753 
00754 /**
00755   * @}
00756   */
00757 
00758 /* Exported functions --------------------------------------------------------*/
00759 /** @addtogroup TSC_Exported_Functions
00760   * @{
00761   */
00762 
00763 /** @addtogroup TSC_Exported_Functions_Group1 Initialization and de-initialization functions
00764   * @{
00765   */
00766 /* Initialization and de-initialization functions *****************************/
00767 HAL_StatusTypeDef HAL_TSC_Init(TSC_HandleTypeDef *htsc);
00768 HAL_StatusTypeDef HAL_TSC_DeInit(TSC_HandleTypeDef *htsc);
00769 void HAL_TSC_MspInit(TSC_HandleTypeDef *htsc);
00770 void HAL_TSC_MspDeInit(TSC_HandleTypeDef *htsc);
00771 
00772 /* Callbacks Register/UnRegister functions  ***********************************/
00773 #if (USE_HAL_TSC_REGISTER_CALLBACKS == 1)
00774 HAL_StatusTypeDef HAL_TSC_RegisterCallback(TSC_HandleTypeDef *htsc, HAL_TSC_CallbackIDTypeDef CallbackID, pTSC_CallbackTypeDef pCallback);
00775 HAL_StatusTypeDef HAL_TSC_UnRegisterCallback(TSC_HandleTypeDef *htsc, HAL_TSC_CallbackIDTypeDef CallbackID);
00776 #endif /* USE_HAL_TSC_REGISTER_CALLBACKS */
00777 /**
00778   * @}
00779   */
00780 
00781 /** @addtogroup TSC_Exported_Functions_Group2 Input and Output operation functions
00782   * @{
00783   */
00784 /* IO operation functions *****************************************************/
00785 HAL_StatusTypeDef HAL_TSC_Start(TSC_HandleTypeDef *htsc);
00786 HAL_StatusTypeDef HAL_TSC_Start_IT(TSC_HandleTypeDef *htsc);
00787 HAL_StatusTypeDef HAL_TSC_Stop(TSC_HandleTypeDef *htsc);
00788 HAL_StatusTypeDef HAL_TSC_Stop_IT(TSC_HandleTypeDef *htsc);
00789 HAL_StatusTypeDef HAL_TSC_PollForAcquisition(TSC_HandleTypeDef *htsc);
00790 TSC_GroupStatusTypeDef HAL_TSC_GroupGetStatus(TSC_HandleTypeDef *htsc, uint32_t gx_index);
00791 uint32_t HAL_TSC_GroupGetValue(TSC_HandleTypeDef *htsc, uint32_t gx_index);
00792 /**
00793   * @}
00794   */
00795 
00796 /** @addtogroup TSC_Exported_Functions_Group3 Peripheral Control functions
00797   * @{
00798   */
00799 /* Peripheral Control functions ***********************************************/
00800 HAL_StatusTypeDef HAL_TSC_IOConfig(TSC_HandleTypeDef *htsc, TSC_IOConfigTypeDef *config);
00801 HAL_StatusTypeDef HAL_TSC_IODischarge(TSC_HandleTypeDef *htsc, uint32_t choice);
00802 /**
00803   * @}
00804   */
00805 
00806 /** @addtogroup TSC_Exported_Functions_Group4 Peripheral State and Errors functions
00807   * @{
00808   */
00809 /* Peripheral State and Error functions ***************************************/
00810 HAL_TSC_StateTypeDef HAL_TSC_GetState(TSC_HandleTypeDef *htsc);
00811 /**
00812   * @}
00813   */
00814 
00815 /** @addtogroup TSC_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
00816  * @{
00817  */
00818 /******* TSC IRQHandler and Callbacks used in Interrupt mode */
00819 void HAL_TSC_IRQHandler(TSC_HandleTypeDef *htsc);
00820 void HAL_TSC_ConvCpltCallback(TSC_HandleTypeDef *htsc);
00821 void HAL_TSC_ErrorCallback(TSC_HandleTypeDef *htsc);
00822 /**
00823   * @}
00824   */
00825 
00826 /**
00827   * @}
00828   */
00829 
00830 /**
00831   * @}
00832   */
00833 
00834 /**
00835   * @}
00836   */
00837 
00838 #ifdef __cplusplus
00839 }
00840 #endif
00841 
00842 #endif /* __STM32L4xx_HAL_TSC_H */
00843 
00844 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/