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:
Mon Sep 28 14:00:11 2015 +0100
Revision:
632:7687fb9c4f91
Parent:
385:be64abf45658
Child:
634:ac7d6880524d
Synchronized with git revision f7ce4ed029cc611121464252ff28d5e8beb895b0

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

NUCLEO_F303K8 - add support of the STM32F303K8

Who changed what in which revision?

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