Hal Drivers for L4

Dependents:   BSP OneHopeOnePrayer FINAL_AUDIO_RECORD AudioDemo

Fork of STM32L4xx_HAL_Driver by Senior Design: Sound Monitor

Committer:
EricLew
Date:
Wed Nov 25 17:30:43 2015 +0000
Revision:
2:7aef7655b0a8
Parent:
0:80ee8f3b695e
commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EricLew 0:80ee8f3b695e 1 /**
EricLew 0:80ee8f3b695e 2 ******************************************************************************
EricLew 0:80ee8f3b695e 3 * @file stm32l4xx_hal_lptim.h
EricLew 0:80ee8f3b695e 4 * @author MCD Application Team
EricLew 0:80ee8f3b695e 5 * @version V1.1.0
EricLew 0:80ee8f3b695e 6 * @date 16-September-2015
EricLew 0:80ee8f3b695e 7 * @brief Header file of LPTIM HAL module.
EricLew 0:80ee8f3b695e 8 ******************************************************************************
EricLew 0:80ee8f3b695e 9 * @attention
EricLew 0:80ee8f3b695e 10 *
EricLew 0:80ee8f3b695e 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
EricLew 0:80ee8f3b695e 12 *
EricLew 0:80ee8f3b695e 13 * Redistribution and use in source and binary forms, with or without modification,
EricLew 0:80ee8f3b695e 14 * are permitted provided that the following conditions are met:
EricLew 0:80ee8f3b695e 15 * 1. Redistributions of source code must retain the above copyright notice,
EricLew 0:80ee8f3b695e 16 * this list of conditions and the following disclaimer.
EricLew 0:80ee8f3b695e 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
EricLew 0:80ee8f3b695e 18 * this list of conditions and the following disclaimer in the documentation
EricLew 0:80ee8f3b695e 19 * and/or other materials provided with the distribution.
EricLew 0:80ee8f3b695e 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
EricLew 0:80ee8f3b695e 21 * may be used to endorse or promote products derived from this software
EricLew 0:80ee8f3b695e 22 * without specific prior written permission.
EricLew 0:80ee8f3b695e 23 *
EricLew 0:80ee8f3b695e 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
EricLew 0:80ee8f3b695e 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
EricLew 0:80ee8f3b695e 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
EricLew 0:80ee8f3b695e 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
EricLew 0:80ee8f3b695e 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
EricLew 0:80ee8f3b695e 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
EricLew 0:80ee8f3b695e 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
EricLew 0:80ee8f3b695e 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
EricLew 0:80ee8f3b695e 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
EricLew 0:80ee8f3b695e 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
EricLew 0:80ee8f3b695e 34 *
EricLew 0:80ee8f3b695e 35 ******************************************************************************
EricLew 0:80ee8f3b695e 36 */
EricLew 0:80ee8f3b695e 37
EricLew 0:80ee8f3b695e 38 /* Define to prevent recursive inclusion -------------------------------------*/
EricLew 0:80ee8f3b695e 39 #ifndef __STM32L4xx_HAL_LPTIM_H
EricLew 0:80ee8f3b695e 40 #define __STM32L4xx_HAL_LPTIM_H
EricLew 0:80ee8f3b695e 41
EricLew 0:80ee8f3b695e 42 #ifdef __cplusplus
EricLew 0:80ee8f3b695e 43 extern "C" {
EricLew 0:80ee8f3b695e 44 #endif
EricLew 0:80ee8f3b695e 45
EricLew 0:80ee8f3b695e 46 /* Includes ------------------------------------------------------------------*/
EricLew 0:80ee8f3b695e 47 #include "stm32l4xx_hal_def.h"
EricLew 0:80ee8f3b695e 48
EricLew 0:80ee8f3b695e 49 /** @addtogroup STM32L4xx_HAL_Driver
EricLew 0:80ee8f3b695e 50 * @{
EricLew 0:80ee8f3b695e 51 */
EricLew 0:80ee8f3b695e 52
EricLew 0:80ee8f3b695e 53 /** @addtogroup LPTIM
EricLew 0:80ee8f3b695e 54 * @{
EricLew 0:80ee8f3b695e 55 */
EricLew 0:80ee8f3b695e 56
EricLew 0:80ee8f3b695e 57 /* Exported types ------------------------------------------------------------*/
EricLew 0:80ee8f3b695e 58 /** @defgroup LPTIM_Exported_Types LPTIM Exported Types
EricLew 0:80ee8f3b695e 59 * @{
EricLew 0:80ee8f3b695e 60 */
EricLew 0:80ee8f3b695e 61
EricLew 0:80ee8f3b695e 62 /**
EricLew 0:80ee8f3b695e 63 * @brief LPTIM Clock configuration definition
EricLew 0:80ee8f3b695e 64 */
EricLew 0:80ee8f3b695e 65 typedef struct
EricLew 0:80ee8f3b695e 66 {
EricLew 0:80ee8f3b695e 67 uint32_t Source; /*!< Selects the clock source.
EricLew 0:80ee8f3b695e 68 This parameter can be a value of @ref LPTIM_Clock_Source */
EricLew 0:80ee8f3b695e 69
EricLew 0:80ee8f3b695e 70 uint32_t Prescaler; /*!< Specifies the counter clock Prescaler.
EricLew 0:80ee8f3b695e 71 This parameter can be a value of @ref LPTIM_Clock_Prescaler */
EricLew 0:80ee8f3b695e 72
EricLew 0:80ee8f3b695e 73 }LPTIM_ClockConfigTypeDef;
EricLew 0:80ee8f3b695e 74
EricLew 0:80ee8f3b695e 75 /**
EricLew 0:80ee8f3b695e 76 * @brief LPTIM Clock configuration definition
EricLew 0:80ee8f3b695e 77 */
EricLew 0:80ee8f3b695e 78 typedef struct
EricLew 0:80ee8f3b695e 79 {
EricLew 0:80ee8f3b695e 80 uint32_t Polarity; /*!< Selects the polarity of the active edge for the counter unit
EricLew 0:80ee8f3b695e 81 if the ULPTIM input is selected.
EricLew 0:80ee8f3b695e 82 Note: This parameter is used only when Ultra low power clock source is used.
EricLew 0:80ee8f3b695e 83 Note: If the polarity is configured on 'both edges', an auxiliary clock
EricLew 0:80ee8f3b695e 84 (one of the Low power oscillator) must be active.
EricLew 0:80ee8f3b695e 85 This parameter can be a value of @ref LPTIM_Clock_Polarity */
EricLew 0:80ee8f3b695e 86
EricLew 0:80ee8f3b695e 87 uint32_t SampleTime; /*!< Selects the clock sampling time to configure the clock glitch filter.
EricLew 0:80ee8f3b695e 88 Note: This parameter is used only when Ultra low power clock source is used.
EricLew 0:80ee8f3b695e 89 This parameter can be a value of @ref LPTIM_Clock_Sample_Time */
EricLew 0:80ee8f3b695e 90
EricLew 0:80ee8f3b695e 91 }LPTIM_ULPClockConfigTypeDef;
EricLew 0:80ee8f3b695e 92
EricLew 0:80ee8f3b695e 93 /**
EricLew 0:80ee8f3b695e 94 * @brief LPTIM Trigger configuration definition
EricLew 0:80ee8f3b695e 95 */
EricLew 0:80ee8f3b695e 96 typedef struct
EricLew 0:80ee8f3b695e 97 {
EricLew 0:80ee8f3b695e 98 uint32_t Source; /*!< Selects the Trigger source.
EricLew 0:80ee8f3b695e 99 This parameter can be a value of @ref LPTIM_Trigger_Source */
EricLew 0:80ee8f3b695e 100
EricLew 0:80ee8f3b695e 101 uint32_t ActiveEdge; /*!< Selects the Trigger active edge.
EricLew 0:80ee8f3b695e 102 Note: This parameter is used only when an external trigger is used.
EricLew 0:80ee8f3b695e 103 This parameter can be a value of @ref LPTIM_External_Trigger_Polarity */
EricLew 0:80ee8f3b695e 104
EricLew 0:80ee8f3b695e 105 uint32_t SampleTime; /*!< Selects the trigger sampling time to configure the clock glitch filter.
EricLew 0:80ee8f3b695e 106 Note: This parameter is used only when an external trigger is used.
EricLew 0:80ee8f3b695e 107 This parameter can be a value of @ref LPTIM_Trigger_Sample_Time */
EricLew 0:80ee8f3b695e 108 }LPTIM_TriggerConfigTypeDef;
EricLew 0:80ee8f3b695e 109
EricLew 0:80ee8f3b695e 110 /**
EricLew 0:80ee8f3b695e 111 * @brief LPTIM Initialization Structure definition
EricLew 0:80ee8f3b695e 112 */
EricLew 0:80ee8f3b695e 113 typedef struct
EricLew 0:80ee8f3b695e 114 {
EricLew 0:80ee8f3b695e 115 LPTIM_ClockConfigTypeDef Clock; /*!< Specifies the clock parameters */
EricLew 0:80ee8f3b695e 116
EricLew 0:80ee8f3b695e 117 LPTIM_ULPClockConfigTypeDef UltraLowPowerClock; /*!< Specifies the Ultra Low Power clock parameters */
EricLew 0:80ee8f3b695e 118
EricLew 0:80ee8f3b695e 119 LPTIM_TriggerConfigTypeDef Trigger; /*!< Specifies the Trigger parameters */
EricLew 0:80ee8f3b695e 120
EricLew 0:80ee8f3b695e 121 uint32_t OutputPolarity; /*!< Specifies the Output polarity.
EricLew 0:80ee8f3b695e 122 This parameter can be a value of @ref LPTIM_Output_Polarity */
EricLew 0:80ee8f3b695e 123
EricLew 0:80ee8f3b695e 124 uint32_t UpdateMode; /*!< Specifies whether the update of the autoreload and the compare
EricLew 0:80ee8f3b695e 125 values is done immediately or after the end of current period.
EricLew 0:80ee8f3b695e 126 This parameter can be a value of @ref LPTIM_Updating_Mode */
EricLew 0:80ee8f3b695e 127
EricLew 0:80ee8f3b695e 128 uint32_t CounterSource; /*!< Specifies whether the counter is incremented each internal event
EricLew 0:80ee8f3b695e 129 or each external event.
EricLew 0:80ee8f3b695e 130 This parameter can be a value of @ref LPTIM_Counter_Source */
EricLew 0:80ee8f3b695e 131
EricLew 0:80ee8f3b695e 132 uint32_t Input1Source; /*!< Specifies source selected for input1 (GPIO or comparator output).
EricLew 0:80ee8f3b695e 133 This parameter can be a value of @ref LPTIM_Input1_Source */
EricLew 0:80ee8f3b695e 134
EricLew 0:80ee8f3b695e 135 uint32_t Input2Source; /*!< Specifies source selected for input2 (GPIO or comparator output).
EricLew 0:80ee8f3b695e 136 Note: This parameter is used only for encoder feature so is used only
EricLew 0:80ee8f3b695e 137 for LPTIM1 instance.
EricLew 0:80ee8f3b695e 138 This parameter can be a value of @ref LPTIM_Input2_Source */
EricLew 0:80ee8f3b695e 139
EricLew 0:80ee8f3b695e 140 }LPTIM_InitTypeDef;
EricLew 0:80ee8f3b695e 141
EricLew 0:80ee8f3b695e 142 /**
EricLew 0:80ee8f3b695e 143 * @brief HAL LPTIM State structure definition
EricLew 0:80ee8f3b695e 144 */
EricLew 0:80ee8f3b695e 145 typedef enum __HAL_LPTIM_StateTypeDef
EricLew 0:80ee8f3b695e 146 {
EricLew 0:80ee8f3b695e 147 HAL_LPTIM_STATE_RESET = 0x00, /*!< Peripheral not yet initialized or disabled */
EricLew 0:80ee8f3b695e 148 HAL_LPTIM_STATE_READY = 0x01, /*!< Peripheral Initialized and ready for use */
EricLew 0:80ee8f3b695e 149 HAL_LPTIM_STATE_BUSY = 0x02, /*!< An internal process is ongoing */
EricLew 0:80ee8f3b695e 150 HAL_LPTIM_STATE_TIMEOUT = 0x03, /*!< Timeout state */
EricLew 0:80ee8f3b695e 151 HAL_LPTIM_STATE_ERROR = 0x04 /*!< Internal Process is ongoing */
EricLew 0:80ee8f3b695e 152 }HAL_LPTIM_StateTypeDef;
EricLew 0:80ee8f3b695e 153
EricLew 0:80ee8f3b695e 154 /**
EricLew 0:80ee8f3b695e 155 * @brief LPTIM handle Structure definition
EricLew 0:80ee8f3b695e 156 */
EricLew 0:80ee8f3b695e 157 typedef struct
EricLew 0:80ee8f3b695e 158 {
EricLew 0:80ee8f3b695e 159 LPTIM_TypeDef *Instance; /*!< Register base address */
EricLew 0:80ee8f3b695e 160
EricLew 0:80ee8f3b695e 161 LPTIM_InitTypeDef Init; /*!< LPTIM required parameters */
EricLew 0:80ee8f3b695e 162
EricLew 0:80ee8f3b695e 163 HAL_StatusTypeDef Status; /*!< LPTIM peripheral status */
EricLew 0:80ee8f3b695e 164
EricLew 0:80ee8f3b695e 165 HAL_LockTypeDef Lock; /*!< LPTIM locking object */
EricLew 0:80ee8f3b695e 166
EricLew 0:80ee8f3b695e 167 __IO HAL_LPTIM_StateTypeDef State; /*!< LPTIM peripheral state */
EricLew 0:80ee8f3b695e 168
EricLew 0:80ee8f3b695e 169 }LPTIM_HandleTypeDef;
EricLew 0:80ee8f3b695e 170
EricLew 0:80ee8f3b695e 171 /**
EricLew 0:80ee8f3b695e 172 * @}
EricLew 0:80ee8f3b695e 173 */
EricLew 0:80ee8f3b695e 174
EricLew 0:80ee8f3b695e 175 /* Exported constants --------------------------------------------------------*/
EricLew 0:80ee8f3b695e 176 /** @defgroup LPTIM_Exported_Constants LPTIM Exported Constants
EricLew 0:80ee8f3b695e 177 * @{
EricLew 0:80ee8f3b695e 178 */
EricLew 0:80ee8f3b695e 179
EricLew 0:80ee8f3b695e 180 /** @defgroup LPTIM_Clock_Source LPTIM Clock Source
EricLew 0:80ee8f3b695e 181 * @{
EricLew 0:80ee8f3b695e 182 */
EricLew 0:80ee8f3b695e 183 #define LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC ((uint32_t)0x00)
EricLew 0:80ee8f3b695e 184 #define LPTIM_CLOCKSOURCE_ULPTIM LPTIM_CFGR_CKSEL
EricLew 0:80ee8f3b695e 185 /**
EricLew 0:80ee8f3b695e 186 * @}
EricLew 0:80ee8f3b695e 187 */
EricLew 0:80ee8f3b695e 188
EricLew 0:80ee8f3b695e 189 /** @defgroup LPTIM_Clock_Prescaler LPTIM Clock Prescaler
EricLew 0:80ee8f3b695e 190 * @{
EricLew 0:80ee8f3b695e 191 */
EricLew 0:80ee8f3b695e 192 #define LPTIM_PRESCALER_DIV1 ((uint32_t)0x000000)
EricLew 0:80ee8f3b695e 193 #define LPTIM_PRESCALER_DIV2 LPTIM_CFGR_PRESC_0
EricLew 0:80ee8f3b695e 194 #define LPTIM_PRESCALER_DIV4 LPTIM_CFGR_PRESC_1
EricLew 0:80ee8f3b695e 195 #define LPTIM_PRESCALER_DIV8 ((uint32_t)(LPTIM_CFGR_PRESC_0 | LPTIM_CFGR_PRESC_1))
EricLew 0:80ee8f3b695e 196 #define LPTIM_PRESCALER_DIV16 LPTIM_CFGR_PRESC_2
EricLew 0:80ee8f3b695e 197 #define LPTIM_PRESCALER_DIV32 ((uint32_t)(LPTIM_CFGR_PRESC_0 | LPTIM_CFGR_PRESC_2))
EricLew 0:80ee8f3b695e 198 #define LPTIM_PRESCALER_DIV64 ((uint32_t)(LPTIM_CFGR_PRESC_1 | LPTIM_CFGR_PRESC_2))
EricLew 0:80ee8f3b695e 199 #define LPTIM_PRESCALER_DIV128 ((uint32_t)LPTIM_CFGR_PRESC)
EricLew 0:80ee8f3b695e 200 /**
EricLew 0:80ee8f3b695e 201 * @}
EricLew 0:80ee8f3b695e 202 */
EricLew 0:80ee8f3b695e 203
EricLew 0:80ee8f3b695e 204 /** @defgroup LPTIM_Output_Polarity LPTIM Output Polarity
EricLew 0:80ee8f3b695e 205 * @{
EricLew 0:80ee8f3b695e 206 */
EricLew 0:80ee8f3b695e 207
EricLew 0:80ee8f3b695e 208 #define LPTIM_OUTPUTPOLARITY_HIGH ((uint32_t)0x00000000)
EricLew 0:80ee8f3b695e 209 #define LPTIM_OUTPUTPOLARITY_LOW (LPTIM_CFGR_WAVPOL)
EricLew 0:80ee8f3b695e 210 /**
EricLew 0:80ee8f3b695e 211 * @}
EricLew 0:80ee8f3b695e 212 */
EricLew 0:80ee8f3b695e 213
EricLew 0:80ee8f3b695e 214 /** @defgroup LPTIM_Clock_Sample_Time LPTIM Clock Sample Time
EricLew 0:80ee8f3b695e 215 * @{
EricLew 0:80ee8f3b695e 216 */
EricLew 0:80ee8f3b695e 217 #define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION ((uint32_t)0x00000000)
EricLew 0:80ee8f3b695e 218 #define LPTIM_CLOCKSAMPLETIME_2TRANSITIONS LPTIM_CFGR_CKFLT_0
EricLew 0:80ee8f3b695e 219 #define LPTIM_CLOCKSAMPLETIME_4TRANSITIONS LPTIM_CFGR_CKFLT_1
EricLew 0:80ee8f3b695e 220 #define LPTIM_CLOCKSAMPLETIME_8TRANSITIONS LPTIM_CFGR_CKFLT
EricLew 0:80ee8f3b695e 221 /**
EricLew 0:80ee8f3b695e 222 * @}
EricLew 0:80ee8f3b695e 223 */
EricLew 0:80ee8f3b695e 224
EricLew 0:80ee8f3b695e 225 /** @defgroup LPTIM_Clock_Polarity LPTIM Clock Polarity
EricLew 0:80ee8f3b695e 226 * @{
EricLew 0:80ee8f3b695e 227 */
EricLew 0:80ee8f3b695e 228 #define LPTIM_CLOCKPOLARITY_RISING ((uint32_t)0x00000000)
EricLew 0:80ee8f3b695e 229 #define LPTIM_CLOCKPOLARITY_FALLING LPTIM_CFGR_CKPOL_0
EricLew 0:80ee8f3b695e 230 #define LPTIM_CLOCKPOLARITY_RISING_FALLING LPTIM_CFGR_CKPOL_1
EricLew 0:80ee8f3b695e 231 /**
EricLew 0:80ee8f3b695e 232 * @}
EricLew 0:80ee8f3b695e 233 */
EricLew 0:80ee8f3b695e 234
EricLew 0:80ee8f3b695e 235 /** @defgroup LPTIM_Trigger_Source LPTIM Trigger Source
EricLew 0:80ee8f3b695e 236 * @{
EricLew 0:80ee8f3b695e 237 */
EricLew 0:80ee8f3b695e 238 #define LPTIM_TRIGSOURCE_SOFTWARE ((uint32_t)0x0000FFFF)
EricLew 0:80ee8f3b695e 239 #define LPTIM_TRIGSOURCE_0 ((uint32_t)0x00000000)
EricLew 0:80ee8f3b695e 240 #define LPTIM_TRIGSOURCE_1 ((uint32_t)LPTIM_CFGR_TRIGSEL_0)
EricLew 0:80ee8f3b695e 241 #define LPTIM_TRIGSOURCE_2 LPTIM_CFGR_TRIGSEL_1
EricLew 0:80ee8f3b695e 242 #define LPTIM_TRIGSOURCE_3 ((uint32_t)LPTIM_CFGR_TRIGSEL_0 | LPTIM_CFGR_TRIGSEL_1)
EricLew 0:80ee8f3b695e 243 #define LPTIM_TRIGSOURCE_4 LPTIM_CFGR_TRIGSEL_2
EricLew 0:80ee8f3b695e 244 #define LPTIM_TRIGSOURCE_5 ((uint32_t)LPTIM_CFGR_TRIGSEL_0 | LPTIM_CFGR_TRIGSEL_2)
EricLew 0:80ee8f3b695e 245 #define LPTIM_TRIGSOURCE_6 ((uint32_t)LPTIM_CFGR_TRIGSEL_1 | LPTIM_CFGR_TRIGSEL_2)
EricLew 0:80ee8f3b695e 246 #define LPTIM_TRIGSOURCE_7 LPTIM_CFGR_TRIGSEL
EricLew 0:80ee8f3b695e 247 /**
EricLew 0:80ee8f3b695e 248 * @}
EricLew 0:80ee8f3b695e 249 */
EricLew 0:80ee8f3b695e 250
EricLew 0:80ee8f3b695e 251 /** @defgroup LPTIM_External_Trigger_Polarity LPTIM External Trigger Polarity
EricLew 0:80ee8f3b695e 252 * @{
EricLew 0:80ee8f3b695e 253 */
EricLew 0:80ee8f3b695e 254 #define LPTIM_ACTIVEEDGE_RISING LPTIM_CFGR_TRIGEN_0
EricLew 0:80ee8f3b695e 255 #define LPTIM_ACTIVEEDGE_FALLING LPTIM_CFGR_TRIGEN_1
EricLew 0:80ee8f3b695e 256 #define LPTIM_ACTIVEEDGE_RISING_FALLING LPTIM_CFGR_TRIGEN
EricLew 0:80ee8f3b695e 257 /**
EricLew 0:80ee8f3b695e 258 * @}
EricLew 0:80ee8f3b695e 259 */
EricLew 0:80ee8f3b695e 260
EricLew 0:80ee8f3b695e 261 /** @defgroup LPTIM_Trigger_Sample_Time LPTIM Trigger Sample Time
EricLew 0:80ee8f3b695e 262 * @{
EricLew 0:80ee8f3b695e 263 */
EricLew 0:80ee8f3b695e 264 #define LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION ((uint32_t)0x00000000)
EricLew 0:80ee8f3b695e 265 #define LPTIM_TRIGSAMPLETIME_2TRANSITIONS LPTIM_CFGR_TRGFLT_0
EricLew 0:80ee8f3b695e 266 #define LPTIM_TRIGSAMPLETIME_4TRANSITIONS LPTIM_CFGR_TRGFLT_1
EricLew 0:80ee8f3b695e 267 #define LPTIM_TRIGSAMPLETIME_8TRANSITIONS LPTIM_CFGR_TRGFLT
EricLew 0:80ee8f3b695e 268 /**
EricLew 0:80ee8f3b695e 269 * @}
EricLew 0:80ee8f3b695e 270 */
EricLew 0:80ee8f3b695e 271
EricLew 0:80ee8f3b695e 272 /** @defgroup LPTIM_Updating_Mode LPTIM Updating Mode
EricLew 0:80ee8f3b695e 273 * @{
EricLew 0:80ee8f3b695e 274 */
EricLew 0:80ee8f3b695e 275
EricLew 0:80ee8f3b695e 276 #define LPTIM_UPDATE_IMMEDIATE ((uint32_t)0x00000000)
EricLew 0:80ee8f3b695e 277 #define LPTIM_UPDATE_ENDOFPERIOD LPTIM_CFGR_PRELOAD
EricLew 0:80ee8f3b695e 278 /**
EricLew 0:80ee8f3b695e 279 * @}
EricLew 0:80ee8f3b695e 280 */
EricLew 0:80ee8f3b695e 281
EricLew 0:80ee8f3b695e 282 /** @defgroup LPTIM_Counter_Source LPTIM Counter Source
EricLew 0:80ee8f3b695e 283 * @{
EricLew 0:80ee8f3b695e 284 */
EricLew 0:80ee8f3b695e 285
EricLew 0:80ee8f3b695e 286 #define LPTIM_COUNTERSOURCE_INTERNAL ((uint32_t)0x00000000)
EricLew 0:80ee8f3b695e 287 #define LPTIM_COUNTERSOURCE_EXTERNAL LPTIM_CFGR_COUNTMODE
EricLew 0:80ee8f3b695e 288 /**
EricLew 0:80ee8f3b695e 289 * @}
EricLew 0:80ee8f3b695e 290 */
EricLew 0:80ee8f3b695e 291
EricLew 0:80ee8f3b695e 292 /** @defgroup LPTIM_Input1_Source LPTIM Input1 Source
EricLew 0:80ee8f3b695e 293 * @{
EricLew 0:80ee8f3b695e 294 */
EricLew 0:80ee8f3b695e 295
EricLew 0:80ee8f3b695e 296 #define LPTIM_INPUT1SOURCE_GPIO ((uint32_t)0x00000000) /*!< For LPTIM1 and LPTIM2 */
EricLew 0:80ee8f3b695e 297 #define LPTIM_INPUT1SOURCE_COMP1 LPTIM_OR_OR_0 /*!< For LPTIM1 and LPTIM2 */
EricLew 0:80ee8f3b695e 298 #define LPTIM_INPUT1SOURCE_COMP2 LPTIM_OR_OR_1 /*!< For LPTIM2 */
EricLew 0:80ee8f3b695e 299 #define LPTIM_INPUT1SOURCE_COMP1_COMP2 LPTIM_OR_OR /*!< For LPTIM2 */
EricLew 0:80ee8f3b695e 300 /**
EricLew 0:80ee8f3b695e 301 * @}
EricLew 0:80ee8f3b695e 302 */
EricLew 0:80ee8f3b695e 303
EricLew 0:80ee8f3b695e 304 /** @defgroup LPTIM_Input2_Source LPTIM Input2 Source
EricLew 0:80ee8f3b695e 305 * @{
EricLew 0:80ee8f3b695e 306 */
EricLew 0:80ee8f3b695e 307
EricLew 0:80ee8f3b695e 308 #define LPTIM_INPUT2SOURCE_GPIO ((uint32_t)0x00000000) /*!< For LPTIM1 */
EricLew 0:80ee8f3b695e 309 #define LPTIM_INPUT2SOURCE_COMP2 LPTIM_OR_OR_1 /*!< For LPTIM1 */
EricLew 0:80ee8f3b695e 310 /**
EricLew 0:80ee8f3b695e 311 * @}
EricLew 0:80ee8f3b695e 312 */
EricLew 0:80ee8f3b695e 313
EricLew 0:80ee8f3b695e 314 /** @defgroup LPTIM_Flag_Definition LPTIM Flags Definition
EricLew 0:80ee8f3b695e 315 * @{
EricLew 0:80ee8f3b695e 316 */
EricLew 0:80ee8f3b695e 317
EricLew 0:80ee8f3b695e 318 #define LPTIM_FLAG_DOWN LPTIM_ISR_DOWN
EricLew 0:80ee8f3b695e 319 #define LPTIM_FLAG_UP LPTIM_ISR_UP
EricLew 0:80ee8f3b695e 320 #define LPTIM_FLAG_ARROK LPTIM_ISR_ARROK
EricLew 0:80ee8f3b695e 321 #define LPTIM_FLAG_CMPOK LPTIM_ISR_CMPOK
EricLew 0:80ee8f3b695e 322 #define LPTIM_FLAG_EXTTRIG LPTIM_ISR_EXTTRIG
EricLew 0:80ee8f3b695e 323 #define LPTIM_FLAG_ARRM LPTIM_ISR_ARRM
EricLew 0:80ee8f3b695e 324 #define LPTIM_FLAG_CMPM LPTIM_ISR_CMPM
EricLew 0:80ee8f3b695e 325 /**
EricLew 0:80ee8f3b695e 326 * @}
EricLew 0:80ee8f3b695e 327 */
EricLew 0:80ee8f3b695e 328
EricLew 0:80ee8f3b695e 329 /** @defgroup LPTIM_Interrupts_Definition LPTIM Interrupts Definition
EricLew 0:80ee8f3b695e 330 * @{
EricLew 0:80ee8f3b695e 331 */
EricLew 0:80ee8f3b695e 332
EricLew 0:80ee8f3b695e 333 #define LPTIM_IT_DOWN LPTIM_IER_DOWNIE
EricLew 0:80ee8f3b695e 334 #define LPTIM_IT_UP LPTIM_IER_UPIE
EricLew 0:80ee8f3b695e 335 #define LPTIM_IT_ARROK LPTIM_IER_ARROKIE
EricLew 0:80ee8f3b695e 336 #define LPTIM_IT_CMPOK LPTIM_IER_CMPOKIE
EricLew 0:80ee8f3b695e 337 #define LPTIM_IT_EXTTRIG LPTIM_IER_EXTTRIGIE
EricLew 0:80ee8f3b695e 338 #define LPTIM_IT_ARRM LPTIM_IER_ARRMIE
EricLew 0:80ee8f3b695e 339 #define LPTIM_IT_CMPM LPTIM_IER_CMPMIE
EricLew 0:80ee8f3b695e 340 /**
EricLew 0:80ee8f3b695e 341 * @}
EricLew 0:80ee8f3b695e 342 */
EricLew 0:80ee8f3b695e 343
EricLew 0:80ee8f3b695e 344 /**
EricLew 0:80ee8f3b695e 345 * @}
EricLew 0:80ee8f3b695e 346 */
EricLew 0:80ee8f3b695e 347
EricLew 0:80ee8f3b695e 348 /* Exported macros -----------------------------------------------------------*/
EricLew 0:80ee8f3b695e 349 /** @defgroup LPTIM_Exported_Macros LPTIM Exported Macros
EricLew 0:80ee8f3b695e 350 * @{
EricLew 0:80ee8f3b695e 351 */
EricLew 0:80ee8f3b695e 352
EricLew 0:80ee8f3b695e 353 /** @brief Reset LPTIM handle state.
EricLew 0:80ee8f3b695e 354 * @param __HANDLE__: LPTIM handle
EricLew 0:80ee8f3b695e 355 * @retval None
EricLew 0:80ee8f3b695e 356 */
EricLew 0:80ee8f3b695e 357 #define __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_LPTIM_STATE_RESET)
EricLew 0:80ee8f3b695e 358
EricLew 0:80ee8f3b695e 359 /**
EricLew 0:80ee8f3b695e 360 * @brief Enable the LPTIM peripheral.
EricLew 0:80ee8f3b695e 361 * @param __HANDLE__: LPTIM handle
EricLew 0:80ee8f3b695e 362 * @retval None
EricLew 0:80ee8f3b695e 363 */
EricLew 0:80ee8f3b695e 364 #define __HAL_LPTIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (LPTIM_CR_ENABLE))
EricLew 0:80ee8f3b695e 365
EricLew 0:80ee8f3b695e 366 /**
EricLew 0:80ee8f3b695e 367 * @brief Disable the LPTIM peripheral.
EricLew 0:80ee8f3b695e 368 * @param __HANDLE__: LPTIM handle
EricLew 0:80ee8f3b695e 369 * @retval None
EricLew 0:80ee8f3b695e 370 */
EricLew 0:80ee8f3b695e 371 #define __HAL_LPTIM_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(LPTIM_CR_ENABLE))
EricLew 0:80ee8f3b695e 372
EricLew 0:80ee8f3b695e 373 /**
EricLew 0:80ee8f3b695e 374 * @brief Start the LPTIM peripheral in Continuous or in single mode.
EricLew 0:80ee8f3b695e 375 * @param __HANDLE__: DMA handle
EricLew 0:80ee8f3b695e 376 * @retval None
EricLew 0:80ee8f3b695e 377 */
EricLew 0:80ee8f3b695e 378 #define __HAL_LPTIM_START_CONTINUOUS(__HANDLE__) ((__HANDLE__)->Instance->CR |= LPTIM_CR_CNTSTRT)
EricLew 0:80ee8f3b695e 379 #define __HAL_LPTIM_START_SINGLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= LPTIM_CR_SNGSTRT)
EricLew 0:80ee8f3b695e 380
EricLew 0:80ee8f3b695e 381
EricLew 0:80ee8f3b695e 382 /**
EricLew 0:80ee8f3b695e 383 * @brief Write the passed parameter in the Autoreload register.
EricLew 0:80ee8f3b695e 384 * @param __HANDLE__: LPTIM handle
EricLew 0:80ee8f3b695e 385 * @param __VALUE__: Autoreload value
EricLew 0:80ee8f3b695e 386 * @retval None
EricLew 0:80ee8f3b695e 387 */
EricLew 0:80ee8f3b695e 388 #define __HAL_LPTIM_AUTORELOAD_SET(__HANDLE__ , __VALUE__) ((__HANDLE__)->Instance->ARR = (__VALUE__))
EricLew 0:80ee8f3b695e 389
EricLew 0:80ee8f3b695e 390 /**
EricLew 0:80ee8f3b695e 391 * @brief Write the passed parameter in the Compare register.
EricLew 0:80ee8f3b695e 392 * @param __HANDLE__: LPTIM handle
EricLew 0:80ee8f3b695e 393 * @param __VALUE__: Compare value
EricLew 0:80ee8f3b695e 394 * @retval None
EricLew 0:80ee8f3b695e 395 */
EricLew 0:80ee8f3b695e 396 #define __HAL_LPTIM_COMPARE_SET(__HANDLE__ , __VALUE__) ((__HANDLE__)->Instance->CMP = (__VALUE__))
EricLew 0:80ee8f3b695e 397
EricLew 0:80ee8f3b695e 398 /**
EricLew 0:80ee8f3b695e 399 * @brief Check whether the specified LPTIM flag is set or not.
EricLew 0:80ee8f3b695e 400 * @param __HANDLE__: LPTIM handle
EricLew 0:80ee8f3b695e 401 * @param __FLAG__: LPTIM flag to check
EricLew 0:80ee8f3b695e 402 * This parameter can be a value of:
EricLew 0:80ee8f3b695e 403 * @arg LPTIM_FLAG_DOWN : Counter direction change up Flag.
EricLew 0:80ee8f3b695e 404 * @arg LPTIM_FLAG_UP : Counter direction change down to up Flag.
EricLew 0:80ee8f3b695e 405 * @arg LPTIM_FLAG_ARROK : Autoreload register update OK Flag.
EricLew 0:80ee8f3b695e 406 * @arg LPTIM_FLAG_CMPOK : Compare register update OK Flag.
EricLew 0:80ee8f3b695e 407 * @arg LPTIM_FLAG_EXTTRIG : External trigger edge event Flag.
EricLew 0:80ee8f3b695e 408 * @arg LPTIM_FLAG_ARRM : Autoreload match Flag.
EricLew 0:80ee8f3b695e 409 * @arg LPTIM_FLAG_CMPM : Compare match Flag.
EricLew 0:80ee8f3b695e 410 * @retval The state of the specified flag (SET or RESET).
EricLew 0:80ee8f3b695e 411 */
EricLew 0:80ee8f3b695e 412 #define __HAL_LPTIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR &(__FLAG__)) == (__FLAG__))
EricLew 0:80ee8f3b695e 413
EricLew 0:80ee8f3b695e 414 /**
EricLew 0:80ee8f3b695e 415 * @brief Clear the specified LPTIM flag.
EricLew 0:80ee8f3b695e 416 * @param __HANDLE__: LPTIM handle.
EricLew 0:80ee8f3b695e 417 * @param __FLAG__: LPTIM flag to clear.
EricLew 0:80ee8f3b695e 418 * This parameter can be a value of:
EricLew 0:80ee8f3b695e 419 * @arg LPTIM_FLAG_DOWN : Counter direction change up Flag.
EricLew 0:80ee8f3b695e 420 * @arg LPTIM_FLAG_UP : Counter direction change down to up Flag.
EricLew 0:80ee8f3b695e 421 * @arg LPTIM_FLAG_ARROK : Autoreload register update OK Flag.
EricLew 0:80ee8f3b695e 422 * @arg LPTIM_FLAG_CMPOK : Compare register update OK Flag.
EricLew 0:80ee8f3b695e 423 * @arg LPTIM_FLAG_EXTTRIG : External trigger edge event Flag.
EricLew 0:80ee8f3b695e 424 * @arg LPTIM_FLAG_ARRM : Autoreload match Flag.
EricLew 0:80ee8f3b695e 425 * @arg LPTIM_FLAG_CMPM : Compare match Flag.
EricLew 0:80ee8f3b695e 426 * @retval None
EricLew 0:80ee8f3b695e 427 */
EricLew 0:80ee8f3b695e 428 #define __HAL_LPTIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
EricLew 0:80ee8f3b695e 429
EricLew 0:80ee8f3b695e 430 /**
EricLew 0:80ee8f3b695e 431 * @brief Enable the specified LPTIM interrupt.
EricLew 0:80ee8f3b695e 432 * @param __HANDLE__: LPTIM handle.
EricLew 0:80ee8f3b695e 433 * @param __INTERRUPT__: LPTIM interrupt to set.
EricLew 0:80ee8f3b695e 434 * This parameter can be a value of:
EricLew 0:80ee8f3b695e 435 * @arg LPTIM_IT_DOWN : Counter direction change up Interrupt.
EricLew 0:80ee8f3b695e 436 * @arg LPTIM_IT_UP : Counter direction change down to up Interrupt.
EricLew 0:80ee8f3b695e 437 * @arg LPTIM_IT_ARROK : Autoreload register update OK Interrupt.
EricLew 0:80ee8f3b695e 438 * @arg LPTIM_IT_CMPOK : Compare register update OK Interrupt.
EricLew 0:80ee8f3b695e 439 * @arg LPTIM_IT_EXTTRIG : External trigger edge event Interrupt.
EricLew 0:80ee8f3b695e 440 * @arg LPTIM_IT_ARRM : Autoreload match Interrupt.
EricLew 0:80ee8f3b695e 441 * @arg LPTIM_IT_CMPM : Compare match Interrupt.
EricLew 0:80ee8f3b695e 442 * @retval None
EricLew 0:80ee8f3b695e 443 */
EricLew 0:80ee8f3b695e 444 #define __HAL_LPTIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
EricLew 0:80ee8f3b695e 445
EricLew 0:80ee8f3b695e 446 /**
EricLew 0:80ee8f3b695e 447 * @brief Disable the specified LPTIM interrupt.
EricLew 0:80ee8f3b695e 448 * @param __HANDLE__: LPTIM handle.
EricLew 0:80ee8f3b695e 449 * @param __INTERRUPT__: LPTIM interrupt to set.
EricLew 0:80ee8f3b695e 450 * This parameter can be a value of:
EricLew 0:80ee8f3b695e 451 * @arg LPTIM_IT_DOWN : Counter direction change up Interrupt.
EricLew 0:80ee8f3b695e 452 * @arg LPTIM_IT_UP : Counter direction change down to up Interrupt.
EricLew 0:80ee8f3b695e 453 * @arg LPTIM_IT_ARROK : Autoreload register update OK Interrupt.
EricLew 0:80ee8f3b695e 454 * @arg LPTIM_IT_CMPOK : Compare register update OK Interrupt.
EricLew 0:80ee8f3b695e 455 * @arg LPTIM_IT_EXTTRIG : External trigger edge event Interrupt.
EricLew 0:80ee8f3b695e 456 * @arg LPTIM_IT_ARRM : Autoreload match Interrupt.
EricLew 0:80ee8f3b695e 457 * @arg LPTIM_IT_CMPM : Compare match Interrupt.
EricLew 0:80ee8f3b695e 458 * @retval None
EricLew 0:80ee8f3b695e 459 */
EricLew 0:80ee8f3b695e 460 #define __HAL_LPTIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER &= (~(__INTERRUPT__)))
EricLew 0:80ee8f3b695e 461
EricLew 0:80ee8f3b695e 462 /**
EricLew 0:80ee8f3b695e 463 * @brief Check whether the specified LPTIM interrupt source is enabled or not.
EricLew 0:80ee8f3b695e 464 * @param __HANDLE__: LPTIM handle.
EricLew 0:80ee8f3b695e 465 * @param __INTERRUPT__: LPTIM interrupt to check.
EricLew 0:80ee8f3b695e 466 * This parameter can be a value of:
EricLew 0:80ee8f3b695e 467 * @arg LPTIM_IT_DOWN : Counter direction change up Interrupt.
EricLew 0:80ee8f3b695e 468 * @arg LPTIM_IT_UP : Counter direction change down to up Interrupt.
EricLew 0:80ee8f3b695e 469 * @arg LPTIM_IT_ARROK : Autoreload register update OK Interrupt.
EricLew 0:80ee8f3b695e 470 * @arg LPTIM_IT_CMPOK : Compare register update OK Interrupt.
EricLew 0:80ee8f3b695e 471 * @arg LPTIM_IT_EXTTRIG : External trigger edge event Interrupt.
EricLew 0:80ee8f3b695e 472 * @arg LPTIM_IT_ARRM : Autoreload match Interrupt.
EricLew 0:80ee8f3b695e 473 * @arg LPTIM_IT_CMPM : Compare match Interrupt.
EricLew 0:80ee8f3b695e 474 * @retval Interrupt status.
EricLew 0:80ee8f3b695e 475 */
EricLew 0:80ee8f3b695e 476
EricLew 0:80ee8f3b695e 477 #define __HAL_LPTIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
EricLew 0:80ee8f3b695e 478
EricLew 0:80ee8f3b695e 479 /**
EricLew 0:80ee8f3b695e 480 * @}
EricLew 0:80ee8f3b695e 481 */
EricLew 0:80ee8f3b695e 482
EricLew 0:80ee8f3b695e 483 /* Exported functions --------------------------------------------------------*/
EricLew 0:80ee8f3b695e 484 /** @defgroup LPTIM_Exported_Functions LPTIM Exported Functions
EricLew 0:80ee8f3b695e 485 * @{
EricLew 0:80ee8f3b695e 486 */
EricLew 0:80ee8f3b695e 487
EricLew 0:80ee8f3b695e 488 /* Initialization/de-initialization functions ********************************/
EricLew 0:80ee8f3b695e 489 HAL_StatusTypeDef HAL_LPTIM_Init(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 490 HAL_StatusTypeDef HAL_LPTIM_DeInit(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 491
EricLew 0:80ee8f3b695e 492 /* MSP functions *************************************************************/
EricLew 0:80ee8f3b695e 493 void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 494 void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 495
EricLew 0:80ee8f3b695e 496 /* Start/Stop operation functions *********************************************/
EricLew 0:80ee8f3b695e 497 /* ################################# PWM Mode ################################*/
EricLew 0:80ee8f3b695e 498 /* Blocking mode: Polling */
EricLew 0:80ee8f3b695e 499 HAL_StatusTypeDef HAL_LPTIM_PWM_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
EricLew 0:80ee8f3b695e 500 HAL_StatusTypeDef HAL_LPTIM_PWM_Stop(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 501 /* Non-Blocking mode: Interrupt */
EricLew 0:80ee8f3b695e 502 HAL_StatusTypeDef HAL_LPTIM_PWM_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
EricLew 0:80ee8f3b695e 503 HAL_StatusTypeDef HAL_LPTIM_PWM_Stop_IT(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 504
EricLew 0:80ee8f3b695e 505 /* ############################# One Pulse Mode ##############################*/
EricLew 0:80ee8f3b695e 506 /* Blocking mode: Polling */
EricLew 0:80ee8f3b695e 507 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
EricLew 0:80ee8f3b695e 508 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Stop(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 509 /* Non-Blocking mode: Interrupt */
EricLew 0:80ee8f3b695e 510 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
EricLew 0:80ee8f3b695e 511 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Stop_IT(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 512
EricLew 0:80ee8f3b695e 513 /* ############################## Set once Mode ##############################*/
EricLew 0:80ee8f3b695e 514 /* Blocking mode: Polling */
EricLew 0:80ee8f3b695e 515 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
EricLew 0:80ee8f3b695e 516 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Stop(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 517 /* Non-Blocking mode: Interrupt */
EricLew 0:80ee8f3b695e 518 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
EricLew 0:80ee8f3b695e 519 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Stop_IT(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 520
EricLew 0:80ee8f3b695e 521 /* ############################### Encoder Mode ##############################*/
EricLew 0:80ee8f3b695e 522 /* Blocking mode: Polling */
EricLew 0:80ee8f3b695e 523 HAL_StatusTypeDef HAL_LPTIM_Encoder_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
EricLew 0:80ee8f3b695e 524 HAL_StatusTypeDef HAL_LPTIM_Encoder_Stop(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 525 /* Non-Blocking mode: Interrupt */
EricLew 0:80ee8f3b695e 526 HAL_StatusTypeDef HAL_LPTIM_Encoder_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
EricLew 0:80ee8f3b695e 527 HAL_StatusTypeDef HAL_LPTIM_Encoder_Stop_IT(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 528
EricLew 0:80ee8f3b695e 529 /* ############################# Time out Mode ##############################*/
EricLew 0:80ee8f3b695e 530 /* Blocking mode: Polling */
EricLew 0:80ee8f3b695e 531 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout);
EricLew 0:80ee8f3b695e 532 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Stop(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 533 /* Non-Blocking mode: Interrupt */
EricLew 0:80ee8f3b695e 534 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout);
EricLew 0:80ee8f3b695e 535 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Stop_IT(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 536
EricLew 0:80ee8f3b695e 537 /* ############################## Counter Mode ###############################*/
EricLew 0:80ee8f3b695e 538 /* Blocking mode: Polling */
EricLew 0:80ee8f3b695e 539 HAL_StatusTypeDef HAL_LPTIM_Counter_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
EricLew 0:80ee8f3b695e 540 HAL_StatusTypeDef HAL_LPTIM_Counter_Stop(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 541 /* Non-Blocking mode: Interrupt */
EricLew 0:80ee8f3b695e 542 HAL_StatusTypeDef HAL_LPTIM_Counter_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
EricLew 0:80ee8f3b695e 543 HAL_StatusTypeDef HAL_LPTIM_Counter_Stop_IT(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 544
EricLew 0:80ee8f3b695e 545 /* Reading operation functions ************************************************/
EricLew 0:80ee8f3b695e 546 uint32_t HAL_LPTIM_ReadCounter(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 547 uint32_t HAL_LPTIM_ReadAutoReload(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 548 uint32_t HAL_LPTIM_ReadCompare(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 549
EricLew 0:80ee8f3b695e 550 /* LPTIM IRQ functions *******************************************************/
EricLew 0:80ee8f3b695e 551 void HAL_LPTIM_IRQHandler(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 552
EricLew 0:80ee8f3b695e 553 /* CallBack functions ********************************************************/
EricLew 0:80ee8f3b695e 554 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 555 void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 556 void HAL_LPTIM_TriggerCallback(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 557 void HAL_LPTIM_CompareWriteCallback(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 558 void HAL_LPTIM_AutoReloadWriteCallback(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 559 void HAL_LPTIM_DirectionUpCallback(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 560 void HAL_LPTIM_DirectionDownCallback(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 561
EricLew 0:80ee8f3b695e 562 /* Peripheral State functions ************************************************/
EricLew 0:80ee8f3b695e 563 HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(LPTIM_HandleTypeDef *hlptim);
EricLew 0:80ee8f3b695e 564
EricLew 0:80ee8f3b695e 565 /**
EricLew 0:80ee8f3b695e 566 * @}
EricLew 0:80ee8f3b695e 567 */
EricLew 0:80ee8f3b695e 568
EricLew 0:80ee8f3b695e 569 /* Private types -------------------------------------------------------------*/
EricLew 0:80ee8f3b695e 570 /** @defgroup LPTIM_Private_Types LPTIM Private Types
EricLew 0:80ee8f3b695e 571 * @{
EricLew 0:80ee8f3b695e 572 */
EricLew 0:80ee8f3b695e 573
EricLew 0:80ee8f3b695e 574 /**
EricLew 0:80ee8f3b695e 575 * @}
EricLew 0:80ee8f3b695e 576 */
EricLew 0:80ee8f3b695e 577
EricLew 0:80ee8f3b695e 578 /* Private variables ---------------------------------------------------------*/
EricLew 0:80ee8f3b695e 579 /** @defgroup LPTIM_Private_Variables LPTIM Private Variables
EricLew 0:80ee8f3b695e 580 * @{
EricLew 0:80ee8f3b695e 581 */
EricLew 0:80ee8f3b695e 582
EricLew 0:80ee8f3b695e 583 /**
EricLew 0:80ee8f3b695e 584 * @}
EricLew 0:80ee8f3b695e 585 */
EricLew 0:80ee8f3b695e 586
EricLew 0:80ee8f3b695e 587 /* Private constants ---------------------------------------------------------*/
EricLew 0:80ee8f3b695e 588 /** @defgroup LPTIM_Private_Constants LPTIM Private Constants
EricLew 0:80ee8f3b695e 589 * @{
EricLew 0:80ee8f3b695e 590 */
EricLew 0:80ee8f3b695e 591
EricLew 0:80ee8f3b695e 592 /**
EricLew 0:80ee8f3b695e 593 * @}
EricLew 0:80ee8f3b695e 594 */
EricLew 0:80ee8f3b695e 595
EricLew 0:80ee8f3b695e 596 /* Private macros ------------------------------------------------------------*/
EricLew 0:80ee8f3b695e 597 /** @defgroup LPTIM_Private_Macros LPTIM Private Macros
EricLew 0:80ee8f3b695e 598 * @{
EricLew 0:80ee8f3b695e 599 */
EricLew 0:80ee8f3b695e 600
EricLew 0:80ee8f3b695e 601 #define IS_LPTIM_CLOCK_SOURCE(__SOURCE__) (((__SOURCE__) == LPTIM_CLOCKSOURCE_ULPTIM) || \
EricLew 0:80ee8f3b695e 602 ((__SOURCE__) == LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC))
EricLew 0:80ee8f3b695e 603
EricLew 0:80ee8f3b695e 604
EricLew 0:80ee8f3b695e 605 #define IS_LPTIM_CLOCK_PRESCALER(__PRESCALER__) (((__PRESCALER__) == LPTIM_PRESCALER_DIV1 ) || \
EricLew 0:80ee8f3b695e 606 ((__PRESCALER__) == LPTIM_PRESCALER_DIV2 ) || \
EricLew 0:80ee8f3b695e 607 ((__PRESCALER__) == LPTIM_PRESCALER_DIV4 ) || \
EricLew 0:80ee8f3b695e 608 ((__PRESCALER__) == LPTIM_PRESCALER_DIV8 ) || \
EricLew 0:80ee8f3b695e 609 ((__PRESCALER__) == LPTIM_PRESCALER_DIV16 ) || \
EricLew 0:80ee8f3b695e 610 ((__PRESCALER__) == LPTIM_PRESCALER_DIV32 ) || \
EricLew 0:80ee8f3b695e 611 ((__PRESCALER__) == LPTIM_PRESCALER_DIV64 ) || \
EricLew 0:80ee8f3b695e 612 ((__PRESCALER__) == LPTIM_PRESCALER_DIV128))
EricLew 0:80ee8f3b695e 613
EricLew 0:80ee8f3b695e 614 #define IS_LPTIM_CLOCK_PRESCALERDIV1(__PRESCALER__) ((__PRESCALER__) == LPTIM_PRESCALER_DIV1)
EricLew 0:80ee8f3b695e 615
EricLew 0:80ee8f3b695e 616 #define IS_LPTIM_OUTPUT_POLARITY(__POLARITY__) (((__POLARITY__) == LPTIM_OUTPUTPOLARITY_LOW ) || \
EricLew 0:80ee8f3b695e 617 ((__POLARITY__) == LPTIM_OUTPUTPOLARITY_HIGH))
EricLew 0:80ee8f3b695e 618
EricLew 0:80ee8f3b695e 619 #define IS_LPTIM_CLOCK_SAMPLE_TIME(__SAMPLETIME__) (((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION) || \
EricLew 0:80ee8f3b695e 620 ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_2TRANSITIONS) || \
EricLew 0:80ee8f3b695e 621 ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_4TRANSITIONS) || \
EricLew 0:80ee8f3b695e 622 ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_8TRANSITIONS))
EricLew 0:80ee8f3b695e 623
EricLew 0:80ee8f3b695e 624 #define IS_LPTIM_CLOCK_POLARITY(__POLARITY__) (((__POLARITY__) == LPTIM_CLOCKPOLARITY_RISING) || \
EricLew 0:80ee8f3b695e 625 ((__POLARITY__) == LPTIM_CLOCKPOLARITY_FALLING) || \
EricLew 0:80ee8f3b695e 626 ((__POLARITY__) == LPTIM_CLOCKPOLARITY_RISING_FALLING))
EricLew 0:80ee8f3b695e 627
EricLew 0:80ee8f3b695e 628 #define IS_LPTIM_TRG_SOURCE(__TRIG__) (((__TRIG__) == LPTIM_TRIGSOURCE_SOFTWARE) || \
EricLew 0:80ee8f3b695e 629 ((__TRIG__) == LPTIM_TRIGSOURCE_0) || \
EricLew 0:80ee8f3b695e 630 ((__TRIG__) == LPTIM_TRIGSOURCE_1) || \
EricLew 0:80ee8f3b695e 631 ((__TRIG__) == LPTIM_TRIGSOURCE_2) || \
EricLew 0:80ee8f3b695e 632 ((__TRIG__) == LPTIM_TRIGSOURCE_3) || \
EricLew 0:80ee8f3b695e 633 ((__TRIG__) == LPTIM_TRIGSOURCE_4) || \
EricLew 0:80ee8f3b695e 634 ((__TRIG__) == LPTIM_TRIGSOURCE_5) || \
EricLew 0:80ee8f3b695e 635 ((__TRIG__) == LPTIM_TRIGSOURCE_6) || \
EricLew 0:80ee8f3b695e 636 ((__TRIG__) == LPTIM_TRIGSOURCE_7))
EricLew 0:80ee8f3b695e 637
EricLew 0:80ee8f3b695e 638 #define IS_LPTIM_EXT_TRG_POLARITY(__POLARITY__) (((__POLARITY__) == LPTIM_ACTIVEEDGE_RISING ) || \
EricLew 0:80ee8f3b695e 639 ((__POLARITY__) == LPTIM_ACTIVEEDGE_FALLING ) || \
EricLew 0:80ee8f3b695e 640 ((__POLARITY__) == LPTIM_ACTIVEEDGE_RISING_FALLING ))
EricLew 0:80ee8f3b695e 641
EricLew 0:80ee8f3b695e 642 #define IS_LPTIM_TRIG_SAMPLE_TIME(__SAMPLETIME__) (((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION) || \
EricLew 0:80ee8f3b695e 643 ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_2TRANSITIONS ) || \
EricLew 0:80ee8f3b695e 644 ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_4TRANSITIONS ) || \
EricLew 0:80ee8f3b695e 645 ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_8TRANSITIONS ))
EricLew 0:80ee8f3b695e 646
EricLew 0:80ee8f3b695e 647 #define IS_LPTIM_UPDATE_MODE(__MODE__) (((__MODE__) == LPTIM_UPDATE_IMMEDIATE) || \
EricLew 0:80ee8f3b695e 648 ((__MODE__) == LPTIM_UPDATE_ENDOFPERIOD))
EricLew 0:80ee8f3b695e 649
EricLew 0:80ee8f3b695e 650 #define IS_LPTIM_COUNTER_SOURCE(__SOURCE__) (((__SOURCE__) == LPTIM_COUNTERSOURCE_INTERNAL) || \
EricLew 0:80ee8f3b695e 651 ((__SOURCE__) == LPTIM_COUNTERSOURCE_EXTERNAL))
EricLew 0:80ee8f3b695e 652
EricLew 0:80ee8f3b695e 653 #define IS_LPTIM_AUTORELOAD(__AUTORELOAD__) ((__AUTORELOAD__) <= 0x0000FFFF)
EricLew 0:80ee8f3b695e 654
EricLew 0:80ee8f3b695e 655 #define IS_LPTIM_COMPARE(__COMPARE__) ((__COMPARE__) <= 0x0000FFFF)
EricLew 0:80ee8f3b695e 656
EricLew 0:80ee8f3b695e 657 #define IS_LPTIM_PERIOD(__PERIOD__) ((__PERIOD__) <= 0x0000FFFF)
EricLew 0:80ee8f3b695e 658
EricLew 0:80ee8f3b695e 659 #define IS_LPTIM_PULSE(__PULSE__) ((__PULSE__) <= 0x0000FFFF)
EricLew 0:80ee8f3b695e 660
EricLew 0:80ee8f3b695e 661 #define IS_LPTIM_INPUT1_SOURCE(__INSTANCE__, __SOURCE__) \
EricLew 0:80ee8f3b695e 662 ((((__INSTANCE__) == LPTIM1) && \
EricLew 0:80ee8f3b695e 663 (((__SOURCE__) == LPTIM_INPUT1SOURCE_GPIO) || \
EricLew 0:80ee8f3b695e 664 ((__SOURCE__) == LPTIM_INPUT1SOURCE_COMP1))) \
EricLew 0:80ee8f3b695e 665 || \
EricLew 0:80ee8f3b695e 666 (((__INSTANCE__) == LPTIM2) && \
EricLew 0:80ee8f3b695e 667 (((__SOURCE__) == LPTIM_INPUT1SOURCE_GPIO) || \
EricLew 0:80ee8f3b695e 668 ((__SOURCE__) == LPTIM_INPUT1SOURCE_COMP1) || \
EricLew 0:80ee8f3b695e 669 ((__SOURCE__) == LPTIM_INPUT1SOURCE_COMP2) || \
EricLew 0:80ee8f3b695e 670 ((__SOURCE__) == LPTIM_INPUT1SOURCE_COMP1_COMP2))))
EricLew 0:80ee8f3b695e 671
EricLew 0:80ee8f3b695e 672 #define IS_LPTIM_INPUT2_SOURCE(__INSTANCE__, __SOURCE__) \
EricLew 0:80ee8f3b695e 673 (((__INSTANCE__) == LPTIM1) && \
EricLew 0:80ee8f3b695e 674 (((__SOURCE__) == LPTIM_INPUT2SOURCE_GPIO) || \
EricLew 0:80ee8f3b695e 675 ((__SOURCE__) == LPTIM_INPUT2SOURCE_COMP2)))
EricLew 0:80ee8f3b695e 676
EricLew 0:80ee8f3b695e 677 /**
EricLew 0:80ee8f3b695e 678 * @}
EricLew 0:80ee8f3b695e 679 */
EricLew 0:80ee8f3b695e 680
EricLew 0:80ee8f3b695e 681 /* Private functions ---------------------------------------------------------*/
EricLew 0:80ee8f3b695e 682 /** @defgroup LPTIM_Private_Functions LPTIM Private Functions
EricLew 0:80ee8f3b695e 683 * @{
EricLew 0:80ee8f3b695e 684 */
EricLew 0:80ee8f3b695e 685
EricLew 0:80ee8f3b695e 686 /**
EricLew 0:80ee8f3b695e 687 * @}
EricLew 0:80ee8f3b695e 688 */
EricLew 0:80ee8f3b695e 689
EricLew 0:80ee8f3b695e 690 /**
EricLew 0:80ee8f3b695e 691 * @}
EricLew 0:80ee8f3b695e 692 */
EricLew 0:80ee8f3b695e 693
EricLew 0:80ee8f3b695e 694 /**
EricLew 0:80ee8f3b695e 695 * @}
EricLew 0:80ee8f3b695e 696 */
EricLew 0:80ee8f3b695e 697
EricLew 0:80ee8f3b695e 698 #ifdef __cplusplus
EricLew 0:80ee8f3b695e 699 }
EricLew 0:80ee8f3b695e 700 #endif
EricLew 0:80ee8f3b695e 701
EricLew 0:80ee8f3b695e 702 #endif /* __STM32L4xx_HAL_LPTIM_H */
EricLew 0:80ee8f3b695e 703
EricLew 0:80ee8f3b695e 704 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
EricLew 0:80ee8f3b695e 705