mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
489:119543c9f674
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

Full URL: https://github.com/mbedmicro/mbed/commit/d5b4d2ab9c47edb4dc5776e7177b0c2263459081/

Initial version of drivers for SAMR21

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 376:cb4d9db17537 1 /**
mbed_official 376:cb4d9db17537 2 ******************************************************************************
mbed_official 376:cb4d9db17537 3 * @file stm32l0xx_hal_tsc.c
mbed_official 376:cb4d9db17537 4 * @author MCD Application Team
mbed_official 489:119543c9f674 5 * @version V1.2.0
mbed_official 489:119543c9f674 6 * @date 06-February-2015
mbed_official 376:cb4d9db17537 7 * @brief This file provides firmware functions to manage the following
mbed_official 376:cb4d9db17537 8 * functionalities of the Touch Sensing Controller (TSC) peripheral:
mbed_official 376:cb4d9db17537 9 * + Initialization and DeInitialization
mbed_official 376:cb4d9db17537 10 * + Channel IOs, Shield IOs and Sampling IOs configuration
mbed_official 376:cb4d9db17537 11 * + Start and Stop an acquisition
mbed_official 376:cb4d9db17537 12 * + Read acquisition result
mbed_official 376:cb4d9db17537 13 * + Interrupts and flags management
mbed_official 376:cb4d9db17537 14 *
mbed_official 376:cb4d9db17537 15 @verbatim
mbed_official 376:cb4d9db17537 16 ================================================================================
mbed_official 376:cb4d9db17537 17 ##### TSC specific features #####
mbed_official 376:cb4d9db17537 18 ================================================================================
mbed_official 376:cb4d9db17537 19 [..]
mbed_official 376:cb4d9db17537 20 (#) Proven and robust surface charge transfer acquisition principle
mbed_official 376:cb4d9db17537 21
mbed_official 376:cb4d9db17537 22 (#) Supports up to 3 capacitive sensing channels per group
mbed_official 376:cb4d9db17537 23
mbed_official 376:cb4d9db17537 24 (#) Capacitive sensing channels can be acquired in parallel offering a very good
mbed_official 376:cb4d9db17537 25 response time
mbed_official 376:cb4d9db17537 26
mbed_official 376:cb4d9db17537 27 (#) Spread spectrum feature to improve system robustness in noisy environments
mbed_official 376:cb4d9db17537 28
mbed_official 376:cb4d9db17537 29 (#) Full hardware management of the charge transfer acquisition sequence
mbed_official 376:cb4d9db17537 30
mbed_official 376:cb4d9db17537 31 (#) Programmable charge transfer frequency
mbed_official 376:cb4d9db17537 32
mbed_official 376:cb4d9db17537 33 (#) Programmable sampling capacitor I/O pin
mbed_official 376:cb4d9db17537 34
mbed_official 376:cb4d9db17537 35 (#) Programmable channel I/O pin
mbed_official 376:cb4d9db17537 36
mbed_official 376:cb4d9db17537 37 (#) Programmable max count value to avoid long acquisition when a channel is faulty
mbed_official 376:cb4d9db17537 38
mbed_official 376:cb4d9db17537 39 (#) Dedicated end of acquisition and max count error flags with interrupt capability
mbed_official 376:cb4d9db17537 40
mbed_official 376:cb4d9db17537 41 (#) One sampling capacitor for up to 3 capacitive sensing channels to reduce the system
mbed_official 376:cb4d9db17537 42 components
mbed_official 376:cb4d9db17537 43
mbed_official 376:cb4d9db17537 44 (#) Compatible with proximity, touchkey, linear and rotary touch sensor implementation
mbed_official 376:cb4d9db17537 45
mbed_official 376:cb4d9db17537 46
mbed_official 376:cb4d9db17537 47 ##### How to use this driver #####
mbed_official 376:cb4d9db17537 48 ================================================================================
mbed_official 376:cb4d9db17537 49 [..]
mbed_official 489:119543c9f674 50 (#) Enable the TSC interface clock using __HAL_RCC_TSC_CLK_ENABLE() macro.
mbed_official 376:cb4d9db17537 51
mbed_official 376:cb4d9db17537 52 (#) GPIO pins configuration
mbed_official 489:119543c9f674 53 (++) Enable the clock for the TSC GPIOs using __HAL_RCC_GPIOx_CLK_ENABLE() macro.
mbed_official 376:cb4d9db17537 54 (++) Configure the TSC pins used as sampling IOs in alternate function output Open-Drain mode,
mbed_official 376:cb4d9db17537 55 and TSC pins used as channel/shield IOs in alternate function output Push-Pull mode
mbed_official 376:cb4d9db17537 56 using HAL_GPIO_Init() function.
mbed_official 376:cb4d9db17537 57 (++) Configure the alternate function on all the TSC pins using HAL_xxxx() function.
mbed_official 376:cb4d9db17537 58
mbed_official 376:cb4d9db17537 59 (#) Interrupts configuration
mbed_official 376:cb4d9db17537 60 (++) Configure the NVIC (if the interrupt model is used) using HAL_xxx() function.
mbed_official 376:cb4d9db17537 61
mbed_official 376:cb4d9db17537 62 (#) TSC configuration
mbed_official 376:cb4d9db17537 63 (++) Configure all TSC parameters and used TSC IOs using HAL_TSC_Init() function.
mbed_official 376:cb4d9db17537 64
mbed_official 376:cb4d9db17537 65 *** Acquisition sequence ***
mbed_official 376:cb4d9db17537 66 ===================================
mbed_official 376:cb4d9db17537 67 [..]
mbed_official 376:cb4d9db17537 68 (+) Discharge all IOs using HAL_TSC_IODischarge() function.
mbed_official 376:cb4d9db17537 69 (+) Wait a certain time allowing a good discharge of all capacitors. This delay depends
mbed_official 376:cb4d9db17537 70 of the sampling capacitor and electrodes design.
mbed_official 376:cb4d9db17537 71 (+) Select the channel IOs to be acquired using HAL_TSC_IOConfig() function.
mbed_official 376:cb4d9db17537 72 (+) Launch the acquisition using either HAL_TSC_Start() or HAL_TSC_Start_IT() function.
mbed_official 376:cb4d9db17537 73 If the synchronized mode is selected, the acquisition will start as soon as the signal
mbed_official 376:cb4d9db17537 74 is received on the synchro pin.
mbed_official 376:cb4d9db17537 75 (+) Wait the end of acquisition using either HAL_TSC_PollForAcquisition() or
mbed_official 376:cb4d9db17537 76 HAL_TSC_GetState() function or using WFI instruction for example.
mbed_official 376:cb4d9db17537 77 (+) Check the group acquisition status using HAL_TSC_GroupGetStatus() function.
mbed_official 376:cb4d9db17537 78 (+) Read the acquisition value using HAL_TSC_GroupGetValue() function.
mbed_official 376:cb4d9db17537 79
mbed_official 376:cb4d9db17537 80 @endverbatim
mbed_official 376:cb4d9db17537 81 ******************************************************************************
mbed_official 376:cb4d9db17537 82 * @attention
mbed_official 376:cb4d9db17537 83 *
mbed_official 489:119543c9f674 84 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 376:cb4d9db17537 85 *
mbed_official 376:cb4d9db17537 86 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 376:cb4d9db17537 87 * are permitted provided that the following conditions are met:
mbed_official 376:cb4d9db17537 88 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 376:cb4d9db17537 89 * this list of conditions and the following disclaimer.
mbed_official 376:cb4d9db17537 90 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 376:cb4d9db17537 91 * this list of conditions and the following disclaimer in the documentation
mbed_official 376:cb4d9db17537 92 * and/or other materials provided with the distribution.
mbed_official 376:cb4d9db17537 93 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 376:cb4d9db17537 94 * may be used to endorse or promote products derived from this software
mbed_official 376:cb4d9db17537 95 * without specific prior written permission.
mbed_official 376:cb4d9db17537 96 *
mbed_official 376:cb4d9db17537 97 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 376:cb4d9db17537 98 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 376:cb4d9db17537 99 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 376:cb4d9db17537 100 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 376:cb4d9db17537 101 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 376:cb4d9db17537 102 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 376:cb4d9db17537 103 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 376:cb4d9db17537 104 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 376:cb4d9db17537 105 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 376:cb4d9db17537 106 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 376:cb4d9db17537 107 *
mbed_official 376:cb4d9db17537 108 ******************************************************************************
mbed_official 376:cb4d9db17537 109 */
mbed_official 376:cb4d9db17537 110
mbed_official 376:cb4d9db17537 111 /* Includes ------------------------------------------------------------------*/
mbed_official 489:119543c9f674 112 #if !defined (STM32L031xx) && !defined (STM32L041xx) && !defined (STM32L051xx) && !defined (STM32L061xx) && !defined (STM32L071xx) && !defined (STM32L081xx)
mbed_official 376:cb4d9db17537 113 #include "stm32l0xx_hal.h"
mbed_official 376:cb4d9db17537 114
mbed_official 489:119543c9f674 115 #ifdef HAL_TSC_MODULE_ENABLED
mbed_official 376:cb4d9db17537 116 /** @addtogroup STM32L0xx_HAL_Driver
mbed_official 376:cb4d9db17537 117 * @{
mbed_official 376:cb4d9db17537 118 */
mbed_official 376:cb4d9db17537 119
mbed_official 376:cb4d9db17537 120 /** @defgroup TSC
mbed_official 376:cb4d9db17537 121 * @brief HAL TSC module driver
mbed_official 376:cb4d9db17537 122 * @{
mbed_official 376:cb4d9db17537 123 */
mbed_official 376:cb4d9db17537 124
mbed_official 376:cb4d9db17537 125
mbed_official 376:cb4d9db17537 126 /* Private typedef -----------------------------------------------------------*/
mbed_official 376:cb4d9db17537 127 /* Private define ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 128 /* Private macro -------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 129 /* Private variables ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 130 /* Private function prototypes -----------------------------------------------*/
mbed_official 376:cb4d9db17537 131 static uint32_t TSC_extract_groups(uint32_t iomask);
mbed_official 376:cb4d9db17537 132 /* Private functions ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 133
mbed_official 376:cb4d9db17537 134 /** @defgroup TSC_Private_Functions
mbed_official 376:cb4d9db17537 135 * @{
mbed_official 376:cb4d9db17537 136 */
mbed_official 376:cb4d9db17537 137
mbed_official 376:cb4d9db17537 138 /** @defgroup TSC_Group1 Initialization/de-initialization functions
mbed_official 376:cb4d9db17537 139 * @brief Initialization and Configuration functions
mbed_official 376:cb4d9db17537 140 *
mbed_official 376:cb4d9db17537 141 @verbatim
mbed_official 376:cb4d9db17537 142 ===============================================================================
mbed_official 376:cb4d9db17537 143 ##### Initialization and de-initialization functions #####
mbed_official 376:cb4d9db17537 144 ===============================================================================
mbed_official 376:cb4d9db17537 145 [..] This section provides functions allowing to:
mbed_official 376:cb4d9db17537 146 (+) Initialize and configure the TSC.
mbed_official 376:cb4d9db17537 147 (+) De-initialize the TSC.
mbed_official 376:cb4d9db17537 148 @endverbatim
mbed_official 376:cb4d9db17537 149 * @{
mbed_official 376:cb4d9db17537 150 */
mbed_official 376:cb4d9db17537 151
mbed_official 376:cb4d9db17537 152 /**
mbed_official 376:cb4d9db17537 153 * @brief Initializes the TSC peripheral according to the specified parameters
mbed_official 376:cb4d9db17537 154 * in the TSC_InitTypeDef structure.
mbed_official 376:cb4d9db17537 155 * @param htsc: TSC handle
mbed_official 376:cb4d9db17537 156 * @retval HAL status
mbed_official 376:cb4d9db17537 157 */
mbed_official 376:cb4d9db17537 158 HAL_StatusTypeDef HAL_TSC_Init(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 159 {
mbed_official 376:cb4d9db17537 160 /* Check TSC handle allocation */
mbed_official 489:119543c9f674 161 if (htsc == NULL)
mbed_official 376:cb4d9db17537 162 {
mbed_official 376:cb4d9db17537 163 return HAL_ERROR;
mbed_official 376:cb4d9db17537 164 }
mbed_official 376:cb4d9db17537 165
mbed_official 376:cb4d9db17537 166 /* Check the parameters */
mbed_official 376:cb4d9db17537 167 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 168 assert_param(IS_TSC_CTPH(htsc->Init.CTPulseHighLength));
mbed_official 376:cb4d9db17537 169 assert_param(IS_TSC_CTPL(htsc->Init.CTPulseLowLength));
mbed_official 376:cb4d9db17537 170 assert_param(IS_TSC_SS(htsc->Init.SpreadSpectrum));
mbed_official 376:cb4d9db17537 171 assert_param(IS_TSC_SSD(htsc->Init.SpreadSpectrumDeviation));
mbed_official 376:cb4d9db17537 172 assert_param(IS_TSC_SS_PRESC(htsc->Init.SpreadSpectrumPrescaler));
mbed_official 376:cb4d9db17537 173 assert_param(IS_TSC_PG_PRESC(htsc->Init.PulseGeneratorPrescaler));
mbed_official 376:cb4d9db17537 174 assert_param(IS_TSC_MCV(htsc->Init.MaxCountValue));
mbed_official 376:cb4d9db17537 175 assert_param(IS_TSC_IODEF(htsc->Init.IODefaultMode));
mbed_official 376:cb4d9db17537 176 assert_param(IS_TSC_SYNC_POL(htsc->Init.SynchroPinPolarity));
mbed_official 376:cb4d9db17537 177 assert_param(IS_TSC_ACQ_MODE(htsc->Init.AcquisitionMode));
mbed_official 376:cb4d9db17537 178 assert_param(IS_TSC_MCE_IT(htsc->Init.MaxCountInterrupt));
mbed_official 376:cb4d9db17537 179
mbed_official 376:cb4d9db17537 180 /* Initialize the TSC state */
mbed_official 376:cb4d9db17537 181 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 182
mbed_official 376:cb4d9db17537 183 /* Init the low level hardware : GPIO, CLOCK, CORTEX */
mbed_official 376:cb4d9db17537 184 HAL_TSC_MspInit(htsc);
mbed_official 376:cb4d9db17537 185
mbed_official 376:cb4d9db17537 186 /*--------------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 187 /* Set TSC parameters */
mbed_official 376:cb4d9db17537 188
mbed_official 376:cb4d9db17537 189 /* Enable TSC */
mbed_official 376:cb4d9db17537 190 htsc->Instance->CR = TSC_CR_TSCE;
mbed_official 376:cb4d9db17537 191
mbed_official 376:cb4d9db17537 192 /* Set all functions */
mbed_official 376:cb4d9db17537 193 htsc->Instance->CR |= (htsc->Init.CTPulseHighLength |
mbed_official 376:cb4d9db17537 194 htsc->Init.CTPulseLowLength |
mbed_official 376:cb4d9db17537 195 (uint32_t)(htsc->Init.SpreadSpectrumDeviation << 17) |
mbed_official 376:cb4d9db17537 196 htsc->Init.SpreadSpectrumPrescaler |
mbed_official 376:cb4d9db17537 197 htsc->Init.PulseGeneratorPrescaler |
mbed_official 376:cb4d9db17537 198 htsc->Init.MaxCountValue |
mbed_official 376:cb4d9db17537 199 htsc->Init.IODefaultMode |
mbed_official 376:cb4d9db17537 200 htsc->Init.SynchroPinPolarity |
mbed_official 376:cb4d9db17537 201 htsc->Init.AcquisitionMode);
mbed_official 376:cb4d9db17537 202
mbed_official 376:cb4d9db17537 203 /* Spread spectrum */
mbed_official 376:cb4d9db17537 204 if (htsc->Init.SpreadSpectrum == ENABLE)
mbed_official 376:cb4d9db17537 205 {
mbed_official 376:cb4d9db17537 206 htsc->Instance->CR |= TSC_CR_SSE;
mbed_official 376:cb4d9db17537 207 }
mbed_official 376:cb4d9db17537 208
mbed_official 376:cb4d9db17537 209 /* Disable Schmitt trigger hysteresis on all used TSC IOs */
mbed_official 376:cb4d9db17537 210 htsc->Instance->IOHCR = (uint32_t)(~(htsc->Init.ChannelIOs | htsc->Init.ShieldIOs | htsc->Init.SamplingIOs));
mbed_official 376:cb4d9db17537 211
mbed_official 376:cb4d9db17537 212 /* Set channel and shield IOs */
mbed_official 376:cb4d9db17537 213 htsc->Instance->IOCCR = (htsc->Init.ChannelIOs | htsc->Init.ShieldIOs);
mbed_official 376:cb4d9db17537 214
mbed_official 376:cb4d9db17537 215 /* Set sampling IOs */
mbed_official 376:cb4d9db17537 216 htsc->Instance->IOSCR = htsc->Init.SamplingIOs;
mbed_official 376:cb4d9db17537 217
mbed_official 376:cb4d9db17537 218 /* Set the groups to be acquired */
mbed_official 376:cb4d9db17537 219 htsc->Instance->IOGCSR = TSC_extract_groups(htsc->Init.ChannelIOs);
mbed_official 376:cb4d9db17537 220
mbed_official 376:cb4d9db17537 221 /* Clear interrupts */
mbed_official 376:cb4d9db17537 222 htsc->Instance->IER &= (uint32_t)(~(TSC_IT_EOA | TSC_IT_MCE));
mbed_official 376:cb4d9db17537 223
mbed_official 376:cb4d9db17537 224 /* Clear flags */
mbed_official 376:cb4d9db17537 225 htsc->Instance->ICR |= (TSC_FLAG_EOA | TSC_FLAG_MCE);
mbed_official 376:cb4d9db17537 226
mbed_official 376:cb4d9db17537 227 /*--------------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 228
mbed_official 376:cb4d9db17537 229 /* Initialize the TSC state */
mbed_official 376:cb4d9db17537 230 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 231
mbed_official 376:cb4d9db17537 232 /* Return function status */
mbed_official 376:cb4d9db17537 233 return HAL_OK;
mbed_official 376:cb4d9db17537 234 }
mbed_official 376:cb4d9db17537 235
mbed_official 376:cb4d9db17537 236 /**
mbed_official 376:cb4d9db17537 237 * @brief Deinitializes the TSC peripheral registers to their default reset values.
mbed_official 376:cb4d9db17537 238 * @param htsc: TSC handle
mbed_official 376:cb4d9db17537 239 * @retval HAL status
mbed_official 376:cb4d9db17537 240 */
mbed_official 376:cb4d9db17537 241 HAL_StatusTypeDef HAL_TSC_DeInit(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 242 {
mbed_official 376:cb4d9db17537 243 /* Check TSC handle allocation */
mbed_official 489:119543c9f674 244 if (htsc == NULL)
mbed_official 376:cb4d9db17537 245 {
mbed_official 376:cb4d9db17537 246 return HAL_ERROR;
mbed_official 376:cb4d9db17537 247 }
mbed_official 376:cb4d9db17537 248
mbed_official 376:cb4d9db17537 249 /* Check the parameters */
mbed_official 376:cb4d9db17537 250 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 251
mbed_official 376:cb4d9db17537 252 /* Change TSC state */
mbed_official 376:cb4d9db17537 253 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 254
mbed_official 376:cb4d9db17537 255 /* DeInit the low level hardware */
mbed_official 376:cb4d9db17537 256 HAL_TSC_MspDeInit(htsc);
mbed_official 376:cb4d9db17537 257
mbed_official 376:cb4d9db17537 258 /* Change TSC state */
mbed_official 376:cb4d9db17537 259 htsc->State = HAL_TSC_STATE_RESET;
mbed_official 376:cb4d9db17537 260
mbed_official 376:cb4d9db17537 261 /* Process unlocked */
mbed_official 376:cb4d9db17537 262 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 263
mbed_official 376:cb4d9db17537 264 /* Return function status */
mbed_official 376:cb4d9db17537 265 return HAL_OK;
mbed_official 376:cb4d9db17537 266 }
mbed_official 376:cb4d9db17537 267
mbed_official 376:cb4d9db17537 268 /**
mbed_official 376:cb4d9db17537 269 * @brief Initializes the TSC MSP.
mbed_official 376:cb4d9db17537 270 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 271 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 272 * @retval None
mbed_official 376:cb4d9db17537 273 */
mbed_official 376:cb4d9db17537 274 __weak void HAL_TSC_MspInit(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 275 {
mbed_official 376:cb4d9db17537 276 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 277 the HAL_TSC_MspInit could be implemented in the user file.
mbed_official 376:cb4d9db17537 278 */
mbed_official 376:cb4d9db17537 279 }
mbed_official 376:cb4d9db17537 280
mbed_official 376:cb4d9db17537 281 /**
mbed_official 376:cb4d9db17537 282 * @brief DeInitializes the TSC MSP.
mbed_official 376:cb4d9db17537 283 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 284 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 285 * @retval None
mbed_official 376:cb4d9db17537 286 */
mbed_official 376:cb4d9db17537 287 __weak void HAL_TSC_MspDeInit(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 288 {
mbed_official 376:cb4d9db17537 289 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 290 the HAL_TSC_MspDeInit could be implemented in the user file.
mbed_official 376:cb4d9db17537 291 */
mbed_official 376:cb4d9db17537 292 }
mbed_official 376:cb4d9db17537 293
mbed_official 376:cb4d9db17537 294 /**
mbed_official 376:cb4d9db17537 295 * @}
mbed_official 376:cb4d9db17537 296 */
mbed_official 376:cb4d9db17537 297
mbed_official 376:cb4d9db17537 298 /** @defgroup HAL_TSC_Group2 IO operation functions
mbed_official 376:cb4d9db17537 299 * @brief IO operation functions
mbed_official 376:cb4d9db17537 300 *
mbed_official 376:cb4d9db17537 301 @verbatim
mbed_official 376:cb4d9db17537 302 ===============================================================================
mbed_official 376:cb4d9db17537 303 ##### I/O Operation functions #####
mbed_official 376:cb4d9db17537 304 ===============================================================================
mbed_official 376:cb4d9db17537 305 [..] This section provides functions allowing to:
mbed_official 376:cb4d9db17537 306 (+) Start acquisition in polling mode.
mbed_official 376:cb4d9db17537 307 (+) Start acquisition in interrupt mode.
mbed_official 376:cb4d9db17537 308 (+) Stop conversion in polling mode.
mbed_official 376:cb4d9db17537 309 (+) Stop conversion in interrupt mode.
mbed_official 376:cb4d9db17537 310 (+) Get group acquisition status.
mbed_official 376:cb4d9db17537 311 (+) Get group acquisition value.
mbed_official 376:cb4d9db17537 312 @endverbatim
mbed_official 376:cb4d9db17537 313 * @{
mbed_official 376:cb4d9db17537 314 */
mbed_official 376:cb4d9db17537 315
mbed_official 376:cb4d9db17537 316 /**
mbed_official 376:cb4d9db17537 317 * @brief Starts the acquisition.
mbed_official 376:cb4d9db17537 318 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 319 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 320 * @retval HAL status
mbed_official 376:cb4d9db17537 321 */
mbed_official 376:cb4d9db17537 322 HAL_StatusTypeDef HAL_TSC_Start(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 323 {
mbed_official 376:cb4d9db17537 324 /* Check the parameters */
mbed_official 376:cb4d9db17537 325 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 326
mbed_official 376:cb4d9db17537 327 /* Process locked */
mbed_official 376:cb4d9db17537 328 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 329
mbed_official 376:cb4d9db17537 330 /* Change TSC state */
mbed_official 376:cb4d9db17537 331 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 332
mbed_official 376:cb4d9db17537 333 /* Clear interrupts */
mbed_official 376:cb4d9db17537 334 __HAL_TSC_DISABLE_IT(htsc, (TSC_IT_EOA | TSC_IT_MCE));
mbed_official 376:cb4d9db17537 335
mbed_official 376:cb4d9db17537 336 /* Clear flags */
mbed_official 376:cb4d9db17537 337 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 338
mbed_official 376:cb4d9db17537 339 /* Stop discharging the IOs */
mbed_official 376:cb4d9db17537 340 __HAL_TSC_SET_IODEF_INFLOAT(htsc);
mbed_official 376:cb4d9db17537 341
mbed_official 376:cb4d9db17537 342 /* Launch the acquisition */
mbed_official 376:cb4d9db17537 343 __HAL_TSC_START_ACQ(htsc);
mbed_official 376:cb4d9db17537 344
mbed_official 376:cb4d9db17537 345 /* Process unlocked */
mbed_official 376:cb4d9db17537 346 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 347
mbed_official 376:cb4d9db17537 348 /* Return function status */
mbed_official 376:cb4d9db17537 349 return HAL_OK;
mbed_official 376:cb4d9db17537 350 }
mbed_official 376:cb4d9db17537 351
mbed_official 376:cb4d9db17537 352 /**
mbed_official 376:cb4d9db17537 353 * @brief Enables the interrupt and starts the acquisition
mbed_official 376:cb4d9db17537 354 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 355 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 356 * @retval HAL status.
mbed_official 376:cb4d9db17537 357 */
mbed_official 376:cb4d9db17537 358 HAL_StatusTypeDef HAL_TSC_Start_IT(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 359 {
mbed_official 376:cb4d9db17537 360 /* Check the parameters */
mbed_official 376:cb4d9db17537 361 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 362 assert_param(IS_TSC_MCE_IT(htsc->Init.MaxCountInterrupt));
mbed_official 376:cb4d9db17537 363
mbed_official 376:cb4d9db17537 364 /* Process locked */
mbed_official 376:cb4d9db17537 365 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 366
mbed_official 376:cb4d9db17537 367 /* Change TSC state */
mbed_official 376:cb4d9db17537 368 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 369
mbed_official 376:cb4d9db17537 370 /* Enable end of acquisition interrupt */
mbed_official 376:cb4d9db17537 371 __HAL_TSC_ENABLE_IT(htsc, TSC_IT_EOA);
mbed_official 376:cb4d9db17537 372
mbed_official 376:cb4d9db17537 373 /* Enable max count error interrupt (optional) */
mbed_official 376:cb4d9db17537 374 if (htsc->Init.MaxCountInterrupt == ENABLE)
mbed_official 376:cb4d9db17537 375 {
mbed_official 376:cb4d9db17537 376 __HAL_TSC_ENABLE_IT(htsc, TSC_IT_MCE);
mbed_official 376:cb4d9db17537 377 }
mbed_official 376:cb4d9db17537 378 else
mbed_official 376:cb4d9db17537 379 {
mbed_official 376:cb4d9db17537 380 __HAL_TSC_DISABLE_IT(htsc, TSC_IT_MCE);
mbed_official 376:cb4d9db17537 381 }
mbed_official 376:cb4d9db17537 382
mbed_official 376:cb4d9db17537 383 /* Clear flags */
mbed_official 376:cb4d9db17537 384 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 385
mbed_official 376:cb4d9db17537 386 /* Stop discharging the IOs */
mbed_official 376:cb4d9db17537 387 __HAL_TSC_SET_IODEF_INFLOAT(htsc);
mbed_official 376:cb4d9db17537 388
mbed_official 376:cb4d9db17537 389 /* Launch the acquisition */
mbed_official 376:cb4d9db17537 390 __HAL_TSC_START_ACQ(htsc);
mbed_official 376:cb4d9db17537 391
mbed_official 376:cb4d9db17537 392 /* Process unlocked */
mbed_official 376:cb4d9db17537 393 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 394
mbed_official 376:cb4d9db17537 395 /* Return function status */
mbed_official 376:cb4d9db17537 396 return HAL_OK;
mbed_official 376:cb4d9db17537 397 }
mbed_official 376:cb4d9db17537 398
mbed_official 376:cb4d9db17537 399 /**
mbed_official 376:cb4d9db17537 400 * @brief Stops the acquisition previously launched in polling mode
mbed_official 376:cb4d9db17537 401 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 402 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 403 * @retval HAL status
mbed_official 376:cb4d9db17537 404 */
mbed_official 376:cb4d9db17537 405 HAL_StatusTypeDef HAL_TSC_Stop(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 406 {
mbed_official 376:cb4d9db17537 407 /* Check the parameters */
mbed_official 376:cb4d9db17537 408 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 409
mbed_official 376:cb4d9db17537 410 /* Process locked */
mbed_official 376:cb4d9db17537 411 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 412
mbed_official 376:cb4d9db17537 413 /* Stop the acquisition */
mbed_official 376:cb4d9db17537 414 __HAL_TSC_STOP_ACQ(htsc);
mbed_official 376:cb4d9db17537 415
mbed_official 376:cb4d9db17537 416 /* Clear flags */
mbed_official 376:cb4d9db17537 417 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 418
mbed_official 376:cb4d9db17537 419 /* Change TSC state */
mbed_official 376:cb4d9db17537 420 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 421
mbed_official 376:cb4d9db17537 422 /* Process unlocked */
mbed_official 376:cb4d9db17537 423 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 424
mbed_official 376:cb4d9db17537 425 /* Return function status */
mbed_official 376:cb4d9db17537 426 return HAL_OK;
mbed_official 376:cb4d9db17537 427 }
mbed_official 376:cb4d9db17537 428
mbed_official 376:cb4d9db17537 429 /**
mbed_official 376:cb4d9db17537 430 * @brief Stops the acquisition previously launched in interrupt mode
mbed_official 376:cb4d9db17537 431 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 432 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 433 * @retval HAL status
mbed_official 376:cb4d9db17537 434 */
mbed_official 376:cb4d9db17537 435 HAL_StatusTypeDef HAL_TSC_Stop_IT(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 436 {
mbed_official 376:cb4d9db17537 437 /* Check the parameters */
mbed_official 376:cb4d9db17537 438 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 439
mbed_official 376:cb4d9db17537 440 /* Process locked */
mbed_official 376:cb4d9db17537 441 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 442
mbed_official 376:cb4d9db17537 443 /* Stop the acquisition */
mbed_official 376:cb4d9db17537 444 __HAL_TSC_STOP_ACQ(htsc);
mbed_official 376:cb4d9db17537 445
mbed_official 376:cb4d9db17537 446 /* Disable interrupts */
mbed_official 376:cb4d9db17537 447 __HAL_TSC_DISABLE_IT(htsc, (TSC_IT_EOA | TSC_IT_MCE));
mbed_official 376:cb4d9db17537 448
mbed_official 376:cb4d9db17537 449 /* Clear flags */
mbed_official 376:cb4d9db17537 450 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 451
mbed_official 376:cb4d9db17537 452 /* Change TSC state */
mbed_official 376:cb4d9db17537 453 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 454
mbed_official 376:cb4d9db17537 455 /* Process unlocked */
mbed_official 376:cb4d9db17537 456 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 457
mbed_official 376:cb4d9db17537 458 /* Return function status */
mbed_official 376:cb4d9db17537 459 return HAL_OK;
mbed_official 376:cb4d9db17537 460 }
mbed_official 376:cb4d9db17537 461
mbed_official 376:cb4d9db17537 462 /**
mbed_official 376:cb4d9db17537 463 * @brief Gets the acquisition status for a group
mbed_official 376:cb4d9db17537 464 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 465 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 466 * @param gx_index: Index of the group
mbed_official 376:cb4d9db17537 467 * @retval Group status
mbed_official 376:cb4d9db17537 468 */
mbed_official 376:cb4d9db17537 469 TSC_GroupStatusTypeDef HAL_TSC_GroupGetStatus(TSC_HandleTypeDef* htsc, uint32_t gx_index)
mbed_official 376:cb4d9db17537 470 {
mbed_official 376:cb4d9db17537 471 /* Check the parameters */
mbed_official 376:cb4d9db17537 472 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 473 assert_param(IS_GROUP_INDEX(gx_index));
mbed_official 376:cb4d9db17537 474
mbed_official 376:cb4d9db17537 475 /* Return the group status */
mbed_official 376:cb4d9db17537 476 return(__HAL_TSC_GET_GROUP_STATUS(htsc, gx_index));
mbed_official 376:cb4d9db17537 477 }
mbed_official 376:cb4d9db17537 478
mbed_official 376:cb4d9db17537 479 /**
mbed_official 376:cb4d9db17537 480 * @brief Gets the acquisition measure for a group
mbed_official 376:cb4d9db17537 481 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 482 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 483 * @param gx_index: Index of the group
mbed_official 376:cb4d9db17537 484 * @retval Acquisition measure
mbed_official 376:cb4d9db17537 485 */
mbed_official 376:cb4d9db17537 486 uint32_t HAL_TSC_GroupGetValue(TSC_HandleTypeDef* htsc, uint32_t gx_index)
mbed_official 376:cb4d9db17537 487 {
mbed_official 376:cb4d9db17537 488 /* Check the parameters */
mbed_official 376:cb4d9db17537 489 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 490 assert_param(IS_GROUP_INDEX(gx_index));
mbed_official 376:cb4d9db17537 491
mbed_official 376:cb4d9db17537 492 /* Return the group acquisition counter */
mbed_official 376:cb4d9db17537 493 return htsc->Instance->IOGXCR[gx_index];
mbed_official 376:cb4d9db17537 494 }
mbed_official 376:cb4d9db17537 495
mbed_official 376:cb4d9db17537 496 /**
mbed_official 376:cb4d9db17537 497 * @}
mbed_official 376:cb4d9db17537 498 */
mbed_official 376:cb4d9db17537 499
mbed_official 376:cb4d9db17537 500 /** @defgroup HAL_TSC_Group3 Peripheral Control functions
mbed_official 376:cb4d9db17537 501 * @brief Peripheral Control functions
mbed_official 376:cb4d9db17537 502 *
mbed_official 376:cb4d9db17537 503 @verbatim
mbed_official 376:cb4d9db17537 504 ===============================================================================
mbed_official 376:cb4d9db17537 505 ##### Peripheral Control functions #####
mbed_official 376:cb4d9db17537 506 ===============================================================================
mbed_official 376:cb4d9db17537 507 [..] This section provides functions allowing to:
mbed_official 376:cb4d9db17537 508 (+) Configure TSC IOs
mbed_official 376:cb4d9db17537 509 (+) Discharge TSC IOs
mbed_official 376:cb4d9db17537 510 @endverbatim
mbed_official 376:cb4d9db17537 511 * @{
mbed_official 376:cb4d9db17537 512 */
mbed_official 376:cb4d9db17537 513
mbed_official 376:cb4d9db17537 514 /**
mbed_official 376:cb4d9db17537 515 * @brief Configures TSC IOs
mbed_official 376:cb4d9db17537 516 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 517 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 518 * @param config: pointer to the configuration structure.
mbed_official 376:cb4d9db17537 519 * @retval HAL status
mbed_official 376:cb4d9db17537 520 */
mbed_official 376:cb4d9db17537 521 HAL_StatusTypeDef HAL_TSC_IOConfig(TSC_HandleTypeDef* htsc, TSC_IOConfigTypeDef* config)
mbed_official 376:cb4d9db17537 522 {
mbed_official 376:cb4d9db17537 523 /* Check the parameters */
mbed_official 376:cb4d9db17537 524 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 525
mbed_official 376:cb4d9db17537 526 /* Process locked */
mbed_official 376:cb4d9db17537 527 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 528
mbed_official 376:cb4d9db17537 529 /* Stop acquisition */
mbed_official 376:cb4d9db17537 530 __HAL_TSC_STOP_ACQ(htsc);
mbed_official 376:cb4d9db17537 531
mbed_official 376:cb4d9db17537 532 /* Disable Schmitt trigger hysteresis on all used TSC IOs */
mbed_official 376:cb4d9db17537 533 htsc->Instance->IOHCR = (uint32_t)(~(config->ChannelIOs | config->ShieldIOs | config->SamplingIOs));
mbed_official 376:cb4d9db17537 534
mbed_official 376:cb4d9db17537 535 /* Set channel and shield IOs */
mbed_official 376:cb4d9db17537 536 htsc->Instance->IOCCR = (config->ChannelIOs | config->ShieldIOs);
mbed_official 376:cb4d9db17537 537
mbed_official 376:cb4d9db17537 538 /* Set sampling IOs */
mbed_official 376:cb4d9db17537 539 htsc->Instance->IOSCR = config->SamplingIOs;
mbed_official 376:cb4d9db17537 540
mbed_official 376:cb4d9db17537 541 /* Set groups to be acquired */
mbed_official 376:cb4d9db17537 542 htsc->Instance->IOGCSR = TSC_extract_groups(config->ChannelIOs);
mbed_official 376:cb4d9db17537 543
mbed_official 376:cb4d9db17537 544 /* Process unlocked */
mbed_official 376:cb4d9db17537 545 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 546
mbed_official 376:cb4d9db17537 547 /* Return function status */
mbed_official 376:cb4d9db17537 548 return HAL_OK;
mbed_official 376:cb4d9db17537 549 }
mbed_official 376:cb4d9db17537 550
mbed_official 376:cb4d9db17537 551 /**
mbed_official 376:cb4d9db17537 552 * @brief Discharge TSC IOs
mbed_official 376:cb4d9db17537 553 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 554 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 555 * @param choice: enable or disable
mbed_official 376:cb4d9db17537 556 * @retval HAL status
mbed_official 376:cb4d9db17537 557 */
mbed_official 376:cb4d9db17537 558 HAL_StatusTypeDef HAL_TSC_IODischarge(TSC_HandleTypeDef* htsc, uint32_t choice)
mbed_official 376:cb4d9db17537 559 {
mbed_official 376:cb4d9db17537 560 /* Check the parameters */
mbed_official 376:cb4d9db17537 561 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 562
mbed_official 376:cb4d9db17537 563 /* Process locked */
mbed_official 376:cb4d9db17537 564 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 565
mbed_official 376:cb4d9db17537 566 if (choice == ENABLE)
mbed_official 376:cb4d9db17537 567 {
mbed_official 376:cb4d9db17537 568 __HAL_TSC_SET_IODEF_OUTPPLOW(htsc);
mbed_official 376:cb4d9db17537 569 }
mbed_official 376:cb4d9db17537 570 else
mbed_official 376:cb4d9db17537 571 {
mbed_official 376:cb4d9db17537 572 __HAL_TSC_SET_IODEF_INFLOAT(htsc);
mbed_official 376:cb4d9db17537 573 }
mbed_official 376:cb4d9db17537 574
mbed_official 376:cb4d9db17537 575 /* Process unlocked */
mbed_official 376:cb4d9db17537 576 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 577
mbed_official 376:cb4d9db17537 578 /* Return the group acquisition counter */
mbed_official 376:cb4d9db17537 579 return HAL_OK;
mbed_official 376:cb4d9db17537 580 }
mbed_official 376:cb4d9db17537 581
mbed_official 376:cb4d9db17537 582 /**
mbed_official 376:cb4d9db17537 583 * @}
mbed_official 376:cb4d9db17537 584 */
mbed_official 376:cb4d9db17537 585
mbed_official 376:cb4d9db17537 586 /** @defgroup HAL_TSC_Group4 State functions
mbed_official 376:cb4d9db17537 587 * @brief State functions
mbed_official 376:cb4d9db17537 588 *
mbed_official 376:cb4d9db17537 589 @verbatim
mbed_official 376:cb4d9db17537 590 ===============================================================================
mbed_official 376:cb4d9db17537 591 ##### State functions #####
mbed_official 376:cb4d9db17537 592 ===============================================================================
mbed_official 376:cb4d9db17537 593 [..]
mbed_official 376:cb4d9db17537 594 This subsection provides functions allowing to
mbed_official 376:cb4d9db17537 595 (+) Get TSC state.
mbed_official 376:cb4d9db17537 596 (+) Poll for acquisition completed.
mbed_official 376:cb4d9db17537 597 (+) Handles TSC interrupt request.
mbed_official 376:cb4d9db17537 598
mbed_official 376:cb4d9db17537 599 @endverbatim
mbed_official 376:cb4d9db17537 600 * @{
mbed_official 376:cb4d9db17537 601 */
mbed_official 376:cb4d9db17537 602
mbed_official 376:cb4d9db17537 603 /**
mbed_official 376:cb4d9db17537 604 * @brief Return the TSC state
mbed_official 376:cb4d9db17537 605 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 606 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 607 * @retval HAL state
mbed_official 376:cb4d9db17537 608 */
mbed_official 376:cb4d9db17537 609 HAL_TSC_StateTypeDef HAL_TSC_GetState(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 610 {
mbed_official 376:cb4d9db17537 611 /* Check the parameters */
mbed_official 376:cb4d9db17537 612 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 613
mbed_official 376:cb4d9db17537 614 if (htsc->State == HAL_TSC_STATE_BUSY)
mbed_official 376:cb4d9db17537 615 {
mbed_official 376:cb4d9db17537 616 /* Check end of acquisition flag */
mbed_official 376:cb4d9db17537 617 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_EOA) != RESET)
mbed_official 376:cb4d9db17537 618 {
mbed_official 376:cb4d9db17537 619 /* Check max count error flag */
mbed_official 376:cb4d9db17537 620 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_MCE) != RESET)
mbed_official 376:cb4d9db17537 621 {
mbed_official 376:cb4d9db17537 622 /* Change TSC state */
mbed_official 376:cb4d9db17537 623 htsc->State = HAL_TSC_STATE_ERROR;
mbed_official 376:cb4d9db17537 624 }
mbed_official 376:cb4d9db17537 625 else
mbed_official 376:cb4d9db17537 626 {
mbed_official 376:cb4d9db17537 627 /* Change TSC state */
mbed_official 376:cb4d9db17537 628 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 629 }
mbed_official 376:cb4d9db17537 630 }
mbed_official 376:cb4d9db17537 631 }
mbed_official 376:cb4d9db17537 632
mbed_official 376:cb4d9db17537 633 /* Return TSC state */
mbed_official 376:cb4d9db17537 634 return htsc->State;
mbed_official 376:cb4d9db17537 635 }
mbed_official 376:cb4d9db17537 636
mbed_official 376:cb4d9db17537 637 /**
mbed_official 376:cb4d9db17537 638 * @brief Start acquisition and wait until completion
mbed_official 376:cb4d9db17537 639 * @note There is no need of a timeout parameter as the max count error is already
mbed_official 376:cb4d9db17537 640 * managed by the TSC peripheral.
mbed_official 376:cb4d9db17537 641 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 642 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 643 * @retval HAL state
mbed_official 376:cb4d9db17537 644 */
mbed_official 376:cb4d9db17537 645 HAL_StatusTypeDef HAL_TSC_PollForAcquisition(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 646 {
mbed_official 376:cb4d9db17537 647 /* Check the parameters */
mbed_official 376:cb4d9db17537 648 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 649
mbed_official 376:cb4d9db17537 650 /* Process locked */
mbed_official 376:cb4d9db17537 651 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 652
mbed_official 376:cb4d9db17537 653 /* Check end of acquisition */
mbed_official 376:cb4d9db17537 654 while (HAL_TSC_GetState(htsc) == HAL_TSC_STATE_BUSY)
mbed_official 376:cb4d9db17537 655 {
mbed_official 376:cb4d9db17537 656 /* The timeout (max count error) is managed by the TSC peripheral itself. */
mbed_official 376:cb4d9db17537 657 }
mbed_official 376:cb4d9db17537 658
mbed_official 376:cb4d9db17537 659 /* Process unlocked */
mbed_official 376:cb4d9db17537 660 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 661
mbed_official 376:cb4d9db17537 662 return HAL_OK;
mbed_official 376:cb4d9db17537 663 }
mbed_official 376:cb4d9db17537 664
mbed_official 376:cb4d9db17537 665 /**
mbed_official 376:cb4d9db17537 666 * @brief Handles TSC interrupt request
mbed_official 376:cb4d9db17537 667 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 668 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 669 * @retval None
mbed_official 376:cb4d9db17537 670 */
mbed_official 376:cb4d9db17537 671 void HAL_TSC_IRQHandler(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 672 {
mbed_official 376:cb4d9db17537 673 /* Check the parameters */
mbed_official 376:cb4d9db17537 674 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 675
mbed_official 376:cb4d9db17537 676 /* Check if the end of acquisition occured */
mbed_official 376:cb4d9db17537 677 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_EOA) != RESET)
mbed_official 376:cb4d9db17537 678 {
mbed_official 376:cb4d9db17537 679 /* Clear EOA flag */
mbed_official 376:cb4d9db17537 680 __HAL_TSC_CLEAR_FLAG(htsc, TSC_FLAG_EOA);
mbed_official 376:cb4d9db17537 681 }
mbed_official 376:cb4d9db17537 682
mbed_official 376:cb4d9db17537 683 /* Check if max count error occured */
mbed_official 376:cb4d9db17537 684 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_MCE) != RESET)
mbed_official 376:cb4d9db17537 685 {
mbed_official 376:cb4d9db17537 686 /* Clear MCE flag */
mbed_official 376:cb4d9db17537 687 __HAL_TSC_CLEAR_FLAG(htsc, TSC_FLAG_MCE);
mbed_official 376:cb4d9db17537 688 /* Change TSC state */
mbed_official 376:cb4d9db17537 689 htsc->State = HAL_TSC_STATE_ERROR;
mbed_official 376:cb4d9db17537 690 /* Conversion completed callback */
mbed_official 376:cb4d9db17537 691 HAL_TSC_ErrorCallback(htsc);
mbed_official 376:cb4d9db17537 692 }
mbed_official 376:cb4d9db17537 693 else
mbed_official 376:cb4d9db17537 694 {
mbed_official 376:cb4d9db17537 695 /* Change TSC state */
mbed_official 376:cb4d9db17537 696 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 697 /* Conversion completed callback */
mbed_official 376:cb4d9db17537 698 HAL_TSC_ConvCpltCallback(htsc);
mbed_official 376:cb4d9db17537 699 }
mbed_official 376:cb4d9db17537 700 }
mbed_official 376:cb4d9db17537 701
mbed_official 376:cb4d9db17537 702 /**
mbed_official 376:cb4d9db17537 703 * @}
mbed_official 376:cb4d9db17537 704 */
mbed_official 376:cb4d9db17537 705
mbed_official 376:cb4d9db17537 706 /**
mbed_official 376:cb4d9db17537 707 * @brief Acquisition completed callback in non blocking mode
mbed_official 376:cb4d9db17537 708 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 709 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 710 * @retval None
mbed_official 376:cb4d9db17537 711 */
mbed_official 376:cb4d9db17537 712 __weak void HAL_TSC_ConvCpltCallback(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 713 {
mbed_official 376:cb4d9db17537 714 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 715 the HAL_TSC_ConvCpltCallback could be implemented in the user file.
mbed_official 376:cb4d9db17537 716 */
mbed_official 376:cb4d9db17537 717 }
mbed_official 376:cb4d9db17537 718
mbed_official 376:cb4d9db17537 719 /**
mbed_official 376:cb4d9db17537 720 * @brief Error callback in non blocking mode
mbed_official 376:cb4d9db17537 721 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 722 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 723 * @retval None
mbed_official 376:cb4d9db17537 724 */
mbed_official 376:cb4d9db17537 725 __weak void HAL_TSC_ErrorCallback(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 726 {
mbed_official 376:cb4d9db17537 727 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 728 the HAL_TSC_ErrorCallback could be implemented in the user file.
mbed_official 376:cb4d9db17537 729 */
mbed_official 376:cb4d9db17537 730 }
mbed_official 376:cb4d9db17537 731
mbed_official 376:cb4d9db17537 732 /**
mbed_official 376:cb4d9db17537 733 * @brief Utility function used to set the acquired groups mask
mbed_official 376:cb4d9db17537 734 * @param iomask: Channels IOs mask
mbed_official 376:cb4d9db17537 735 * @retval Acquired groups mask
mbed_official 376:cb4d9db17537 736 */
mbed_official 376:cb4d9db17537 737 static uint32_t TSC_extract_groups(uint32_t iomask)
mbed_official 376:cb4d9db17537 738 {
mbed_official 376:cb4d9db17537 739 uint32_t groups = 0;
mbed_official 376:cb4d9db17537 740 uint32_t idx;
mbed_official 376:cb4d9db17537 741
mbed_official 376:cb4d9db17537 742 for (idx = 0; idx < TSC_NB_OF_GROUPS; idx++)
mbed_official 376:cb4d9db17537 743 {
mbed_official 376:cb4d9db17537 744 if ((iomask & ((uint32_t)0x0F << (idx * 4))) != RESET)
mbed_official 376:cb4d9db17537 745 {
mbed_official 376:cb4d9db17537 746 groups |= ((uint32_t)1 << idx);
mbed_official 376:cb4d9db17537 747 }
mbed_official 376:cb4d9db17537 748 }
mbed_official 376:cb4d9db17537 749
mbed_official 376:cb4d9db17537 750 return groups;
mbed_official 376:cb4d9db17537 751 }
mbed_official 376:cb4d9db17537 752
mbed_official 376:cb4d9db17537 753 /**
mbed_official 376:cb4d9db17537 754 * @}
mbed_official 376:cb4d9db17537 755 */
mbed_official 376:cb4d9db17537 756
mbed_official 376:cb4d9db17537 757
mbed_official 376:cb4d9db17537 758 /**
mbed_official 376:cb4d9db17537 759 * @}
mbed_official 376:cb4d9db17537 760 */
mbed_official 376:cb4d9db17537 761
mbed_official 376:cb4d9db17537 762 /**
mbed_official 376:cb4d9db17537 763 * @}
mbed_official 376:cb4d9db17537 764 */
mbed_official 489:119543c9f674 765 #endif /* HAL_TSC_MODULE_ENABLED */
mbed_official 489:119543c9f674 766 #endif /* #if !defined (STM32L031xx) && !defined (STM32L041xx) && !defined (STM32L051xx) && !defined (STM32L061xx) && !defined (STM32L071xx) && !defined (STM32L081xx) */
mbed_official 376:cb4d9db17537 767
mbed_official 376:cb4d9db17537 768 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 489:119543c9f674 769