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 Nov 05 14:30:08 2014 +0000
Revision:
387:643a59b3dbac
Parent:
382:ee426a420dbb
Child:
489:119543c9f674
Synchronized with git revision cfeccf154f8f92c3ea9c0c881c577c154537aecc

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

Exporters: STM32L053R8 - IAR exporter

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 376:cb4d9db17537 5 * @version V1.1.0
mbed_official 376:cb4d9db17537 6 * @date 18-June-2014
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 376:cb4d9db17537 50 (#) Enable the TSC interface clock using __TSC_CLK_ENABLE() macro.
mbed_official 376:cb4d9db17537 51
mbed_official 376:cb4d9db17537 52 (#) GPIO pins configuration
mbed_official 376:cb4d9db17537 53 (++) Enable the clock for the TSC GPIOs using __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 376:cb4d9db17537 84 * <h2><center>&copy; COPYRIGHT(c) 2014 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 376:cb4d9db17537 112 #include "stm32l0xx_hal.h"
mbed_official 376:cb4d9db17537 113
mbed_official 376:cb4d9db17537 114 /** @addtogroup STM32L0xx_HAL_Driver
mbed_official 376:cb4d9db17537 115 * @{
mbed_official 376:cb4d9db17537 116 */
mbed_official 376:cb4d9db17537 117
mbed_official 376:cb4d9db17537 118 /** @defgroup TSC
mbed_official 376:cb4d9db17537 119 * @brief HAL TSC module driver
mbed_official 376:cb4d9db17537 120 * @{
mbed_official 376:cb4d9db17537 121 */
mbed_official 376:cb4d9db17537 122
mbed_official 376:cb4d9db17537 123 #ifdef HAL_TSC_MODULE_ENABLED
mbed_official 376:cb4d9db17537 124
mbed_official 376:cb4d9db17537 125 /* Private typedef -----------------------------------------------------------*/
mbed_official 376:cb4d9db17537 126 /* Private define ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 127 /* Private macro -------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 128 /* Private variables ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 129 /* Private function prototypes -----------------------------------------------*/
mbed_official 376:cb4d9db17537 130 static uint32_t TSC_extract_groups(uint32_t iomask);
mbed_official 376:cb4d9db17537 131 /* Private functions ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 132
mbed_official 376:cb4d9db17537 133 /** @defgroup TSC_Private_Functions
mbed_official 376:cb4d9db17537 134 * @{
mbed_official 376:cb4d9db17537 135 */
mbed_official 376:cb4d9db17537 136
mbed_official 376:cb4d9db17537 137 /** @defgroup TSC_Group1 Initialization/de-initialization functions
mbed_official 376:cb4d9db17537 138 * @brief Initialization and Configuration functions
mbed_official 376:cb4d9db17537 139 *
mbed_official 376:cb4d9db17537 140 @verbatim
mbed_official 376:cb4d9db17537 141 ===============================================================================
mbed_official 376:cb4d9db17537 142 ##### Initialization and de-initialization functions #####
mbed_official 376:cb4d9db17537 143 ===============================================================================
mbed_official 376:cb4d9db17537 144 [..] This section provides functions allowing to:
mbed_official 376:cb4d9db17537 145 (+) Initialize and configure the TSC.
mbed_official 376:cb4d9db17537 146 (+) De-initialize the TSC.
mbed_official 376:cb4d9db17537 147 @endverbatim
mbed_official 376:cb4d9db17537 148 * @{
mbed_official 376:cb4d9db17537 149 */
mbed_official 376:cb4d9db17537 150
mbed_official 376:cb4d9db17537 151 /**
mbed_official 376:cb4d9db17537 152 * @brief Initializes the TSC peripheral according to the specified parameters
mbed_official 376:cb4d9db17537 153 * in the TSC_InitTypeDef structure.
mbed_official 376:cb4d9db17537 154 * @param htsc: TSC handle
mbed_official 376:cb4d9db17537 155 * @retval HAL status
mbed_official 376:cb4d9db17537 156 */
mbed_official 376:cb4d9db17537 157 HAL_StatusTypeDef HAL_TSC_Init(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 158 {
mbed_official 376:cb4d9db17537 159 /* Check TSC handle allocation */
mbed_official 387:643a59b3dbac 160 if (htsc == HAL_NULL)
mbed_official 376:cb4d9db17537 161 {
mbed_official 376:cb4d9db17537 162 return HAL_ERROR;
mbed_official 376:cb4d9db17537 163 }
mbed_official 376:cb4d9db17537 164
mbed_official 376:cb4d9db17537 165 /* Check the parameters */
mbed_official 376:cb4d9db17537 166 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 167 assert_param(IS_TSC_CTPH(htsc->Init.CTPulseHighLength));
mbed_official 376:cb4d9db17537 168 assert_param(IS_TSC_CTPL(htsc->Init.CTPulseLowLength));
mbed_official 376:cb4d9db17537 169 assert_param(IS_TSC_SS(htsc->Init.SpreadSpectrum));
mbed_official 376:cb4d9db17537 170 assert_param(IS_TSC_SSD(htsc->Init.SpreadSpectrumDeviation));
mbed_official 376:cb4d9db17537 171 assert_param(IS_TSC_SS_PRESC(htsc->Init.SpreadSpectrumPrescaler));
mbed_official 376:cb4d9db17537 172 assert_param(IS_TSC_PG_PRESC(htsc->Init.PulseGeneratorPrescaler));
mbed_official 376:cb4d9db17537 173 assert_param(IS_TSC_MCV(htsc->Init.MaxCountValue));
mbed_official 376:cb4d9db17537 174 assert_param(IS_TSC_IODEF(htsc->Init.IODefaultMode));
mbed_official 376:cb4d9db17537 175 assert_param(IS_TSC_SYNC_POL(htsc->Init.SynchroPinPolarity));
mbed_official 376:cb4d9db17537 176 assert_param(IS_TSC_ACQ_MODE(htsc->Init.AcquisitionMode));
mbed_official 376:cb4d9db17537 177 assert_param(IS_TSC_MCE_IT(htsc->Init.MaxCountInterrupt));
mbed_official 376:cb4d9db17537 178
mbed_official 376:cb4d9db17537 179 /* Initialize the TSC state */
mbed_official 376:cb4d9db17537 180 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 181
mbed_official 376:cb4d9db17537 182 /* Init the low level hardware : GPIO, CLOCK, CORTEX */
mbed_official 376:cb4d9db17537 183 HAL_TSC_MspInit(htsc);
mbed_official 376:cb4d9db17537 184
mbed_official 376:cb4d9db17537 185 /*--------------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 186 /* Set TSC parameters */
mbed_official 376:cb4d9db17537 187
mbed_official 376:cb4d9db17537 188 /* Enable TSC */
mbed_official 376:cb4d9db17537 189 htsc->Instance->CR = TSC_CR_TSCE;
mbed_official 376:cb4d9db17537 190
mbed_official 376:cb4d9db17537 191 /* Set all functions */
mbed_official 376:cb4d9db17537 192 htsc->Instance->CR |= (htsc->Init.CTPulseHighLength |
mbed_official 376:cb4d9db17537 193 htsc->Init.CTPulseLowLength |
mbed_official 376:cb4d9db17537 194 (uint32_t)(htsc->Init.SpreadSpectrumDeviation << 17) |
mbed_official 376:cb4d9db17537 195 htsc->Init.SpreadSpectrumPrescaler |
mbed_official 376:cb4d9db17537 196 htsc->Init.PulseGeneratorPrescaler |
mbed_official 376:cb4d9db17537 197 htsc->Init.MaxCountValue |
mbed_official 376:cb4d9db17537 198 htsc->Init.IODefaultMode |
mbed_official 376:cb4d9db17537 199 htsc->Init.SynchroPinPolarity |
mbed_official 376:cb4d9db17537 200 htsc->Init.AcquisitionMode);
mbed_official 376:cb4d9db17537 201
mbed_official 376:cb4d9db17537 202 /* Spread spectrum */
mbed_official 376:cb4d9db17537 203 if (htsc->Init.SpreadSpectrum == ENABLE)
mbed_official 376:cb4d9db17537 204 {
mbed_official 376:cb4d9db17537 205 htsc->Instance->CR |= TSC_CR_SSE;
mbed_official 376:cb4d9db17537 206 }
mbed_official 376:cb4d9db17537 207
mbed_official 376:cb4d9db17537 208 /* Disable Schmitt trigger hysteresis on all used TSC IOs */
mbed_official 376:cb4d9db17537 209 htsc->Instance->IOHCR = (uint32_t)(~(htsc->Init.ChannelIOs | htsc->Init.ShieldIOs | htsc->Init.SamplingIOs));
mbed_official 376:cb4d9db17537 210
mbed_official 376:cb4d9db17537 211 /* Set channel and shield IOs */
mbed_official 376:cb4d9db17537 212 htsc->Instance->IOCCR = (htsc->Init.ChannelIOs | htsc->Init.ShieldIOs);
mbed_official 376:cb4d9db17537 213
mbed_official 376:cb4d9db17537 214 /* Set sampling IOs */
mbed_official 376:cb4d9db17537 215 htsc->Instance->IOSCR = htsc->Init.SamplingIOs;
mbed_official 376:cb4d9db17537 216
mbed_official 376:cb4d9db17537 217 /* Set the groups to be acquired */
mbed_official 376:cb4d9db17537 218 htsc->Instance->IOGCSR = TSC_extract_groups(htsc->Init.ChannelIOs);
mbed_official 376:cb4d9db17537 219
mbed_official 376:cb4d9db17537 220 /* Clear interrupts */
mbed_official 376:cb4d9db17537 221 htsc->Instance->IER &= (uint32_t)(~(TSC_IT_EOA | TSC_IT_MCE));
mbed_official 376:cb4d9db17537 222
mbed_official 376:cb4d9db17537 223 /* Clear flags */
mbed_official 376:cb4d9db17537 224 htsc->Instance->ICR |= (TSC_FLAG_EOA | TSC_FLAG_MCE);
mbed_official 376:cb4d9db17537 225
mbed_official 376:cb4d9db17537 226 /*--------------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 227
mbed_official 376:cb4d9db17537 228 /* Initialize the TSC state */
mbed_official 376:cb4d9db17537 229 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 230
mbed_official 376:cb4d9db17537 231 /* Return function status */
mbed_official 376:cb4d9db17537 232 return HAL_OK;
mbed_official 376:cb4d9db17537 233 }
mbed_official 376:cb4d9db17537 234
mbed_official 376:cb4d9db17537 235 /**
mbed_official 376:cb4d9db17537 236 * @brief Deinitializes the TSC peripheral registers to their default reset values.
mbed_official 376:cb4d9db17537 237 * @param htsc: TSC handle
mbed_official 376:cb4d9db17537 238 * @retval HAL status
mbed_official 376:cb4d9db17537 239 */
mbed_official 376:cb4d9db17537 240 HAL_StatusTypeDef HAL_TSC_DeInit(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 241 {
mbed_official 376:cb4d9db17537 242 /* Check TSC handle allocation */
mbed_official 387:643a59b3dbac 243 if (htsc == HAL_NULL)
mbed_official 376:cb4d9db17537 244 {
mbed_official 376:cb4d9db17537 245 return HAL_ERROR;
mbed_official 376:cb4d9db17537 246 }
mbed_official 376:cb4d9db17537 247
mbed_official 376:cb4d9db17537 248 /* Check the parameters */
mbed_official 376:cb4d9db17537 249 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 250
mbed_official 376:cb4d9db17537 251 /* Change TSC state */
mbed_official 376:cb4d9db17537 252 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 253
mbed_official 376:cb4d9db17537 254 /* DeInit the low level hardware */
mbed_official 376:cb4d9db17537 255 HAL_TSC_MspDeInit(htsc);
mbed_official 376:cb4d9db17537 256
mbed_official 376:cb4d9db17537 257 /* Change TSC state */
mbed_official 376:cb4d9db17537 258 htsc->State = HAL_TSC_STATE_RESET;
mbed_official 376:cb4d9db17537 259
mbed_official 376:cb4d9db17537 260 /* Process unlocked */
mbed_official 376:cb4d9db17537 261 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 262
mbed_official 376:cb4d9db17537 263 /* Return function status */
mbed_official 376:cb4d9db17537 264 return HAL_OK;
mbed_official 376:cb4d9db17537 265 }
mbed_official 376:cb4d9db17537 266
mbed_official 376:cb4d9db17537 267 /**
mbed_official 376:cb4d9db17537 268 * @brief Initializes the TSC MSP.
mbed_official 376:cb4d9db17537 269 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 270 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 271 * @retval None
mbed_official 376:cb4d9db17537 272 */
mbed_official 376:cb4d9db17537 273 __weak void HAL_TSC_MspInit(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 274 {
mbed_official 376:cb4d9db17537 275 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 276 the HAL_TSC_MspInit could be implemented in the user file.
mbed_official 376:cb4d9db17537 277 */
mbed_official 376:cb4d9db17537 278 }
mbed_official 376:cb4d9db17537 279
mbed_official 376:cb4d9db17537 280 /**
mbed_official 376:cb4d9db17537 281 * @brief DeInitializes the TSC MSP.
mbed_official 376:cb4d9db17537 282 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 283 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 284 * @retval None
mbed_official 376:cb4d9db17537 285 */
mbed_official 376:cb4d9db17537 286 __weak void HAL_TSC_MspDeInit(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 287 {
mbed_official 376:cb4d9db17537 288 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 289 the HAL_TSC_MspDeInit could be implemented in the user file.
mbed_official 376:cb4d9db17537 290 */
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 /** @defgroup HAL_TSC_Group2 IO operation functions
mbed_official 376:cb4d9db17537 298 * @brief IO operation functions
mbed_official 376:cb4d9db17537 299 *
mbed_official 376:cb4d9db17537 300 @verbatim
mbed_official 376:cb4d9db17537 301 ===============================================================================
mbed_official 376:cb4d9db17537 302 ##### I/O Operation functions #####
mbed_official 376:cb4d9db17537 303 ===============================================================================
mbed_official 376:cb4d9db17537 304 [..] This section provides functions allowing to:
mbed_official 376:cb4d9db17537 305 (+) Start acquisition in polling mode.
mbed_official 376:cb4d9db17537 306 (+) Start acquisition in interrupt mode.
mbed_official 376:cb4d9db17537 307 (+) Stop conversion in polling mode.
mbed_official 376:cb4d9db17537 308 (+) Stop conversion in interrupt mode.
mbed_official 376:cb4d9db17537 309 (+) Get group acquisition status.
mbed_official 376:cb4d9db17537 310 (+) Get group acquisition value.
mbed_official 376:cb4d9db17537 311 @endverbatim
mbed_official 376:cb4d9db17537 312 * @{
mbed_official 376:cb4d9db17537 313 */
mbed_official 376:cb4d9db17537 314
mbed_official 376:cb4d9db17537 315 /**
mbed_official 376:cb4d9db17537 316 * @brief Starts the acquisition.
mbed_official 376:cb4d9db17537 317 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 318 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 319 * @retval HAL status
mbed_official 376:cb4d9db17537 320 */
mbed_official 376:cb4d9db17537 321 HAL_StatusTypeDef HAL_TSC_Start(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 322 {
mbed_official 376:cb4d9db17537 323 /* Check the parameters */
mbed_official 376:cb4d9db17537 324 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 325
mbed_official 376:cb4d9db17537 326 /* Process locked */
mbed_official 376:cb4d9db17537 327 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 328
mbed_official 376:cb4d9db17537 329 /* Change TSC state */
mbed_official 376:cb4d9db17537 330 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 331
mbed_official 376:cb4d9db17537 332 /* Clear interrupts */
mbed_official 376:cb4d9db17537 333 __HAL_TSC_DISABLE_IT(htsc, (TSC_IT_EOA | TSC_IT_MCE));
mbed_official 376:cb4d9db17537 334
mbed_official 376:cb4d9db17537 335 /* Clear flags */
mbed_official 376:cb4d9db17537 336 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 337
mbed_official 376:cb4d9db17537 338 /* Stop discharging the IOs */
mbed_official 376:cb4d9db17537 339 __HAL_TSC_SET_IODEF_INFLOAT(htsc);
mbed_official 376:cb4d9db17537 340
mbed_official 376:cb4d9db17537 341 /* Launch the acquisition */
mbed_official 376:cb4d9db17537 342 __HAL_TSC_START_ACQ(htsc);
mbed_official 376:cb4d9db17537 343
mbed_official 376:cb4d9db17537 344 /* Process unlocked */
mbed_official 376:cb4d9db17537 345 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 346
mbed_official 376:cb4d9db17537 347 /* Return function status */
mbed_official 376:cb4d9db17537 348 return HAL_OK;
mbed_official 376:cb4d9db17537 349 }
mbed_official 376:cb4d9db17537 350
mbed_official 376:cb4d9db17537 351 /**
mbed_official 376:cb4d9db17537 352 * @brief Enables the interrupt and starts the acquisition
mbed_official 376:cb4d9db17537 353 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 354 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 355 * @retval HAL status.
mbed_official 376:cb4d9db17537 356 */
mbed_official 376:cb4d9db17537 357 HAL_StatusTypeDef HAL_TSC_Start_IT(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 358 {
mbed_official 376:cb4d9db17537 359 /* Check the parameters */
mbed_official 376:cb4d9db17537 360 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 361 assert_param(IS_TSC_MCE_IT(htsc->Init.MaxCountInterrupt));
mbed_official 376:cb4d9db17537 362
mbed_official 376:cb4d9db17537 363 /* Process locked */
mbed_official 376:cb4d9db17537 364 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 365
mbed_official 376:cb4d9db17537 366 /* Change TSC state */
mbed_official 376:cb4d9db17537 367 htsc->State = HAL_TSC_STATE_BUSY;
mbed_official 376:cb4d9db17537 368
mbed_official 376:cb4d9db17537 369 /* Enable end of acquisition interrupt */
mbed_official 376:cb4d9db17537 370 __HAL_TSC_ENABLE_IT(htsc, TSC_IT_EOA);
mbed_official 376:cb4d9db17537 371
mbed_official 376:cb4d9db17537 372 /* Enable max count error interrupt (optional) */
mbed_official 376:cb4d9db17537 373 if (htsc->Init.MaxCountInterrupt == ENABLE)
mbed_official 376:cb4d9db17537 374 {
mbed_official 376:cb4d9db17537 375 __HAL_TSC_ENABLE_IT(htsc, TSC_IT_MCE);
mbed_official 376:cb4d9db17537 376 }
mbed_official 376:cb4d9db17537 377 else
mbed_official 376:cb4d9db17537 378 {
mbed_official 376:cb4d9db17537 379 __HAL_TSC_DISABLE_IT(htsc, TSC_IT_MCE);
mbed_official 376:cb4d9db17537 380 }
mbed_official 376:cb4d9db17537 381
mbed_official 376:cb4d9db17537 382 /* Clear flags */
mbed_official 376:cb4d9db17537 383 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 384
mbed_official 376:cb4d9db17537 385 /* Stop discharging the IOs */
mbed_official 376:cb4d9db17537 386 __HAL_TSC_SET_IODEF_INFLOAT(htsc);
mbed_official 376:cb4d9db17537 387
mbed_official 376:cb4d9db17537 388 /* Launch the acquisition */
mbed_official 376:cb4d9db17537 389 __HAL_TSC_START_ACQ(htsc);
mbed_official 376:cb4d9db17537 390
mbed_official 376:cb4d9db17537 391 /* Process unlocked */
mbed_official 376:cb4d9db17537 392 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 393
mbed_official 376:cb4d9db17537 394 /* Return function status */
mbed_official 376:cb4d9db17537 395 return HAL_OK;
mbed_official 376:cb4d9db17537 396 }
mbed_official 376:cb4d9db17537 397
mbed_official 376:cb4d9db17537 398 /**
mbed_official 376:cb4d9db17537 399 * @brief Stops the acquisition previously launched in polling mode
mbed_official 376:cb4d9db17537 400 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 401 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 402 * @retval HAL status
mbed_official 376:cb4d9db17537 403 */
mbed_official 376:cb4d9db17537 404 HAL_StatusTypeDef HAL_TSC_Stop(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 405 {
mbed_official 376:cb4d9db17537 406 /* Check the parameters */
mbed_official 376:cb4d9db17537 407 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 408
mbed_official 376:cb4d9db17537 409 /* Process locked */
mbed_official 376:cb4d9db17537 410 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 411
mbed_official 376:cb4d9db17537 412 /* Stop the acquisition */
mbed_official 376:cb4d9db17537 413 __HAL_TSC_STOP_ACQ(htsc);
mbed_official 376:cb4d9db17537 414
mbed_official 376:cb4d9db17537 415 /* Clear flags */
mbed_official 376:cb4d9db17537 416 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 417
mbed_official 376:cb4d9db17537 418 /* Change TSC state */
mbed_official 376:cb4d9db17537 419 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 420
mbed_official 376:cb4d9db17537 421 /* Process unlocked */
mbed_official 376:cb4d9db17537 422 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 423
mbed_official 376:cb4d9db17537 424 /* Return function status */
mbed_official 376:cb4d9db17537 425 return HAL_OK;
mbed_official 376:cb4d9db17537 426 }
mbed_official 376:cb4d9db17537 427
mbed_official 376:cb4d9db17537 428 /**
mbed_official 376:cb4d9db17537 429 * @brief Stops the acquisition previously launched in interrupt mode
mbed_official 376:cb4d9db17537 430 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 431 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 432 * @retval HAL status
mbed_official 376:cb4d9db17537 433 */
mbed_official 376:cb4d9db17537 434 HAL_StatusTypeDef HAL_TSC_Stop_IT(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 435 {
mbed_official 376:cb4d9db17537 436 /* Check the parameters */
mbed_official 376:cb4d9db17537 437 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 438
mbed_official 376:cb4d9db17537 439 /* Process locked */
mbed_official 376:cb4d9db17537 440 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 441
mbed_official 376:cb4d9db17537 442 /* Stop the acquisition */
mbed_official 376:cb4d9db17537 443 __HAL_TSC_STOP_ACQ(htsc);
mbed_official 376:cb4d9db17537 444
mbed_official 376:cb4d9db17537 445 /* Disable interrupts */
mbed_official 376:cb4d9db17537 446 __HAL_TSC_DISABLE_IT(htsc, (TSC_IT_EOA | TSC_IT_MCE));
mbed_official 376:cb4d9db17537 447
mbed_official 376:cb4d9db17537 448 /* Clear flags */
mbed_official 376:cb4d9db17537 449 __HAL_TSC_CLEAR_FLAG(htsc, (TSC_FLAG_EOA | TSC_FLAG_MCE));
mbed_official 376:cb4d9db17537 450
mbed_official 376:cb4d9db17537 451 /* Change TSC state */
mbed_official 376:cb4d9db17537 452 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 453
mbed_official 376:cb4d9db17537 454 /* Process unlocked */
mbed_official 376:cb4d9db17537 455 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 456
mbed_official 376:cb4d9db17537 457 /* Return function status */
mbed_official 376:cb4d9db17537 458 return HAL_OK;
mbed_official 376:cb4d9db17537 459 }
mbed_official 376:cb4d9db17537 460
mbed_official 376:cb4d9db17537 461 /**
mbed_official 376:cb4d9db17537 462 * @brief Gets the acquisition status for a group
mbed_official 376:cb4d9db17537 463 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 464 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 465 * @param gx_index: Index of the group
mbed_official 376:cb4d9db17537 466 * @retval Group status
mbed_official 376:cb4d9db17537 467 */
mbed_official 376:cb4d9db17537 468 TSC_GroupStatusTypeDef HAL_TSC_GroupGetStatus(TSC_HandleTypeDef* htsc, uint32_t gx_index)
mbed_official 376:cb4d9db17537 469 {
mbed_official 376:cb4d9db17537 470 /* Check the parameters */
mbed_official 376:cb4d9db17537 471 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 472 assert_param(IS_GROUP_INDEX(gx_index));
mbed_official 376:cb4d9db17537 473
mbed_official 376:cb4d9db17537 474 /* Return the group status */
mbed_official 376:cb4d9db17537 475 return(__HAL_TSC_GET_GROUP_STATUS(htsc, gx_index));
mbed_official 376:cb4d9db17537 476 }
mbed_official 376:cb4d9db17537 477
mbed_official 376:cb4d9db17537 478 /**
mbed_official 376:cb4d9db17537 479 * @brief Gets the acquisition measure for a group
mbed_official 376:cb4d9db17537 480 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 481 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 482 * @param gx_index: Index of the group
mbed_official 376:cb4d9db17537 483 * @retval Acquisition measure
mbed_official 376:cb4d9db17537 484 */
mbed_official 376:cb4d9db17537 485 uint32_t HAL_TSC_GroupGetValue(TSC_HandleTypeDef* htsc, uint32_t gx_index)
mbed_official 376:cb4d9db17537 486 {
mbed_official 376:cb4d9db17537 487 /* Check the parameters */
mbed_official 376:cb4d9db17537 488 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 489 assert_param(IS_GROUP_INDEX(gx_index));
mbed_official 376:cb4d9db17537 490
mbed_official 376:cb4d9db17537 491 /* Return the group acquisition counter */
mbed_official 376:cb4d9db17537 492 return htsc->Instance->IOGXCR[gx_index];
mbed_official 376:cb4d9db17537 493 }
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 /** @defgroup HAL_TSC_Group3 Peripheral Control functions
mbed_official 376:cb4d9db17537 500 * @brief Peripheral Control functions
mbed_official 376:cb4d9db17537 501 *
mbed_official 376:cb4d9db17537 502 @verbatim
mbed_official 376:cb4d9db17537 503 ===============================================================================
mbed_official 376:cb4d9db17537 504 ##### Peripheral Control functions #####
mbed_official 376:cb4d9db17537 505 ===============================================================================
mbed_official 376:cb4d9db17537 506 [..] This section provides functions allowing to:
mbed_official 376:cb4d9db17537 507 (+) Configure TSC IOs
mbed_official 376:cb4d9db17537 508 (+) Discharge TSC IOs
mbed_official 376:cb4d9db17537 509 @endverbatim
mbed_official 376:cb4d9db17537 510 * @{
mbed_official 376:cb4d9db17537 511 */
mbed_official 376:cb4d9db17537 512
mbed_official 376:cb4d9db17537 513 /**
mbed_official 376:cb4d9db17537 514 * @brief Configures TSC IOs
mbed_official 376:cb4d9db17537 515 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 516 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 517 * @param config: pointer to the configuration structure.
mbed_official 376:cb4d9db17537 518 * @retval HAL status
mbed_official 376:cb4d9db17537 519 */
mbed_official 376:cb4d9db17537 520 HAL_StatusTypeDef HAL_TSC_IOConfig(TSC_HandleTypeDef* htsc, TSC_IOConfigTypeDef* config)
mbed_official 376:cb4d9db17537 521 {
mbed_official 376:cb4d9db17537 522 /* Check the parameters */
mbed_official 376:cb4d9db17537 523 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 524
mbed_official 376:cb4d9db17537 525 /* Process locked */
mbed_official 376:cb4d9db17537 526 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 527
mbed_official 376:cb4d9db17537 528 /* Stop acquisition */
mbed_official 376:cb4d9db17537 529 __HAL_TSC_STOP_ACQ(htsc);
mbed_official 376:cb4d9db17537 530
mbed_official 376:cb4d9db17537 531 /* Disable Schmitt trigger hysteresis on all used TSC IOs */
mbed_official 376:cb4d9db17537 532 htsc->Instance->IOHCR = (uint32_t)(~(config->ChannelIOs | config->ShieldIOs | config->SamplingIOs));
mbed_official 376:cb4d9db17537 533
mbed_official 376:cb4d9db17537 534 /* Set channel and shield IOs */
mbed_official 376:cb4d9db17537 535 htsc->Instance->IOCCR = (config->ChannelIOs | config->ShieldIOs);
mbed_official 376:cb4d9db17537 536
mbed_official 376:cb4d9db17537 537 /* Set sampling IOs */
mbed_official 376:cb4d9db17537 538 htsc->Instance->IOSCR = config->SamplingIOs;
mbed_official 376:cb4d9db17537 539
mbed_official 376:cb4d9db17537 540 /* Set groups to be acquired */
mbed_official 376:cb4d9db17537 541 htsc->Instance->IOGCSR = TSC_extract_groups(config->ChannelIOs);
mbed_official 376:cb4d9db17537 542
mbed_official 376:cb4d9db17537 543 /* Process unlocked */
mbed_official 376:cb4d9db17537 544 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 545
mbed_official 376:cb4d9db17537 546 /* Return function status */
mbed_official 376:cb4d9db17537 547 return HAL_OK;
mbed_official 376:cb4d9db17537 548 }
mbed_official 376:cb4d9db17537 549
mbed_official 376:cb4d9db17537 550 /**
mbed_official 376:cb4d9db17537 551 * @brief Discharge TSC IOs
mbed_official 376:cb4d9db17537 552 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 553 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 554 * @param choice: enable or disable
mbed_official 376:cb4d9db17537 555 * @retval HAL status
mbed_official 376:cb4d9db17537 556 */
mbed_official 376:cb4d9db17537 557 HAL_StatusTypeDef HAL_TSC_IODischarge(TSC_HandleTypeDef* htsc, uint32_t choice)
mbed_official 376:cb4d9db17537 558 {
mbed_official 376:cb4d9db17537 559 /* Check the parameters */
mbed_official 376:cb4d9db17537 560 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 561
mbed_official 376:cb4d9db17537 562 /* Process locked */
mbed_official 376:cb4d9db17537 563 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 564
mbed_official 376:cb4d9db17537 565 if (choice == ENABLE)
mbed_official 376:cb4d9db17537 566 {
mbed_official 376:cb4d9db17537 567 __HAL_TSC_SET_IODEF_OUTPPLOW(htsc);
mbed_official 376:cb4d9db17537 568 }
mbed_official 376:cb4d9db17537 569 else
mbed_official 376:cb4d9db17537 570 {
mbed_official 376:cb4d9db17537 571 __HAL_TSC_SET_IODEF_INFLOAT(htsc);
mbed_official 376:cb4d9db17537 572 }
mbed_official 376:cb4d9db17537 573
mbed_official 376:cb4d9db17537 574 /* Process unlocked */
mbed_official 376:cb4d9db17537 575 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 576
mbed_official 376:cb4d9db17537 577 /* Return the group acquisition counter */
mbed_official 376:cb4d9db17537 578 return HAL_OK;
mbed_official 376:cb4d9db17537 579 }
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 /** @defgroup HAL_TSC_Group4 State functions
mbed_official 376:cb4d9db17537 586 * @brief State functions
mbed_official 376:cb4d9db17537 587 *
mbed_official 376:cb4d9db17537 588 @verbatim
mbed_official 376:cb4d9db17537 589 ===============================================================================
mbed_official 376:cb4d9db17537 590 ##### State functions #####
mbed_official 376:cb4d9db17537 591 ===============================================================================
mbed_official 376:cb4d9db17537 592 [..]
mbed_official 376:cb4d9db17537 593 This subsection provides functions allowing to
mbed_official 376:cb4d9db17537 594 (+) Get TSC state.
mbed_official 376:cb4d9db17537 595 (+) Poll for acquisition completed.
mbed_official 376:cb4d9db17537 596 (+) Handles TSC interrupt request.
mbed_official 376:cb4d9db17537 597
mbed_official 376:cb4d9db17537 598 @endverbatim
mbed_official 376:cb4d9db17537 599 * @{
mbed_official 376:cb4d9db17537 600 */
mbed_official 376:cb4d9db17537 601
mbed_official 376:cb4d9db17537 602 /**
mbed_official 376:cb4d9db17537 603 * @brief Return the TSC state
mbed_official 376:cb4d9db17537 604 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 605 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 606 * @retval HAL state
mbed_official 376:cb4d9db17537 607 */
mbed_official 376:cb4d9db17537 608 HAL_TSC_StateTypeDef HAL_TSC_GetState(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 609 {
mbed_official 376:cb4d9db17537 610 /* Check the parameters */
mbed_official 376:cb4d9db17537 611 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 612
mbed_official 376:cb4d9db17537 613 if (htsc->State == HAL_TSC_STATE_BUSY)
mbed_official 376:cb4d9db17537 614 {
mbed_official 376:cb4d9db17537 615 /* Check end of acquisition flag */
mbed_official 376:cb4d9db17537 616 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_EOA) != RESET)
mbed_official 376:cb4d9db17537 617 {
mbed_official 376:cb4d9db17537 618 /* Check max count error flag */
mbed_official 376:cb4d9db17537 619 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_MCE) != RESET)
mbed_official 376:cb4d9db17537 620 {
mbed_official 376:cb4d9db17537 621 /* Change TSC state */
mbed_official 376:cb4d9db17537 622 htsc->State = HAL_TSC_STATE_ERROR;
mbed_official 376:cb4d9db17537 623 }
mbed_official 376:cb4d9db17537 624 else
mbed_official 376:cb4d9db17537 625 {
mbed_official 376:cb4d9db17537 626 /* Change TSC state */
mbed_official 376:cb4d9db17537 627 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 628 }
mbed_official 376:cb4d9db17537 629 }
mbed_official 376:cb4d9db17537 630 }
mbed_official 376:cb4d9db17537 631
mbed_official 376:cb4d9db17537 632 /* Return TSC state */
mbed_official 376:cb4d9db17537 633 return htsc->State;
mbed_official 376:cb4d9db17537 634 }
mbed_official 376:cb4d9db17537 635
mbed_official 376:cb4d9db17537 636 /**
mbed_official 376:cb4d9db17537 637 * @brief Start acquisition and wait until completion
mbed_official 376:cb4d9db17537 638 * @note There is no need of a timeout parameter as the max count error is already
mbed_official 376:cb4d9db17537 639 * managed by the TSC peripheral.
mbed_official 376:cb4d9db17537 640 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 641 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 642 * @retval HAL state
mbed_official 376:cb4d9db17537 643 */
mbed_official 376:cb4d9db17537 644 HAL_StatusTypeDef HAL_TSC_PollForAcquisition(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 645 {
mbed_official 376:cb4d9db17537 646 /* Check the parameters */
mbed_official 376:cb4d9db17537 647 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 648
mbed_official 376:cb4d9db17537 649 /* Process locked */
mbed_official 376:cb4d9db17537 650 __HAL_LOCK(htsc);
mbed_official 376:cb4d9db17537 651
mbed_official 376:cb4d9db17537 652 /* Check end of acquisition */
mbed_official 376:cb4d9db17537 653 while (HAL_TSC_GetState(htsc) == HAL_TSC_STATE_BUSY)
mbed_official 376:cb4d9db17537 654 {
mbed_official 376:cb4d9db17537 655 /* The timeout (max count error) is managed by the TSC peripheral itself. */
mbed_official 376:cb4d9db17537 656 }
mbed_official 376:cb4d9db17537 657
mbed_official 376:cb4d9db17537 658 /* Process unlocked */
mbed_official 376:cb4d9db17537 659 __HAL_UNLOCK(htsc);
mbed_official 376:cb4d9db17537 660
mbed_official 376:cb4d9db17537 661 return HAL_OK;
mbed_official 376:cb4d9db17537 662 }
mbed_official 376:cb4d9db17537 663
mbed_official 376:cb4d9db17537 664 /**
mbed_official 376:cb4d9db17537 665 * @brief Handles TSC interrupt request
mbed_official 376:cb4d9db17537 666 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 667 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 668 * @retval None
mbed_official 376:cb4d9db17537 669 */
mbed_official 376:cb4d9db17537 670 void HAL_TSC_IRQHandler(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 671 {
mbed_official 376:cb4d9db17537 672 /* Check the parameters */
mbed_official 376:cb4d9db17537 673 assert_param(IS_TSC_ALL_INSTANCE(htsc->Instance));
mbed_official 376:cb4d9db17537 674
mbed_official 376:cb4d9db17537 675 /* Check if the end of acquisition occured */
mbed_official 376:cb4d9db17537 676 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_EOA) != RESET)
mbed_official 376:cb4d9db17537 677 {
mbed_official 376:cb4d9db17537 678 /* Clear EOA flag */
mbed_official 376:cb4d9db17537 679 __HAL_TSC_CLEAR_FLAG(htsc, TSC_FLAG_EOA);
mbed_official 376:cb4d9db17537 680 }
mbed_official 376:cb4d9db17537 681
mbed_official 376:cb4d9db17537 682 /* Check if max count error occured */
mbed_official 376:cb4d9db17537 683 if (__HAL_TSC_GET_FLAG(htsc, TSC_FLAG_MCE) != RESET)
mbed_official 376:cb4d9db17537 684 {
mbed_official 376:cb4d9db17537 685 /* Clear MCE flag */
mbed_official 376:cb4d9db17537 686 __HAL_TSC_CLEAR_FLAG(htsc, TSC_FLAG_MCE);
mbed_official 376:cb4d9db17537 687 /* Change TSC state */
mbed_official 376:cb4d9db17537 688 htsc->State = HAL_TSC_STATE_ERROR;
mbed_official 376:cb4d9db17537 689 /* Conversion completed callback */
mbed_official 376:cb4d9db17537 690 HAL_TSC_ErrorCallback(htsc);
mbed_official 376:cb4d9db17537 691 }
mbed_official 376:cb4d9db17537 692 else
mbed_official 376:cb4d9db17537 693 {
mbed_official 376:cb4d9db17537 694 /* Change TSC state */
mbed_official 376:cb4d9db17537 695 htsc->State = HAL_TSC_STATE_READY;
mbed_official 376:cb4d9db17537 696 /* Conversion completed callback */
mbed_official 376:cb4d9db17537 697 HAL_TSC_ConvCpltCallback(htsc);
mbed_official 376:cb4d9db17537 698 }
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 * @brief Acquisition completed callback in non blocking mode
mbed_official 376:cb4d9db17537 707 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 708 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 709 * @retval None
mbed_official 376:cb4d9db17537 710 */
mbed_official 376:cb4d9db17537 711 __weak void HAL_TSC_ConvCpltCallback(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 712 {
mbed_official 376:cb4d9db17537 713 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 714 the HAL_TSC_ConvCpltCallback could be implemented in the user file.
mbed_official 376:cb4d9db17537 715 */
mbed_official 376:cb4d9db17537 716 }
mbed_official 376:cb4d9db17537 717
mbed_official 376:cb4d9db17537 718 /**
mbed_official 376:cb4d9db17537 719 * @brief Error callback in non blocking mode
mbed_official 376:cb4d9db17537 720 * @param htsc: pointer to a TSC_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 721 * the configuration information for the specified TSC.
mbed_official 376:cb4d9db17537 722 * @retval None
mbed_official 376:cb4d9db17537 723 */
mbed_official 376:cb4d9db17537 724 __weak void HAL_TSC_ErrorCallback(TSC_HandleTypeDef* htsc)
mbed_official 376:cb4d9db17537 725 {
mbed_official 376:cb4d9db17537 726 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 727 the HAL_TSC_ErrorCallback could be implemented in the user file.
mbed_official 376:cb4d9db17537 728 */
mbed_official 376:cb4d9db17537 729 }
mbed_official 376:cb4d9db17537 730
mbed_official 376:cb4d9db17537 731 /**
mbed_official 376:cb4d9db17537 732 * @brief Utility function used to set the acquired groups mask
mbed_official 376:cb4d9db17537 733 * @param iomask: Channels IOs mask
mbed_official 376:cb4d9db17537 734 * @retval Acquired groups mask
mbed_official 376:cb4d9db17537 735 */
mbed_official 376:cb4d9db17537 736 static uint32_t TSC_extract_groups(uint32_t iomask)
mbed_official 376:cb4d9db17537 737 {
mbed_official 376:cb4d9db17537 738 uint32_t groups = 0;
mbed_official 376:cb4d9db17537 739 uint32_t idx;
mbed_official 376:cb4d9db17537 740
mbed_official 376:cb4d9db17537 741 for (idx = 0; idx < TSC_NB_OF_GROUPS; idx++)
mbed_official 376:cb4d9db17537 742 {
mbed_official 376:cb4d9db17537 743 if ((iomask & ((uint32_t)0x0F << (idx * 4))) != RESET)
mbed_official 376:cb4d9db17537 744 {
mbed_official 376:cb4d9db17537 745 groups |= ((uint32_t)1 << idx);
mbed_official 376:cb4d9db17537 746 }
mbed_official 376:cb4d9db17537 747 }
mbed_official 376:cb4d9db17537 748
mbed_official 376:cb4d9db17537 749 return groups;
mbed_official 376:cb4d9db17537 750 }
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 #endif /* HAL_TSC_MODULE_ENABLED */
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 376:cb4d9db17537 765
mbed_official 376:cb4d9db17537 766 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/