You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

723 lines
24 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32f0xx_hal_tsc.h
  4. * @author MCD Application Team
  5. * @brief This file contains all the functions prototypes for the TSC firmware
  6. * library.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
  11. *
  12. * Redistribution and use in source and binary forms, with or without modification,
  13. * are permitted provided that the following conditions are met:
  14. * 1. Redistributions of source code must retain the above copyright notice,
  15. * this list of conditions and the following disclaimer.
  16. * 2. Redistributions in binary form must reproduce the above copyright notice,
  17. * this list of conditions and the following disclaimer in the documentation
  18. * and/or other materials provided with the distribution.
  19. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  20. * may be used to endorse or promote products derived from this software
  21. * without specific prior written permission.
  22. *
  23. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  24. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  25. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  26. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  27. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  29. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  30. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  31. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  32. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. ******************************************************************************
  35. */
  36. /* Define to prevent recursive inclusion -------------------------------------*/
  37. #ifndef __STM32F0xx_TSC_H
  38. #define __STM32F0xx_TSC_H
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42. #if defined(STM32F051x8) || defined(STM32F071xB) || defined(STM32F091xC) || \
  43. defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F072xB) || \
  44. defined(STM32F058xx) || defined(STM32F078xx) || defined(STM32F098xx)
  45. /* Includes ------------------------------------------------------------------*/
  46. #include "stm32f0xx_hal_def.h"
  47. /** @addtogroup STM32F0xx_HAL_Driver
  48. * @{
  49. */
  50. /** @addtogroup TSC
  51. * @{
  52. */
  53. /* Exported types ------------------------------------------------------------*/
  54. /** @defgroup TSC_Exported_Types TSC Exported Types
  55. * @{
  56. */
  57. /**
  58. * @brief TSC state structure definition
  59. */
  60. typedef enum
  61. {
  62. HAL_TSC_STATE_RESET = 0x00U, /*!< TSC registers have their reset value */
  63. HAL_TSC_STATE_READY = 0x01U, /*!< TSC registers are initialized or acquisition is completed with success */
  64. HAL_TSC_STATE_BUSY = 0x02U, /*!< TSC initialization or acquisition is on-going */
  65. HAL_TSC_STATE_ERROR = 0x03U /*!< Acquisition is completed with max count error */
  66. } HAL_TSC_StateTypeDef;
  67. /**
  68. * @brief TSC group status structure definition
  69. */
  70. typedef enum
  71. {
  72. TSC_GROUP_ONGOING = 0x00U, /*!< Acquisition on group is on-going or not started */
  73. TSC_GROUP_COMPLETED = 0x01U /*!< Acquisition on group is completed with success (no max count error) */
  74. } TSC_GroupStatusTypeDef;
  75. /**
  76. * @brief TSC init structure definition
  77. */
  78. typedef struct
  79. {
  80. uint32_t CTPulseHighLength; /*!< Charge-transfer high pulse length */
  81. uint32_t CTPulseLowLength; /*!< Charge-transfer low pulse length */
  82. uint32_t SpreadSpectrum; /*!< Spread spectrum activation */
  83. uint32_t SpreadSpectrumDeviation; /*!< Spread spectrum deviation */
  84. uint32_t SpreadSpectrumPrescaler; /*!< Spread spectrum prescaler */
  85. uint32_t PulseGeneratorPrescaler; /*!< Pulse generator prescaler */
  86. uint32_t MaxCountValue; /*!< Max count value */
  87. uint32_t IODefaultMode; /*!< IO default mode */
  88. uint32_t SynchroPinPolarity; /*!< Synchro pin polarity */
  89. uint32_t AcquisitionMode; /*!< Acquisition mode */
  90. uint32_t MaxCountInterrupt; /*!< Max count interrupt activation */
  91. uint32_t ChannelIOs; /*!< Channel IOs mask */
  92. uint32_t ShieldIOs; /*!< Shield IOs mask */
  93. uint32_t SamplingIOs; /*!< Sampling IOs mask */
  94. } TSC_InitTypeDef;
  95. /**
  96. * @brief TSC IOs configuration structure definition
  97. */
  98. typedef struct
  99. {
  100. uint32_t ChannelIOs; /*!< Channel IOs mask */
  101. uint32_t ShieldIOs; /*!< Shield IOs mask */
  102. uint32_t SamplingIOs; /*!< Sampling IOs mask */
  103. } TSC_IOConfigTypeDef;
  104. /**
  105. * @brief TSC handle Structure definition
  106. */
  107. typedef struct
  108. {
  109. TSC_TypeDef *Instance; /*!< Register base address */
  110. TSC_InitTypeDef Init; /*!< Initialization parameters */
  111. __IO HAL_TSC_StateTypeDef State; /*!< Peripheral state */
  112. HAL_LockTypeDef Lock; /*!< Lock feature */
  113. } TSC_HandleTypeDef;
  114. /**
  115. * @}
  116. */
  117. /* Exported constants --------------------------------------------------------*/
  118. /** @defgroup TSC_Exported_Constants TSC Exported Constants
  119. * @{
  120. */
  121. /** @defgroup TSC_CTPH_Cycles TSC Charge Transfer Pulse High
  122. * @{
  123. */
  124. #define TSC_CTPH_1CYCLE ((uint32_t)( 0U << 28))
  125. #define TSC_CTPH_2CYCLES ((uint32_t)( 1U << 28))
  126. #define TSC_CTPH_3CYCLES ((uint32_t)( 2U << 28))
  127. #define TSC_CTPH_4CYCLES ((uint32_t)( 3U << 28))
  128. #define TSC_CTPH_5CYCLES ((uint32_t)( 4U << 28))
  129. #define TSC_CTPH_6CYCLES ((uint32_t)( 5U << 28))
  130. #define TSC_CTPH_7CYCLES ((uint32_t)( 6U << 28))
  131. #define TSC_CTPH_8CYCLES ((uint32_t)( 7U << 28))
  132. #define TSC_CTPH_9CYCLES ((uint32_t)( 8U << 28))
  133. #define TSC_CTPH_10CYCLES ((uint32_t)( 9U << 28))
  134. #define TSC_CTPH_11CYCLES ((uint32_t)(10U << 28))
  135. #define TSC_CTPH_12CYCLES ((uint32_t)(11U << 28))
  136. #define TSC_CTPH_13CYCLES ((uint32_t)(12U << 28))
  137. #define TSC_CTPH_14CYCLES ((uint32_t)(13U << 28))
  138. #define TSC_CTPH_15CYCLES ((uint32_t)(14U << 28))
  139. #define TSC_CTPH_16CYCLES ((uint32_t)(15U << 28))
  140. #define IS_TSC_CTPH(VAL) (((VAL) == TSC_CTPH_1CYCLE) || \
  141. ((VAL) == TSC_CTPH_2CYCLES) || \
  142. ((VAL) == TSC_CTPH_3CYCLES) || \
  143. ((VAL) == TSC_CTPH_4CYCLES) || \
  144. ((VAL) == TSC_CTPH_5CYCLES) || \
  145. ((VAL) == TSC_CTPH_6CYCLES) || \
  146. ((VAL) == TSC_CTPH_7CYCLES) || \
  147. ((VAL) == TSC_CTPH_8CYCLES) || \
  148. ((VAL) == TSC_CTPH_9CYCLES) || \
  149. ((VAL) == TSC_CTPH_10CYCLES) || \
  150. ((VAL) == TSC_CTPH_11CYCLES) || \
  151. ((VAL) == TSC_CTPH_12CYCLES) || \
  152. ((VAL) == TSC_CTPH_13CYCLES) || \
  153. ((VAL) == TSC_CTPH_14CYCLES) || \
  154. ((VAL) == TSC_CTPH_15CYCLES) || \
  155. ((VAL) == TSC_CTPH_16CYCLES))
  156. /**
  157. * @}
  158. */
  159. /** @defgroup TSC_CTPL_Cycles TSC Charge Transfer Pulse Low
  160. * @{
  161. */
  162. #define TSC_CTPL_1CYCLE ((uint32_t)( 0U << 24))
  163. #define TSC_CTPL_2CYCLES ((uint32_t)( 1U << 24))
  164. #define TSC_CTPL_3CYCLES ((uint32_t)( 2U << 24))
  165. #define TSC_CTPL_4CYCLES ((uint32_t)( 3U << 24))
  166. #define TSC_CTPL_5CYCLES ((uint32_t)( 4U << 24))
  167. #define TSC_CTPL_6CYCLES ((uint32_t)( 5U << 24))
  168. #define TSC_CTPL_7CYCLES ((uint32_t)( 6U << 24))
  169. #define TSC_CTPL_8CYCLES ((uint32_t)( 7U << 24))
  170. #define TSC_CTPL_9CYCLES ((uint32_t)( 8U << 24))
  171. #define TSC_CTPL_10CYCLES ((uint32_t)( 9U << 24))
  172. #define TSC_CTPL_11CYCLES ((uint32_t)(10U << 24))
  173. #define TSC_CTPL_12CYCLES ((uint32_t)(11U << 24))
  174. #define TSC_CTPL_13CYCLES ((uint32_t)(12U << 24))
  175. #define TSC_CTPL_14CYCLES ((uint32_t)(13U << 24))
  176. #define TSC_CTPL_15CYCLES ((uint32_t)(14U << 24))
  177. #define TSC_CTPL_16CYCLES ((uint32_t)(15U << 24))
  178. #define IS_TSC_CTPL(VAL) (((VAL) == TSC_CTPL_1CYCLE) || \
  179. ((VAL) == TSC_CTPL_2CYCLES) || \
  180. ((VAL) == TSC_CTPL_3CYCLES) || \
  181. ((VAL) == TSC_CTPL_4CYCLES) || \
  182. ((VAL) == TSC_CTPL_5CYCLES) || \
  183. ((VAL) == TSC_CTPL_6CYCLES) || \
  184. ((VAL) == TSC_CTPL_7CYCLES) || \
  185. ((VAL) == TSC_CTPL_8CYCLES) || \
  186. ((VAL) == TSC_CTPL_9CYCLES) || \
  187. ((VAL) == TSC_CTPL_10CYCLES) || \
  188. ((VAL) == TSC_CTPL_11CYCLES) || \
  189. ((VAL) == TSC_CTPL_12CYCLES) || \
  190. ((VAL) == TSC_CTPL_13CYCLES) || \
  191. ((VAL) == TSC_CTPL_14CYCLES) || \
  192. ((VAL) == TSC_CTPL_15CYCLES) || \
  193. ((VAL) == TSC_CTPL_16CYCLES))
  194. /**
  195. * @}
  196. */
  197. /** @defgroup TSC_SS_Prescaler_definition TSC Spread spectrum prescaler definition
  198. * @{
  199. */
  200. #define TSC_SS_PRESC_DIV1 (0U)
  201. #define TSC_SS_PRESC_DIV2 (TSC_CR_SSPSC)
  202. #define IS_TSC_SS_PRESC(VAL) (((VAL) == TSC_SS_PRESC_DIV1) || ((VAL) == TSC_SS_PRESC_DIV2))
  203. /**
  204. * @}
  205. */
  206. /** @defgroup TSC_PG_Prescaler_definition TSC Pulse Generator prescaler definition
  207. * @{
  208. */
  209. #define TSC_PG_PRESC_DIV1 ((uint32_t)(0 << 12))
  210. #define TSC_PG_PRESC_DIV2 ((uint32_t)(1 << 12))
  211. #define TSC_PG_PRESC_DIV4 ((uint32_t)(2 << 12))
  212. #define TSC_PG_PRESC_DIV8 ((uint32_t)(3 << 12))
  213. #define TSC_PG_PRESC_DIV16 ((uint32_t)(4 << 12))
  214. #define TSC_PG_PRESC_DIV32 ((uint32_t)(5 << 12))
  215. #define TSC_PG_PRESC_DIV64 ((uint32_t)(6 << 12))
  216. #define TSC_PG_PRESC_DIV128 ((uint32_t)(7 << 12))
  217. #define IS_TSC_PG_PRESC(VAL) (((VAL) == TSC_PG_PRESC_DIV1) || \
  218. ((VAL) == TSC_PG_PRESC_DIV2) || \
  219. ((VAL) == TSC_PG_PRESC_DIV4) || \
  220. ((VAL) == TSC_PG_PRESC_DIV8) || \
  221. ((VAL) == TSC_PG_PRESC_DIV16) || \
  222. ((VAL) == TSC_PG_PRESC_DIV32) || \
  223. ((VAL) == TSC_PG_PRESC_DIV64) || \
  224. ((VAL) == TSC_PG_PRESC_DIV128))
  225. /**
  226. * @}
  227. */
  228. /** @defgroup TSC_MCV_definition TSC Max Count Value definition
  229. * @{
  230. */
  231. #define TSC_MCV_255 ((uint32_t)(0 << 5))
  232. #define TSC_MCV_511 ((uint32_t)(1 << 5))
  233. #define TSC_MCV_1023 ((uint32_t)(2 << 5))
  234. #define TSC_MCV_2047 ((uint32_t)(3 << 5))
  235. #define TSC_MCV_4095 ((uint32_t)(4 << 5))
  236. #define TSC_MCV_8191 ((uint32_t)(5 << 5))
  237. #define TSC_MCV_16383 ((uint32_t)(6 << 5))
  238. #define IS_TSC_MCV(VAL) (((VAL) == TSC_MCV_255) || \
  239. ((VAL) == TSC_MCV_511) || \
  240. ((VAL) == TSC_MCV_1023) || \
  241. ((VAL) == TSC_MCV_2047) || \
  242. ((VAL) == TSC_MCV_4095) || \
  243. ((VAL) == TSC_MCV_8191) || \
  244. ((VAL) == TSC_MCV_16383))
  245. /**
  246. * @}
  247. */
  248. /** @defgroup TSC_IO_default_mode_definition TSC I/O default mode definition
  249. * @{
  250. */
  251. #define TSC_IODEF_OUT_PP_LOW (0U)
  252. #define TSC_IODEF_IN_FLOAT (TSC_CR_IODEF)
  253. #define IS_TSC_IODEF(VAL) (((VAL) == TSC_IODEF_OUT_PP_LOW) || ((VAL) == TSC_IODEF_IN_FLOAT))
  254. /**
  255. * @}
  256. */
  257. /** @defgroup TSC_Synchronization_pin_polarity TSC Synchronization pin polarity
  258. * @{
  259. */
  260. #define TSC_SYNC_POLARITY_FALLING (0U)
  261. #define TSC_SYNC_POLARITY_RISING (TSC_CR_SYNCPOL)
  262. #define IS_TSC_SYNC_POL(VAL) (((VAL) == TSC_SYNC_POLARITY_FALLING) || ((VAL) == TSC_SYNC_POLARITY_RISING))
  263. /**
  264. * @}
  265. */
  266. /** @defgroup TSC_Acquisition_mode TSC Acquisition mode
  267. * @{
  268. */
  269. #define TSC_ACQ_MODE_NORMAL (0U)
  270. #define TSC_ACQ_MODE_SYNCHRO (TSC_CR_AM)
  271. #define IS_TSC_ACQ_MODE(VAL) (((VAL) == TSC_ACQ_MODE_NORMAL) || ((VAL) == TSC_ACQ_MODE_SYNCHRO))
  272. /**
  273. * @}
  274. */
  275. /** @defgroup TSC_IO_mode_definition TSC I/O mode definition
  276. * @{
  277. */
  278. #define TSC_IOMODE_UNUSED (0U)
  279. #define TSC_IOMODE_CHANNEL (1U)
  280. #define TSC_IOMODE_SHIELD (2U)
  281. #define TSC_IOMODE_SAMPLING (3U)
  282. #define IS_TSC_IOMODE(VAL) (((VAL) == TSC_IOMODE_UNUSED) || \
  283. ((VAL) == TSC_IOMODE_CHANNEL) || \
  284. ((VAL) == TSC_IOMODE_SHIELD) || \
  285. ((VAL) == TSC_IOMODE_SAMPLING))
  286. /**
  287. * @}
  288. */
  289. /** @defgroup TSC_interrupts_definition TSC interrupts definition
  290. * @{
  291. */
  292. #define TSC_IT_EOA ((uint32_t)TSC_IER_EOAIE)
  293. #define TSC_IT_MCE ((uint32_t)TSC_IER_MCEIE)
  294. #define IS_TSC_MCE_IT(VAL) (((VAL) == DISABLE) || ((VAL) == ENABLE))
  295. /**
  296. * @}
  297. */
  298. /** @defgroup TSC_flags_definition TSC Flags Definition
  299. * @{
  300. */
  301. #define TSC_FLAG_EOA ((uint32_t)TSC_ISR_EOAF)
  302. #define TSC_FLAG_MCE ((uint32_t)TSC_ISR_MCEF)
  303. /**
  304. * @}
  305. */
  306. /** @defgroup TSC_groups_definition TSC groups definition
  307. * @{
  308. */
  309. #define TSC_NB_OF_GROUPS (8)
  310. #define TSC_GROUP1 (0x00000001U)
  311. #define TSC_GROUP2 (0x00000002U)
  312. #define TSC_GROUP3 (0x00000004U)
  313. #define TSC_GROUP4 (0x00000008U)
  314. #define TSC_GROUP5 (0x00000010U)
  315. #define TSC_GROUP6 (0x00000020U)
  316. #define TSC_GROUP7 (0x00000040U)
  317. #define TSC_GROUP8 (0x00000080U)
  318. #define TSC_ALL_GROUPS (0x000000FFU)
  319. #define TSC_GROUP1_IDX (0U)
  320. #define TSC_GROUP2_IDX (1U)
  321. #define TSC_GROUP3_IDX (2U)
  322. #define TSC_GROUP4_IDX (3U)
  323. #define TSC_GROUP5_IDX (4U)
  324. #define TSC_GROUP6_IDX (5U)
  325. #define TSC_GROUP7_IDX (6U)
  326. #define TSC_GROUP8_IDX (7U)
  327. #define IS_GROUP_INDEX(VAL) (((VAL) == 0U) || (((VAL) > 0U) && ((VAL) < TSC_NB_OF_GROUPS)))
  328. #define TSC_GROUP1_IO1 (0x00000001U)
  329. #define TSC_GROUP1_IO2 (0x00000002U)
  330. #define TSC_GROUP1_IO3 (0x00000004U)
  331. #define TSC_GROUP1_IO4 (0x00000008U)
  332. #define TSC_GROUP1_ALL_IOS (0x0000000FU)
  333. #define TSC_GROUP2_IO1 (0x00000010U)
  334. #define TSC_GROUP2_IO2 (0x00000020U)
  335. #define TSC_GROUP2_IO3 (0x00000040U)
  336. #define TSC_GROUP2_IO4 (0x00000080U)
  337. #define TSC_GROUP2_ALL_IOS (0x000000F0U)
  338. #define TSC_GROUP3_IO1 (0x00000100U)
  339. #define TSC_GROUP3_IO2 (0x00000200U)
  340. #define TSC_GROUP3_IO3 (0x00000400U)
  341. #define TSC_GROUP3_IO4 (0x00000800U)
  342. #define TSC_GROUP3_ALL_IOS (0x00000F00U)
  343. #define TSC_GROUP4_IO1 (0x00001000U)
  344. #define TSC_GROUP4_IO2 (0x00002000U)
  345. #define TSC_GROUP4_IO3 (0x00004000U)
  346. #define TSC_GROUP4_IO4 (0x00008000U)
  347. #define TSC_GROUP4_ALL_IOS (0x0000F000U)
  348. #define TSC_GROUP5_IO1 (0x00010000U)
  349. #define TSC_GROUP5_IO2 (0x00020000U)
  350. #define TSC_GROUP5_IO3 (0x00040000U)
  351. #define TSC_GROUP5_IO4 (0x00080000U)
  352. #define TSC_GROUP5_ALL_IOS (0x000F0000U)
  353. #define TSC_GROUP6_IO1 (0x00100000U)
  354. #define TSC_GROUP6_IO2 (0x00200000U)
  355. #define TSC_GROUP6_IO3 (0x00400000U)
  356. #define TSC_GROUP6_IO4 (0x00800000U)
  357. #define TSC_GROUP6_ALL_IOS (0x00F00000U)
  358. #define TSC_GROUP7_IO1 (0x01000000U)
  359. #define TSC_GROUP7_IO2 (0x02000000U)
  360. #define TSC_GROUP7_IO3 (0x04000000U)
  361. #define TSC_GROUP7_IO4 (0x08000000U)
  362. #define TSC_GROUP7_ALL_IOS (0x0F000000U)
  363. #define TSC_GROUP8_IO1 (0x10000000U)
  364. #define TSC_GROUP8_IO2 (0x20000000U)
  365. #define TSC_GROUP8_IO3 (0x40000000U)
  366. #define TSC_GROUP8_IO4 (0x80000000U)
  367. #define TSC_GROUP8_ALL_IOS (0xF0000000U)
  368. #define TSC_ALL_GROUPS_ALL_IOS (0xFFFFFFFFU)
  369. /**
  370. * @}
  371. */
  372. /**
  373. * @}
  374. */
  375. /* Private macros -----------------------------------------------------------*/
  376. /** @defgroup TSC_Private_Macros TSC Private Macros
  377. * @{
  378. */
  379. /** @defgroup TSC_Spread_Spectrum TSC Spread Spectrum
  380. * @{
  381. */
  382. #define IS_TSC_SS(VAL) (((VAL) == DISABLE) || ((VAL) == ENABLE))
  383. #define IS_TSC_SSD(VAL) (((VAL) == 0U) || (((VAL) > 0U) && ((VAL) < 128U)))
  384. /**
  385. * @}
  386. */
  387. /**
  388. * @}
  389. */
  390. /* Exported macros -----------------------------------------------------------*/
  391. /** @defgroup TSC_Exported_Macros TSC Exported Macros
  392. * @{
  393. */
  394. /** @brief Reset TSC handle state
  395. * @param __HANDLE__ TSC handle.
  396. * @retval None
  397. */
  398. #define __HAL_TSC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_TSC_STATE_RESET)
  399. /**
  400. * @brief Enable the TSC peripheral.
  401. * @param __HANDLE__ TSC handle
  402. * @retval None
  403. */
  404. #define __HAL_TSC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= TSC_CR_TSCE)
  405. /**
  406. * @brief Disable the TSC peripheral.
  407. * @param __HANDLE__ TSC handle
  408. * @retval None
  409. */
  410. #define __HAL_TSC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_TSCE))
  411. /**
  412. * @brief Start acquisition
  413. * @param __HANDLE__ TSC handle
  414. * @retval None
  415. */
  416. #define __HAL_TSC_START_ACQ(__HANDLE__) ((__HANDLE__)->Instance->CR |= TSC_CR_START)
  417. /**
  418. * @brief Stop acquisition
  419. * @param __HANDLE__ TSC handle
  420. * @retval None
  421. */
  422. #define __HAL_TSC_STOP_ACQ(__HANDLE__) ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_START))
  423. /**
  424. * @brief Set IO default mode to output push-pull low
  425. * @param __HANDLE__ TSC handle
  426. * @retval None
  427. */
  428. #define __HAL_TSC_SET_IODEF_OUTPPLOW(__HANDLE__) ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_IODEF))
  429. /**
  430. * @brief Set IO default mode to input floating
  431. * @param __HANDLE__ TSC handle
  432. * @retval None
  433. */
  434. #define __HAL_TSC_SET_IODEF_INFLOAT(__HANDLE__) ((__HANDLE__)->Instance->CR |= TSC_CR_IODEF)
  435. /**
  436. * @brief Set synchronization polarity to falling edge
  437. * @param __HANDLE__ TSC handle
  438. * @retval None
  439. */
  440. #define __HAL_TSC_SET_SYNC_POL_FALL(__HANDLE__) ((__HANDLE__)->Instance->CR &= (uint32_t)(~TSC_CR_SYNCPOL))
  441. /**
  442. * @brief Set synchronization polarity to rising edge and high level
  443. * @param __HANDLE__ TSC handle
  444. * @retval None
  445. */
  446. #define __HAL_TSC_SET_SYNC_POL_RISE_HIGH(__HANDLE__) ((__HANDLE__)->Instance->CR |= TSC_CR_SYNCPOL)
  447. /**
  448. * @brief Enable TSC interrupt.
  449. * @param __HANDLE__ TSC handle
  450. * @param __INTERRUPT__ TSC interrupt
  451. * @retval None
  452. */
  453. #define __HAL_TSC_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
  454. /**
  455. * @brief Disable TSC interrupt.
  456. * @param __HANDLE__ TSC handle
  457. * @param __INTERRUPT__ TSC interrupt
  458. * @retval None
  459. */
  460. #define __HAL_TSC_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER &= (uint32_t)(~(__INTERRUPT__)))
  461. /** @brief Check if the specified TSC interrupt source is enabled or disabled.
  462. * @param __HANDLE__ TSC Handle
  463. * @param __INTERRUPT__ TSC interrupt
  464. * @retval SET or RESET
  465. */
  466. #define __HAL_TSC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
  467. /**
  468. * @brief Get the selected TSC's flag status.
  469. * @param __HANDLE__ TSC handle
  470. * @param __FLAG__ TSC flag
  471. * @retval SET or RESET
  472. */
  473. #define __HAL_TSC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
  474. /**
  475. * @brief Clear the TSC's pending flag.
  476. * @param __HANDLE__ TSC handle
  477. * @param __FLAG__ TSC flag
  478. * @retval None
  479. */
  480. #define __HAL_TSC_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
  481. /**
  482. * @brief Enable schmitt trigger hysteresis on a group of IOs
  483. * @param __HANDLE__ TSC handle
  484. * @param __GX_IOY_MASK__ IOs mask
  485. * @retval None
  486. */
  487. #define __HAL_TSC_ENABLE_HYSTERESIS(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOHCR |= (__GX_IOY_MASK__))
  488. /**
  489. * @brief Disable schmitt trigger hysteresis on a group of IOs
  490. * @param __HANDLE__ TSC handle
  491. * @param __GX_IOY_MASK__ IOs mask
  492. * @retval None
  493. */
  494. #define __HAL_TSC_DISABLE_HYSTERESIS(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOHCR &= (uint32_t)(~(__GX_IOY_MASK__)))
  495. /**
  496. * @brief Open analog switch on a group of IOs
  497. * @param __HANDLE__ TSC handle
  498. * @param __GX_IOY_MASK__ IOs mask
  499. * @retval None
  500. */
  501. #define __HAL_TSC_OPEN_ANALOG_SWITCH(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOASCR &= (uint32_t)(~(__GX_IOY_MASK__)))
  502. /**
  503. * @brief Close analog switch on a group of IOs
  504. * @param __HANDLE__ TSC handle
  505. * @param __GX_IOY_MASK__ IOs mask
  506. * @retval None
  507. */
  508. #define __HAL_TSC_CLOSE_ANALOG_SWITCH(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOASCR |= (__GX_IOY_MASK__))
  509. /**
  510. * @brief Enable a group of IOs in channel mode
  511. * @param __HANDLE__ TSC handle
  512. * @param __GX_IOY_MASK__ IOs mask
  513. * @retval None
  514. */
  515. #define __HAL_TSC_ENABLE_CHANNEL(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOCCR |= (__GX_IOY_MASK__))
  516. /**
  517. * @brief Disable a group of channel IOs
  518. * @param __HANDLE__ TSC handle
  519. * @param __GX_IOY_MASK__ IOs mask
  520. * @retval None
  521. */
  522. #define __HAL_TSC_DISABLE_CHANNEL(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOCCR &= (uint32_t)(~(__GX_IOY_MASK__)))
  523. /**
  524. * @brief Enable a group of IOs in sampling mode
  525. * @param __HANDLE__ TSC handle
  526. * @param __GX_IOY_MASK__ IOs mask
  527. * @retval None
  528. */
  529. #define __HAL_TSC_ENABLE_SAMPLING(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOSCR |= (__GX_IOY_MASK__))
  530. /**
  531. * @brief Disable a group of sampling IOs
  532. * @param __HANDLE__ TSC handle
  533. * @param __GX_IOY_MASK__ IOs mask
  534. * @retval None
  535. */
  536. #define __HAL_TSC_DISABLE_SAMPLING(__HANDLE__, __GX_IOY_MASK__) ((__HANDLE__)->Instance->IOSCR &= (uint32_t)(~(__GX_IOY_MASK__)))
  537. /**
  538. * @brief Enable acquisition groups
  539. * @param __HANDLE__ TSC handle
  540. * @param __GX_MASK__ Groups mask
  541. * @retval None
  542. */
  543. #define __HAL_TSC_ENABLE_GROUP(__HANDLE__, __GX_MASK__) ((__HANDLE__)->Instance->IOGCSR |= (__GX_MASK__))
  544. /**
  545. * @brief Disable acquisition groups
  546. * @param __HANDLE__ TSC handle
  547. * @param __GX_MASK__ Groups mask
  548. * @retval None
  549. */
  550. #define __HAL_TSC_DISABLE_GROUP(__HANDLE__, __GX_MASK__) ((__HANDLE__)->Instance->IOGCSR &= (uint32_t)(~(__GX_MASK__)))
  551. /** @brief Gets acquisition group status
  552. * @param __HANDLE__ TSC Handle
  553. * @param __GX_INDEX__ Group index
  554. * @retval SET or RESET
  555. */
  556. #define __HAL_TSC_GET_GROUP_STATUS(__HANDLE__, __GX_INDEX__) \
  557. ((((__HANDLE__)->Instance->IOGCSR & (uint32_t)((uint32_t)1 << ((__GX_INDEX__) + (uint32_t)16))) == (uint32_t)((uint32_t)1 << ((__GX_INDEX__) + (uint32_t)16))) ? TSC_GROUP_COMPLETED : TSC_GROUP_ONGOING)
  558. /**
  559. * @}
  560. */
  561. /* Exported functions --------------------------------------------------------*/
  562. /** @addtogroup TSC_Exported_Functions TSC Exported Functions
  563. * @{
  564. */
  565. /** @addtogroup TSC_Exported_Functions_Group1 Initialization/de-initialization functions
  566. * @brief Initialization and Configuration functions
  567. * @{
  568. */
  569. /* Initialization and de-initialization functions *****************************/
  570. HAL_StatusTypeDef HAL_TSC_Init(TSC_HandleTypeDef* htsc);
  571. HAL_StatusTypeDef HAL_TSC_DeInit(TSC_HandleTypeDef *htsc);
  572. void HAL_TSC_MspInit(TSC_HandleTypeDef* htsc);
  573. void HAL_TSC_MspDeInit(TSC_HandleTypeDef* htsc);
  574. /**
  575. * @}
  576. */
  577. /** @addtogroup TSC_Exported_Functions_Group2 IO operation functions
  578. * @brief IO operation functions * @{
  579. */
  580. /* IO operation functions *****************************************************/
  581. HAL_StatusTypeDef HAL_TSC_Start(TSC_HandleTypeDef* htsc);
  582. HAL_StatusTypeDef HAL_TSC_Start_IT(TSC_HandleTypeDef* htsc);
  583. HAL_StatusTypeDef HAL_TSC_Stop(TSC_HandleTypeDef* htsc);
  584. HAL_StatusTypeDef HAL_TSC_Stop_IT(TSC_HandleTypeDef* htsc);
  585. TSC_GroupStatusTypeDef HAL_TSC_GroupGetStatus(TSC_HandleTypeDef* htsc, uint32_t gx_index);
  586. uint32_t HAL_TSC_GroupGetValue(TSC_HandleTypeDef* htsc, uint32_t gx_index);
  587. /**
  588. * @}
  589. */
  590. /** @addtogroup TSC_Exported_Functions_Group3 Peripheral Control functions
  591. * @brief Peripheral Control functions
  592. * @{
  593. */
  594. /* Peripheral Control functions ***********************************************/
  595. HAL_StatusTypeDef HAL_TSC_IOConfig(TSC_HandleTypeDef* htsc, TSC_IOConfigTypeDef* config);
  596. HAL_StatusTypeDef HAL_TSC_IODischarge(TSC_HandleTypeDef* htsc, uint32_t choice);
  597. /**
  598. * @}
  599. */
  600. /** @addtogroup TSC_Exported_Functions_Group4 State functions
  601. * @brief State functions
  602. * @{
  603. */
  604. /* Peripheral State and Error functions ***************************************/
  605. HAL_TSC_StateTypeDef HAL_TSC_GetState(TSC_HandleTypeDef* htsc);
  606. HAL_StatusTypeDef HAL_TSC_PollForAcquisition(TSC_HandleTypeDef* htsc);
  607. void HAL_TSC_IRQHandler(TSC_HandleTypeDef* htsc);
  608. /**
  609. * @}
  610. */
  611. /** @addtogroup TSC_Exported_Functions_Group5 Callback functions
  612. * @brief Callback functions
  613. * @{
  614. */
  615. /* Callback functions *********************************************************/
  616. void HAL_TSC_ConvCpltCallback(TSC_HandleTypeDef* htsc);
  617. void HAL_TSC_ErrorCallback(TSC_HandleTypeDef* htsc);
  618. /**
  619. * @}
  620. */
  621. /**
  622. * @}
  623. */
  624. /**
  625. * @}
  626. */
  627. /**
  628. * @}
  629. */
  630. #endif /* defined(STM32F051x8) || defined(STM32F071xB) || defined(STM32F091xC) || */
  631. /* defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F072xB) || */
  632. /* defined(STM32F058xx) || defined(STM32F078xx) || defined(STM32F098xx) */
  633. #ifdef __cplusplus
  634. }
  635. #endif
  636. #endif /*__STM32F0xx_TSC_H */
  637. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/