mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

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

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

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

Import librarymbed

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

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

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

Initial version of drivers for SAMR21

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 376:cb4d9db17537 1 /**
mbed_official 376:cb4d9db17537 2 ******************************************************************************
mbed_official 376:cb4d9db17537 3 * @file stm32l0xx_hal_tim.c
mbed_official 376:cb4d9db17537 4 * @author MCD Application Team
mbed_official 489:119543c9f674 5 * @version V1.2.0
mbed_official 489:119543c9f674 6 * @date 06-February-2015
mbed_official 376:cb4d9db17537 7 * @brief TIM HAL module driver.
mbed_official 376:cb4d9db17537 8 * @brief This file provides firmware functions to manage the following
mbed_official 376:cb4d9db17537 9 * functionalities of the Timer (TIM) peripheral:
mbed_official 489:119543c9f674 10 * + Timer Base Initialization
mbed_official 489:119543c9f674 11 * + Timer Base Start
mbed_official 489:119543c9f674 12 * + Timer Base Start Interruption
mbed_official 489:119543c9f674 13 * + Timer Base Start DMA
mbed_official 489:119543c9f674 14 * + Timer Output Compare/PWM Initialization
mbed_official 489:119543c9f674 15 * + Timer Output Compare/PWM Channel Configuration
mbed_official 489:119543c9f674 16 * + Timer Output Compare/PWM Start
mbed_official 489:119543c9f674 17 * + Timer Output Compare/PWM Start Interruption
mbed_official 489:119543c9f674 18 * + Timer Output Compare/PWM Start DMA
mbed_official 489:119543c9f674 19 * + Timer Input Capture Initialization
mbed_official 489:119543c9f674 20 * + Timer Input Capture Channel Configuration
mbed_official 489:119543c9f674 21 * + Timer Input Capture Start
mbed_official 489:119543c9f674 22 * + Timer Input Capture Start Interruption
mbed_official 489:119543c9f674 23 * + Timer Input Capture Start DMA
mbed_official 489:119543c9f674 24 * + Timer One Pulse Initialization
mbed_official 489:119543c9f674 25 * + Timer One Pulse Channel Configuration
mbed_official 489:119543c9f674 26 * + Timer One Pulse Start
mbed_official 489:119543c9f674 27 * + Timer Encoder Interface Initialization
mbed_official 489:119543c9f674 28 * + Timer Encoder Interface Start
mbed_official 489:119543c9f674 29 * + Timer Encoder Interface Start Interruption
mbed_official 489:119543c9f674 30 * + Timer Encoder Interface Start DMA
mbed_official 489:119543c9f674 31 * + Timer OCRef clear configuration
mbed_official 489:119543c9f674 32 * + Timer External Clock configuration
mbed_official 489:119543c9f674 33 * + Timer Complementary signal bread and dead time configuration
mbed_official 489:119543c9f674 34 * + Timer Master and Slave synchronization configuration
mbed_official 376:cb4d9db17537 35 @verbatim
mbed_official 376:cb4d9db17537 36 ==============================================================================
mbed_official 376:cb4d9db17537 37 ##### TIMER Generic features #####
mbed_official 376:cb4d9db17537 38 ==============================================================================
mbed_official 376:cb4d9db17537 39 [..] The Timer features include:
mbed_official 376:cb4d9db17537 40 (#) 16-bit up, down, up/down auto-reload counter.
mbed_official 376:cb4d9db17537 41 (#) 16-bit programmable prescaler allowing dividing (also on the fly) the counter clock
mbed_official 376:cb4d9db17537 42 frequency either by any factor between 1 and 65536.
mbed_official 376:cb4d9db17537 43 (#) Up to 4 independent channels for:
mbed_official 376:cb4d9db17537 44 (++) Input Capture
mbed_official 376:cb4d9db17537 45 (++) Output Compare
mbed_official 376:cb4d9db17537 46 (++) PWM generation (Edge and Center-aligned Mode)
mbed_official 376:cb4d9db17537 47 (++) One-pulse mode output
mbed_official 376:cb4d9db17537 48 (#) Synchronization circuit to control the timer with external signals and to interconnect
mbed_official 376:cb4d9db17537 49 several timers together.
mbed_official 376:cb4d9db17537 50 (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for positioning
mbed_official 376:cb4d9db17537 51 purposes
mbed_official 376:cb4d9db17537 52
mbed_official 376:cb4d9db17537 53 ##### How to use this driver #####
mbed_official 376:cb4d9db17537 54 ================================================================================
mbed_official 376:cb4d9db17537 55 [..]
mbed_official 489:119543c9f674 56 (#) Initialize the TIM low level resources by implementing the following functions
mbed_official 489:119543c9f674 57 depending from feature used :
mbed_official 489:119543c9f674 58 (++) Time Base : HAL_TIM_Base_MspInit()
mbed_official 489:119543c9f674 59 (++) Input Capture : HAL_TIM_IC_MspInit()
mbed_official 489:119543c9f674 60 (++) Output Compare : HAL_TIM_OC_MspInit()
mbed_official 489:119543c9f674 61 (++) PWM generation : HAL_TIM_PWM_MspInit()
mbed_official 489:119543c9f674 62 (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit()
mbed_official 489:119543c9f674 63 (++) Encoder mode output : HAL_TIM_Encoder_MspInit()
mbed_official 489:119543c9f674 64
mbed_official 489:119543c9f674 65 (#) Initialize the TIM low level resources :
mbed_official 489:119543c9f674 66 (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE();
mbed_official 489:119543c9f674 67 (##) TIM pins configuration
mbed_official 489:119543c9f674 68 (+++) Enable the clock for the TIM GPIOs using the following function:
mbed_official 489:119543c9f674 69 __HAL_RCC_GPIOx_CLK_ENABLE();
mbed_official 489:119543c9f674 70 (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();
mbed_official 376:cb4d9db17537 71
mbed_official 376:cb4d9db17537 72 (#) The external Clock can be configured, if needed (the default clock is the internal clock from the APBx),
mbed_official 376:cb4d9db17537 73 using the following function:
mbed_official 376:cb4d9db17537 74 HAL_TIM_ConfigClockSource, the clock configuration should be done before any start function.
mbed_official 376:cb4d9db17537 75
mbed_official 376:cb4d9db17537 76 (#) Configure the TIM in the desired functioning mode using one of the
mbed_official 376:cb4d9db17537 77 initialization function of this driver:
mbed_official 376:cb4d9db17537 78 (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base
mbed_official 376:cb4d9db17537 79 (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an
mbed_official 376:cb4d9db17537 80 Output Compare signal.
mbed_official 376:cb4d9db17537 81 (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a
mbed_official 376:cb4d9db17537 82 PWM signal.
mbed_official 376:cb4d9db17537 83 (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an
mbed_official 376:cb4d9db17537 84 external signal.
mbed_official 376:cb4d9db17537 85 (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer in One Pulse Mode.
mbed_official 376:cb4d9db17537 86 (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface.
mbed_official 376:cb4d9db17537 87
mbed_official 376:cb4d9db17537 88 (#) Activate the TIM peripheral using one of the start functions:
mbed_official 376:cb4d9db17537 89 HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT(),
mbed_official 376:cb4d9db17537 90 HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT(),
mbed_official 376:cb4d9db17537 91 HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT(),
mbed_official 376:cb4d9db17537 92 HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT(),
mbed_official 376:cb4d9db17537 93 HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT(),
mbed_official 376:cb4d9db17537 94 HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA() or HAL_TIM_Encoder_Start_IT()
mbed_official 376:cb4d9db17537 95
mbed_official 376:cb4d9db17537 96 (#) The DMA Burst is managed with the two following functions:
mbed_official 376:cb4d9db17537 97 HAL_TIM_DMABurst_WriteStart
mbed_official 376:cb4d9db17537 98 HAL_TIM_DMABurst_ReadStart
mbed_official 376:cb4d9db17537 99
mbed_official 376:cb4d9db17537 100 @endverbatim
mbed_official 376:cb4d9db17537 101 ******************************************************************************
mbed_official 376:cb4d9db17537 102 * @attention
mbed_official 376:cb4d9db17537 103 *
mbed_official 489:119543c9f674 104 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 376:cb4d9db17537 105 *
mbed_official 376:cb4d9db17537 106 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 376:cb4d9db17537 107 * are permitted provided that the following conditions are met:
mbed_official 376:cb4d9db17537 108 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 376:cb4d9db17537 109 * this list of conditions and the following disclaimer.
mbed_official 376:cb4d9db17537 110 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 376:cb4d9db17537 111 * this list of conditions and the following disclaimer in the documentation
mbed_official 376:cb4d9db17537 112 * and/or other materials provided with the distribution.
mbed_official 376:cb4d9db17537 113 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 376:cb4d9db17537 114 * may be used to endorse or promote products derived from this software
mbed_official 376:cb4d9db17537 115 * without specific prior written permission.
mbed_official 376:cb4d9db17537 116 *
mbed_official 376:cb4d9db17537 117 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 376:cb4d9db17537 118 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 376:cb4d9db17537 119 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 376:cb4d9db17537 120 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 376:cb4d9db17537 121 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 376:cb4d9db17537 122 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 376:cb4d9db17537 123 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 376:cb4d9db17537 124 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 376:cb4d9db17537 125 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 376:cb4d9db17537 126 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 376:cb4d9db17537 127 *
mbed_official 376:cb4d9db17537 128 ******************************************************************************
mbed_official 376:cb4d9db17537 129 */
mbed_official 376:cb4d9db17537 130
mbed_official 376:cb4d9db17537 131 /* Includes ------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 132 #include "stm32l0xx_hal.h"
mbed_official 376:cb4d9db17537 133
mbed_official 376:cb4d9db17537 134 /** @addtogroup STM32L0xx_HAL_Driver
mbed_official 376:cb4d9db17537 135 * @{
mbed_official 376:cb4d9db17537 136 */
mbed_official 376:cb4d9db17537 137
mbed_official 489:119543c9f674 138 /** @addtogroup TIM
mbed_official 376:cb4d9db17537 139 * @brief TIM HAL module driver
mbed_official 376:cb4d9db17537 140 * @{
mbed_official 376:cb4d9db17537 141 */
mbed_official 376:cb4d9db17537 142
mbed_official 376:cb4d9db17537 143 #ifdef HAL_TIM_MODULE_ENABLED
mbed_official 376:cb4d9db17537 144
mbed_official 376:cb4d9db17537 145 /* Private typedef -----------------------------------------------------------*/
mbed_official 376:cb4d9db17537 146 /* Private define ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 147 /* Private macro -------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 148 /* Private variables ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 149 /* Private function prototypes -----------------------------------------------*/
mbed_official 376:cb4d9db17537 150 static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
mbed_official 376:cb4d9db17537 151 static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
mbed_official 376:cb4d9db17537 152 static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
mbed_official 376:cb4d9db17537 153 static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
mbed_official 376:cb4d9db17537 154 static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
mbed_official 376:cb4d9db17537 155 static void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
mbed_official 376:cb4d9db17537 156 static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);
mbed_official 376:cb4d9db17537 157 static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
mbed_official 376:cb4d9db17537 158 static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter);
mbed_official 376:cb4d9db17537 159 static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
mbed_official 376:cb4d9db17537 160 static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
mbed_official 376:cb4d9db17537 161 static void TIM_ETR_SetConfig(TIM_TypeDef* TIMx, uint32_t TIM_ExtTRGPrescaler, uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter);
mbed_official 489:119543c9f674 162 static void TIM_ITRx_SetConfig(TIM_TypeDef* TIMx, uint16_t InputTriggerSource);
mbed_official 376:cb4d9db17537 163 static void TIM_CCxChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelState);
mbed_official 376:cb4d9db17537 164 static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma);
mbed_official 376:cb4d9db17537 165 static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
mbed_official 489:119543c9f674 166 static void TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,TIM_SlaveConfigTypeDef * sSlaveConfig);
mbed_official 489:119543c9f674 167
mbed_official 489:119543c9f674 168 /*******************************************************************************/
mbed_official 489:119543c9f674 169 /* Exported functions ---------------------------------------------------------*/
mbed_official 489:119543c9f674 170 /*******************************************************************************/
mbed_official 489:119543c9f674 171
mbed_official 489:119543c9f674 172 /** @addtogroup TIM_Exported_Functions
mbed_official 376:cb4d9db17537 173 * @{
mbed_official 376:cb4d9db17537 174 */
mbed_official 376:cb4d9db17537 175
mbed_official 489:119543c9f674 176 /** @addtogroup TIM_Exported_Functions_Group1
mbed_official 489:119543c9f674 177 * @brief Time Base functions
mbed_official 376:cb4d9db17537 178 *
mbed_official 376:cb4d9db17537 179 @verbatim
mbed_official 489:119543c9f674 180 ==============================================================================
mbed_official 489:119543c9f674 181 ##### Timer Base functions #####
mbed_official 489:119543c9f674 182 ==============================================================================
mbed_official 489:119543c9f674 183 [..]
mbed_official 489:119543c9f674 184 This section provides functions allowing to:
mbed_official 489:119543c9f674 185 (+) Initialize and configure the TIM base.
mbed_official 489:119543c9f674 186 (+) De-initialize the TIM base.
mbed_official 489:119543c9f674 187 (+) Start the Timer Base.
mbed_official 489:119543c9f674 188 (+) Stop the Timer Base.
mbed_official 489:119543c9f674 189 (+) Start the Timer Base and enable interrupt.
mbed_official 489:119543c9f674 190 (+) Stop the Timer Base and disable interrupt.
mbed_official 489:119543c9f674 191 (+) Start the Timer Base and enable DMA transfer.
mbed_official 489:119543c9f674 192 (+) Stop the Timer Base and disable DMA transfer.
mbed_official 376:cb4d9db17537 193
mbed_official 376:cb4d9db17537 194 @endverbatim
mbed_official 376:cb4d9db17537 195 * @{
mbed_official 376:cb4d9db17537 196 */
mbed_official 376:cb4d9db17537 197 /**
mbed_official 376:cb4d9db17537 198 * @brief Initializes the TIM Time base Unit according to the specified
mbed_official 376:cb4d9db17537 199 * parameters in the TIM_HandleTypeDef and create the associated handle.
mbed_official 489:119543c9f674 200 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 201 * @retval HAL status
mbed_official 376:cb4d9db17537 202 */
mbed_official 376:cb4d9db17537 203 HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 204 {
mbed_official 376:cb4d9db17537 205 /* Check the TIM handle allocation */
mbed_official 489:119543c9f674 206 if(htim == NULL)
mbed_official 376:cb4d9db17537 207 {
mbed_official 376:cb4d9db17537 208 return HAL_ERROR;
mbed_official 376:cb4d9db17537 209 }
mbed_official 376:cb4d9db17537 210
mbed_official 376:cb4d9db17537 211 /* Check the parameters */
mbed_official 376:cb4d9db17537 212 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 213 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
mbed_official 376:cb4d9db17537 214 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
mbed_official 489:119543c9f674 215 assert_param(IS_TIM_PERIOD(htim->Init.Period));
mbed_official 489:119543c9f674 216 assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler));
mbed_official 376:cb4d9db17537 217
mbed_official 376:cb4d9db17537 218 if(htim->State == HAL_TIM_STATE_RESET)
mbed_official 376:cb4d9db17537 219 {
mbed_official 376:cb4d9db17537 220 /* Init the low level hardware : GPIO, CLOCK, NVIC */
mbed_official 376:cb4d9db17537 221 HAL_TIM_Base_MspInit(htim);
mbed_official 376:cb4d9db17537 222 }
mbed_official 376:cb4d9db17537 223
mbed_official 376:cb4d9db17537 224 /* Set the TIM state */
mbed_official 376:cb4d9db17537 225 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 226
mbed_official 376:cb4d9db17537 227 /* Set the Time Base configuration */
mbed_official 376:cb4d9db17537 228 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 376:cb4d9db17537 229
mbed_official 376:cb4d9db17537 230 /* Initialize the TIM state*/
mbed_official 376:cb4d9db17537 231 htim->State= HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 232
mbed_official 376:cb4d9db17537 233 return HAL_OK;
mbed_official 376:cb4d9db17537 234 }
mbed_official 376:cb4d9db17537 235
mbed_official 376:cb4d9db17537 236 /**
mbed_official 489:119543c9f674 237 * @brief DeInitializes the TIM Base peripheral
mbed_official 489:119543c9f674 238 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 239 * @retval HAL status
mbed_official 376:cb4d9db17537 240 */
mbed_official 376:cb4d9db17537 241 HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 242 {
mbed_official 376:cb4d9db17537 243 /* Check the parameters */
mbed_official 376:cb4d9db17537 244 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 245
mbed_official 376:cb4d9db17537 246 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 247
mbed_official 376:cb4d9db17537 248 /* Disable the TIM Peripheral Clock */
mbed_official 376:cb4d9db17537 249 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 250
mbed_official 489:119543c9f674 251 /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
mbed_official 489:119543c9f674 252 HAL_TIM_Base_MspDeInit(htim);
mbed_official 489:119543c9f674 253
mbed_official 489:119543c9f674 254 /* Change TIM state */
mbed_official 376:cb4d9db17537 255 htim->State = HAL_TIM_STATE_RESET;
mbed_official 376:cb4d9db17537 256
mbed_official 376:cb4d9db17537 257 /* Release Lock */
mbed_official 376:cb4d9db17537 258 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 259
mbed_official 376:cb4d9db17537 260 return HAL_OK;
mbed_official 376:cb4d9db17537 261 }
mbed_official 376:cb4d9db17537 262
mbed_official 376:cb4d9db17537 263 /**
mbed_official 376:cb4d9db17537 264 * @brief Initializes the TIM Base MSP.
mbed_official 489:119543c9f674 265 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 266 * @retval None
mbed_official 376:cb4d9db17537 267 */
mbed_official 376:cb4d9db17537 268 __weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 269 {
mbed_official 376:cb4d9db17537 270 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 271 the HAL_TIM_Base_MspInit could be implemented in the user file
mbed_official 376:cb4d9db17537 272 */
mbed_official 376:cb4d9db17537 273 }
mbed_official 376:cb4d9db17537 274
mbed_official 376:cb4d9db17537 275 /**
mbed_official 376:cb4d9db17537 276 * @brief DeInitializes TIM Base MSP.
mbed_official 489:119543c9f674 277 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 278 * @retval None
mbed_official 376:cb4d9db17537 279 */
mbed_official 376:cb4d9db17537 280 __weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 281 {
mbed_official 376:cb4d9db17537 282 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 283 the HAL_TIM_Base_MspDeInit could be implemented in the user file
mbed_official 376:cb4d9db17537 284 */
mbed_official 376:cb4d9db17537 285 }
mbed_official 376:cb4d9db17537 286
mbed_official 376:cb4d9db17537 287 /**
mbed_official 376:cb4d9db17537 288 * @brief Starts the TIM Base generation.
mbed_official 489:119543c9f674 289 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 290 * @retval HAL status
mbed_official 376:cb4d9db17537 291 */
mbed_official 376:cb4d9db17537 292 HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 293 {
mbed_official 376:cb4d9db17537 294 /* Check the parameters */
mbed_official 376:cb4d9db17537 295 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 296
mbed_official 376:cb4d9db17537 297 /* Set the TIM state */
mbed_official 376:cb4d9db17537 298 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 299
mbed_official 376:cb4d9db17537 300 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 301 __HAL_TIM_ENABLE(htim);
mbed_official 489:119543c9f674 302
mbed_official 376:cb4d9db17537 303 /* Change the TIM state*/
mbed_official 376:cb4d9db17537 304 htim->State= HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 305
mbed_official 376:cb4d9db17537 306 /* Return function status */
mbed_official 376:cb4d9db17537 307 return HAL_OK;
mbed_official 376:cb4d9db17537 308 }
mbed_official 376:cb4d9db17537 309
mbed_official 376:cb4d9db17537 310 /**
mbed_official 376:cb4d9db17537 311 * @brief Stops the TIM Base generation.
mbed_official 489:119543c9f674 312 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 313 * @retval HAL status
mbed_official 376:cb4d9db17537 314 */
mbed_official 376:cb4d9db17537 315 HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 316 {
mbed_official 376:cb4d9db17537 317 /* Check the parameters */
mbed_official 376:cb4d9db17537 318 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 319
mbed_official 376:cb4d9db17537 320 /* Set the TIM state */
mbed_official 376:cb4d9db17537 321 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 322
mbed_official 376:cb4d9db17537 323 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 324 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 325
mbed_official 376:cb4d9db17537 326 /* Change the TIM state*/
mbed_official 376:cb4d9db17537 327 htim->State= HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 328
mbed_official 376:cb4d9db17537 329 /* Return function status */
mbed_official 376:cb4d9db17537 330 return HAL_OK;
mbed_official 376:cb4d9db17537 331 }
mbed_official 376:cb4d9db17537 332
mbed_official 376:cb4d9db17537 333 /**
mbed_official 376:cb4d9db17537 334 * @brief Starts the TIM Base generation in interrupt mode.
mbed_official 489:119543c9f674 335 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 336 * @retval HAL status
mbed_official 376:cb4d9db17537 337 */
mbed_official 376:cb4d9db17537 338 HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 339 {
mbed_official 376:cb4d9db17537 340 /* Check the parameters */
mbed_official 376:cb4d9db17537 341 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 342
mbed_official 376:cb4d9db17537 343 /* Enable the TIM Update interrupt */
mbed_official 376:cb4d9db17537 344 __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
mbed_official 489:119543c9f674 345
mbed_official 376:cb4d9db17537 346 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 347 __HAL_TIM_ENABLE(htim);
mbed_official 489:119543c9f674 348
mbed_official 376:cb4d9db17537 349 /* Return function status */
mbed_official 376:cb4d9db17537 350 return HAL_OK;
mbed_official 376:cb4d9db17537 351 }
mbed_official 376:cb4d9db17537 352
mbed_official 376:cb4d9db17537 353 /**
mbed_official 376:cb4d9db17537 354 * @brief Stops the TIM Base generation in interrupt mode.
mbed_official 489:119543c9f674 355 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 356 * @retval HAL status
mbed_official 376:cb4d9db17537 357 */
mbed_official 376:cb4d9db17537 358 HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 359 {
mbed_official 376:cb4d9db17537 360 /* Check the parameters */
mbed_official 376:cb4d9db17537 361 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 362 /* Disable the TIM Update interrupt */
mbed_official 376:cb4d9db17537 363 __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE);
mbed_official 489:119543c9f674 364
mbed_official 376:cb4d9db17537 365 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 366 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 367
mbed_official 376:cb4d9db17537 368 /* Return function status */
mbed_official 376:cb4d9db17537 369 return HAL_OK;
mbed_official 376:cb4d9db17537 370 }
mbed_official 376:cb4d9db17537 371
mbed_official 376:cb4d9db17537 372 /**
mbed_official 376:cb4d9db17537 373 * @brief Starts the TIM Base generation in DMA mode.
mbed_official 489:119543c9f674 374 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 375 * @param pData: The source Buffer address.
mbed_official 376:cb4d9db17537 376 * @param Length: The length of data to be transferred from memory to peripheral.
mbed_official 376:cb4d9db17537 377 * @retval HAL status
mbed_official 376:cb4d9db17537 378 */
mbed_official 376:cb4d9db17537 379 HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)
mbed_official 376:cb4d9db17537 380 {
mbed_official 376:cb4d9db17537 381 /* Check the parameters */
mbed_official 489:119543c9f674 382 assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 383
mbed_official 376:cb4d9db17537 384 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 376:cb4d9db17537 385 {
mbed_official 376:cb4d9db17537 386 return HAL_BUSY;
mbed_official 376:cb4d9db17537 387 }
mbed_official 376:cb4d9db17537 388 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 376:cb4d9db17537 389 {
mbed_official 489:119543c9f674 390 if((pData == 0 ) && (Length > 0))
mbed_official 376:cb4d9db17537 391 {
mbed_official 489:119543c9f674 392 return HAL_ERROR;
mbed_official 376:cb4d9db17537 393 }
mbed_official 376:cb4d9db17537 394 else
mbed_official 376:cb4d9db17537 395 {
mbed_official 376:cb4d9db17537 396 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 397 }
mbed_official 489:119543c9f674 398 }
mbed_official 376:cb4d9db17537 399 /* Set the DMA Period elapsed callback */
mbed_official 376:cb4d9db17537 400 htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;
mbed_official 489:119543c9f674 401
mbed_official 376:cb4d9db17537 402 /* Set the DMA error callback */
mbed_official 489:119543c9f674 403 htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 404
mbed_official 376:cb4d9db17537 405 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 406 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR, Length);
mbed_official 376:cb4d9db17537 407
mbed_official 376:cb4d9db17537 408 /* Enable the TIM Update DMA request */
mbed_official 376:cb4d9db17537 409 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE);
mbed_official 376:cb4d9db17537 410
mbed_official 376:cb4d9db17537 411 /* Enable the Peripheral */
mbed_official 489:119543c9f674 412 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 413
mbed_official 376:cb4d9db17537 414 /* Return function status */
mbed_official 376:cb4d9db17537 415 return HAL_OK;
mbed_official 376:cb4d9db17537 416 }
mbed_official 376:cb4d9db17537 417
mbed_official 376:cb4d9db17537 418 /**
mbed_official 376:cb4d9db17537 419 * @brief Stops the TIM Base generation in DMA mode.
mbed_official 489:119543c9f674 420 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 421 * @retval HAL status
mbed_official 376:cb4d9db17537 422 */
mbed_official 376:cb4d9db17537 423 HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 424 {
mbed_official 376:cb4d9db17537 425 /* Check the parameters */
mbed_official 376:cb4d9db17537 426 assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 427
mbed_official 376:cb4d9db17537 428 /* Disable the TIM Update DMA request */
mbed_official 376:cb4d9db17537 429 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE);
mbed_official 489:119543c9f674 430
mbed_official 376:cb4d9db17537 431 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 432 __HAL_TIM_DISABLE(htim);
mbed_official 376:cb4d9db17537 433
mbed_official 376:cb4d9db17537 434 /* Change the htim state */
mbed_official 376:cb4d9db17537 435 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 436
mbed_official 376:cb4d9db17537 437 /* Return function status */
mbed_official 376:cb4d9db17537 438 return HAL_OK;
mbed_official 376:cb4d9db17537 439 }
mbed_official 376:cb4d9db17537 440
mbed_official 376:cb4d9db17537 441 /**
mbed_official 489:119543c9f674 442 * @}
mbed_official 489:119543c9f674 443 */
mbed_official 489:119543c9f674 444
mbed_official 489:119543c9f674 445
mbed_official 489:119543c9f674 446 /** @addtogroup TIM_Exported_Functions_Group2
mbed_official 489:119543c9f674 447 * @brief Time Output Compare functions
mbed_official 489:119543c9f674 448 *
mbed_official 489:119543c9f674 449 @verbatim
mbed_official 489:119543c9f674 450 ==============================================================================
mbed_official 489:119543c9f674 451 ##### Timer Output Compare functions #####
mbed_official 489:119543c9f674 452 ==============================================================================
mbed_official 489:119543c9f674 453 [..]
mbed_official 489:119543c9f674 454 This section provides functions allowing to:
mbed_official 489:119543c9f674 455 (+) Initialize and configure the TIM Output Compare.
mbed_official 489:119543c9f674 456 (+) De-initialize the TIM Output Compare.
mbed_official 489:119543c9f674 457 (+) Start the Timer Output Compare.
mbed_official 489:119543c9f674 458 (+) Stop the Timer Output Compare.
mbed_official 489:119543c9f674 459 (+) Start the Timer Output Compare and enable interrupt.
mbed_official 489:119543c9f674 460 (+) Stop the Timer Output Compare and disable interrupt.
mbed_official 489:119543c9f674 461 (+) Start the Timer Output Compare and enable DMA transfer.
mbed_official 489:119543c9f674 462 (+) Stop the Timer Output Compare and disable DMA transfer.
mbed_official 489:119543c9f674 463
mbed_official 489:119543c9f674 464 @endverbatim
mbed_official 489:119543c9f674 465 * @{
mbed_official 489:119543c9f674 466 */
mbed_official 489:119543c9f674 467 /**
mbed_official 489:119543c9f674 468 * @brief Initializes the TIM Output Compare according to the specified
mbed_official 489:119543c9f674 469 * parameters in the TIM_HandleTypeDef and create the associated handle.
mbed_official 489:119543c9f674 470 * @param htim: TIM Output Compare handle
mbed_official 489:119543c9f674 471 * @retval HAL status
mbed_official 489:119543c9f674 472 */
mbed_official 489:119543c9f674 473 HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef* htim)
mbed_official 489:119543c9f674 474 {
mbed_official 489:119543c9f674 475 /* Check the TIM handle allocation */
mbed_official 489:119543c9f674 476 if(htim == NULL)
mbed_official 489:119543c9f674 477 {
mbed_official 489:119543c9f674 478 return HAL_ERROR;
mbed_official 489:119543c9f674 479 }
mbed_official 489:119543c9f674 480
mbed_official 489:119543c9f674 481 /* Check the parameters */
mbed_official 489:119543c9f674 482 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 483 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
mbed_official 489:119543c9f674 484 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
mbed_official 489:119543c9f674 485 assert_param(IS_TIM_PERIOD(htim->Init.Period));
mbed_official 489:119543c9f674 486 assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler));
mbed_official 489:119543c9f674 487
mbed_official 489:119543c9f674 488 if(htim->State == HAL_TIM_STATE_RESET)
mbed_official 489:119543c9f674 489 {
mbed_official 489:119543c9f674 490 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA*/
mbed_official 489:119543c9f674 491 HAL_TIM_OC_MspInit(htim);
mbed_official 489:119543c9f674 492 }
mbed_official 489:119543c9f674 493 /* Set the TIM state */
mbed_official 489:119543c9f674 494 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 495
mbed_official 489:119543c9f674 496 /* Init the base time for the Output Compare */
mbed_official 489:119543c9f674 497 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 489:119543c9f674 498
mbed_official 489:119543c9f674 499 /* Initialize the TIM state*/
mbed_official 489:119543c9f674 500 htim->State= HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 501
mbed_official 489:119543c9f674 502 return HAL_OK;
mbed_official 489:119543c9f674 503 }
mbed_official 489:119543c9f674 504
mbed_official 489:119543c9f674 505 /**
mbed_official 489:119543c9f674 506 * @brief DeInitializes the TIM peripheral
mbed_official 489:119543c9f674 507 * @param htim: TIM Output Compare handle
mbed_official 489:119543c9f674 508 * @retval HAL status
mbed_official 489:119543c9f674 509 */
mbed_official 489:119543c9f674 510 HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 511 {
mbed_official 489:119543c9f674 512 /* Check the parameters */
mbed_official 489:119543c9f674 513 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 514
mbed_official 489:119543c9f674 515 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 516
mbed_official 489:119543c9f674 517 /* Disable the TIM Peripheral Clock */
mbed_official 489:119543c9f674 518 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 519
mbed_official 489:119543c9f674 520 /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */
mbed_official 489:119543c9f674 521 HAL_TIM_OC_MspDeInit(htim);
mbed_official 489:119543c9f674 522
mbed_official 489:119543c9f674 523 /* Change TIM state */
mbed_official 489:119543c9f674 524 htim->State = HAL_TIM_STATE_RESET;
mbed_official 489:119543c9f674 525
mbed_official 489:119543c9f674 526 /* Release Lock */
mbed_official 489:119543c9f674 527 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 528
mbed_official 489:119543c9f674 529 return HAL_OK;
mbed_official 489:119543c9f674 530 }
mbed_official 489:119543c9f674 531
mbed_official 489:119543c9f674 532 /**
mbed_official 489:119543c9f674 533 * @brief Initializes the TIM Output Compare MSP.
mbed_official 489:119543c9f674 534 * @param htim : TIM handle
mbed_official 489:119543c9f674 535 * @retval None
mbed_official 489:119543c9f674 536 */
mbed_official 489:119543c9f674 537 __weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 538 {
mbed_official 489:119543c9f674 539 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 540 the HAL_TIM_OC_MspInit could be implemented in the user file
mbed_official 489:119543c9f674 541 */
mbed_official 489:119543c9f674 542 }
mbed_official 489:119543c9f674 543
mbed_official 489:119543c9f674 544 /**
mbed_official 489:119543c9f674 545 * @brief DeInitializes TIM Output Compare MSP.
mbed_official 489:119543c9f674 546 * @param htim : TIM handle
mbed_official 489:119543c9f674 547 * @retval None
mbed_official 489:119543c9f674 548 */
mbed_official 489:119543c9f674 549 __weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 550 {
mbed_official 489:119543c9f674 551 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 552 the HAL_TIM_OC_MspDeInit could be implemented in the user file
mbed_official 489:119543c9f674 553 */
mbed_official 489:119543c9f674 554 }
mbed_official 489:119543c9f674 555
mbed_official 489:119543c9f674 556 /**
mbed_official 376:cb4d9db17537 557 * @brief Starts the TIM Output Compare signal generation.
mbed_official 489:119543c9f674 558 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 559 * @param Channel: TIM Channel to be enabled.
mbed_official 376:cb4d9db17537 560 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 561 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 562 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 563 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 489:119543c9f674 564 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 565 * @retval HAL status
mbed_official 376:cb4d9db17537 566 */
mbed_official 376:cb4d9db17537 567 HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 568 {
mbed_official 376:cb4d9db17537 569 /* Check the parameters */
mbed_official 376:cb4d9db17537 570 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 571
mbed_official 376:cb4d9db17537 572 /* Enable the Output compare channel */
mbed_official 376:cb4d9db17537 573 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 574
mbed_official 376:cb4d9db17537 575 /* Enable the Peripheral */
mbed_official 489:119543c9f674 576 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 577
mbed_official 376:cb4d9db17537 578 /* Return function status */
mbed_official 376:cb4d9db17537 579 return HAL_OK;
mbed_official 376:cb4d9db17537 580 }
mbed_official 376:cb4d9db17537 581
mbed_official 376:cb4d9db17537 582 /**
mbed_official 376:cb4d9db17537 583 * @brief Stops the TIM Output Compare signal generation.
mbed_official 489:119543c9f674 584 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 585 * @param Channel: TIM Channel to be disabled.
mbed_official 376:cb4d9db17537 586 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 587 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 588 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 589 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 590 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 591 * @retval HAL status
mbed_official 376:cb4d9db17537 592 */
mbed_official 376:cb4d9db17537 593 HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 594 {
mbed_official 376:cb4d9db17537 595 /* Check the parameters */
mbed_official 376:cb4d9db17537 596 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 376:cb4d9db17537 597
mbed_official 376:cb4d9db17537 598 /* Disable the Output compare channel */
mbed_official 376:cb4d9db17537 599 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 600
mbed_official 376:cb4d9db17537 601 /* Disable the Peripheral */
mbed_official 489:119543c9f674 602 __HAL_TIM_DISABLE(htim);
mbed_official 376:cb4d9db17537 603
mbed_official 376:cb4d9db17537 604 /* Return function status */
mbed_official 376:cb4d9db17537 605 return HAL_OK;
mbed_official 489:119543c9f674 606 }
mbed_official 376:cb4d9db17537 607
mbed_official 376:cb4d9db17537 608 /**
mbed_official 376:cb4d9db17537 609 * @brief Starts the TIM Output Compare signal generation in interrupt mode.
mbed_official 489:119543c9f674 610 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 611 * @param Channel: TIM Channel to be enabled.
mbed_official 376:cb4d9db17537 612 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 613 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 614 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 615 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 616 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 617 * @retval HAL status
mbed_official 376:cb4d9db17537 618 */
mbed_official 376:cb4d9db17537 619 HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 620 {
mbed_official 376:cb4d9db17537 621 /* Check the parameters */
mbed_official 376:cb4d9db17537 622 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 623
mbed_official 376:cb4d9db17537 624 switch (Channel)
mbed_official 376:cb4d9db17537 625 {
mbed_official 376:cb4d9db17537 626 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 627 {
mbed_official 376:cb4d9db17537 628 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 376:cb4d9db17537 629 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 630 }
mbed_official 376:cb4d9db17537 631 break;
mbed_official 489:119543c9f674 632
mbed_official 376:cb4d9db17537 633 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 634 {
mbed_official 376:cb4d9db17537 635 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 636 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 637 }
mbed_official 376:cb4d9db17537 638 break;
mbed_official 489:119543c9f674 639
mbed_official 376:cb4d9db17537 640 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 641 {
mbed_official 376:cb4d9db17537 642 /* Enable the TIM Capture/Compare 3 interrupt */
mbed_official 376:cb4d9db17537 643 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
mbed_official 376:cb4d9db17537 644 }
mbed_official 376:cb4d9db17537 645 break;
mbed_official 489:119543c9f674 646
mbed_official 376:cb4d9db17537 647 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 648 {
mbed_official 376:cb4d9db17537 649 /* Enable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 650 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
mbed_official 376:cb4d9db17537 651 }
mbed_official 376:cb4d9db17537 652 break;
mbed_official 489:119543c9f674 653
mbed_official 376:cb4d9db17537 654 default:
mbed_official 376:cb4d9db17537 655 break;
mbed_official 489:119543c9f674 656 }
mbed_official 376:cb4d9db17537 657
mbed_official 376:cb4d9db17537 658 /* Enable the Output compare channel */
mbed_official 376:cb4d9db17537 659 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 660
mbed_official 376:cb4d9db17537 661 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 662 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 663
mbed_official 376:cb4d9db17537 664 /* Return function status */
mbed_official 376:cb4d9db17537 665 return HAL_OK;
mbed_official 376:cb4d9db17537 666 }
mbed_official 376:cb4d9db17537 667
mbed_official 376:cb4d9db17537 668 /**
mbed_official 376:cb4d9db17537 669 * @brief Stops the TIM Output Compare signal generation in interrupt mode.
mbed_official 489:119543c9f674 670 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 671 * @param Channel: TIM Channel to be disabled.
mbed_official 376:cb4d9db17537 672 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 673 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 674 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 675 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 676 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 677 * @retval HAL status
mbed_official 376:cb4d9db17537 678 */
mbed_official 376:cb4d9db17537 679 HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 680 {
mbed_official 376:cb4d9db17537 681 /* Check the parameters */
mbed_official 376:cb4d9db17537 682 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 683
mbed_official 376:cb4d9db17537 684 switch (Channel)
mbed_official 376:cb4d9db17537 685 {
mbed_official 376:cb4d9db17537 686 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 687 {
mbed_official 376:cb4d9db17537 688 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 376:cb4d9db17537 689 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 690 }
mbed_official 376:cb4d9db17537 691 break;
mbed_official 489:119543c9f674 692
mbed_official 376:cb4d9db17537 693 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 694 {
mbed_official 376:cb4d9db17537 695 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 696 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 697 }
mbed_official 376:cb4d9db17537 698 break;
mbed_official 489:119543c9f674 699
mbed_official 376:cb4d9db17537 700 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 701 {
mbed_official 376:cb4d9db17537 702 /* Disable the TIM Capture/Compare 3 interrupt */
mbed_official 376:cb4d9db17537 703 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
mbed_official 376:cb4d9db17537 704 }
mbed_official 376:cb4d9db17537 705 break;
mbed_official 489:119543c9f674 706
mbed_official 376:cb4d9db17537 707 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 708 {
mbed_official 376:cb4d9db17537 709 /* Disable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 710 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
mbed_official 376:cb4d9db17537 711 }
mbed_official 376:cb4d9db17537 712 break;
mbed_official 489:119543c9f674 713
mbed_official 376:cb4d9db17537 714 default:
mbed_official 489:119543c9f674 715 break;
mbed_official 489:119543c9f674 716 }
mbed_official 489:119543c9f674 717
mbed_official 376:cb4d9db17537 718 /* Disable the Output compare channel */
mbed_official 376:cb4d9db17537 719 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 720
mbed_official 376:cb4d9db17537 721 /* Disable the Peripheral */
mbed_official 489:119543c9f674 722 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 723
mbed_official 376:cb4d9db17537 724 /* Return function status */
mbed_official 376:cb4d9db17537 725 return HAL_OK;
mbed_official 376:cb4d9db17537 726 }
mbed_official 376:cb4d9db17537 727
mbed_official 376:cb4d9db17537 728 /**
mbed_official 376:cb4d9db17537 729 * @brief Starts the TIM Output Compare signal generation in DMA mode.
mbed_official 489:119543c9f674 730 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 731 * @param Channel: TIM Channel to be enabled.
mbed_official 376:cb4d9db17537 732 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 733 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 734 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 735 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 736 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 737 * @param pData: The source Buffer address.
mbed_official 376:cb4d9db17537 738 * @param Length: The length of data to be transferred from memory to TIM peripheral
mbed_official 376:cb4d9db17537 739 * @retval HAL status
mbed_official 376:cb4d9db17537 740 */
mbed_official 376:cb4d9db17537 741 HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
mbed_official 376:cb4d9db17537 742 {
mbed_official 376:cb4d9db17537 743 /* Check the parameters */
mbed_official 376:cb4d9db17537 744 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 745
mbed_official 376:cb4d9db17537 746 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 376:cb4d9db17537 747 {
mbed_official 376:cb4d9db17537 748 return HAL_BUSY;
mbed_official 376:cb4d9db17537 749 }
mbed_official 376:cb4d9db17537 750 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 376:cb4d9db17537 751 {
mbed_official 489:119543c9f674 752 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 376:cb4d9db17537 753 {
mbed_official 489:119543c9f674 754 return HAL_ERROR;
mbed_official 376:cb4d9db17537 755 }
mbed_official 376:cb4d9db17537 756 else
mbed_official 376:cb4d9db17537 757 {
mbed_official 376:cb4d9db17537 758 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 759 }
mbed_official 489:119543c9f674 760 }
mbed_official 376:cb4d9db17537 761 switch (Channel)
mbed_official 376:cb4d9db17537 762 {
mbed_official 376:cb4d9db17537 763 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 764 {
mbed_official 376:cb4d9db17537 765 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 766 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 767
mbed_official 376:cb4d9db17537 768 /* Set the DMA error callback */
mbed_official 489:119543c9f674 769 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 770
mbed_official 376:cb4d9db17537 771 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 772 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
mbed_official 489:119543c9f674 773
mbed_official 376:cb4d9db17537 774 /* Enable the TIM Capture/Compare 1 DMA request */
mbed_official 376:cb4d9db17537 775 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 776 }
mbed_official 376:cb4d9db17537 777 break;
mbed_official 489:119543c9f674 778
mbed_official 376:cb4d9db17537 779 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 780 {
mbed_official 376:cb4d9db17537 781 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 782 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 783
mbed_official 376:cb4d9db17537 784 /* Set the DMA error callback */
mbed_official 489:119543c9f674 785 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 786
mbed_official 376:cb4d9db17537 787 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 788 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
mbed_official 489:119543c9f674 789
mbed_official 376:cb4d9db17537 790 /* Enable the TIM Capture/Compare 2 DMA request */
mbed_official 376:cb4d9db17537 791 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 792 }
mbed_official 376:cb4d9db17537 793 break;
mbed_official 489:119543c9f674 794
mbed_official 376:cb4d9db17537 795 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 796 {
mbed_official 376:cb4d9db17537 797 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 798 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 799
mbed_official 376:cb4d9db17537 800 /* Set the DMA error callback */
mbed_official 489:119543c9f674 801 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 802
mbed_official 376:cb4d9db17537 803 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 804 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
mbed_official 489:119543c9f674 805
mbed_official 376:cb4d9db17537 806 /* Enable the TIM Capture/Compare 3 DMA request */
mbed_official 376:cb4d9db17537 807 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 376:cb4d9db17537 808 }
mbed_official 376:cb4d9db17537 809 break;
mbed_official 489:119543c9f674 810
mbed_official 376:cb4d9db17537 811 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 812 {
mbed_official 376:cb4d9db17537 813 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 814 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 815
mbed_official 376:cb4d9db17537 816 /* Set the DMA error callback */
mbed_official 489:119543c9f674 817 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 818
mbed_official 376:cb4d9db17537 819 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 820 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
mbed_official 489:119543c9f674 821
mbed_official 376:cb4d9db17537 822 /* Enable the TIM Capture/Compare 4 DMA request */
mbed_official 376:cb4d9db17537 823 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 376:cb4d9db17537 824 }
mbed_official 376:cb4d9db17537 825 break;
mbed_official 489:119543c9f674 826
mbed_official 376:cb4d9db17537 827 default:
mbed_official 376:cb4d9db17537 828 break;
mbed_official 376:cb4d9db17537 829 }
mbed_official 376:cb4d9db17537 830
mbed_official 376:cb4d9db17537 831 /* Enable the Output compare channel */
mbed_official 489:119543c9f674 832 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 833
mbed_official 376:cb4d9db17537 834 /* Enable the Peripheral */
mbed_official 489:119543c9f674 835 __HAL_TIM_ENABLE(htim);
mbed_official 489:119543c9f674 836
mbed_official 376:cb4d9db17537 837 /* Return function status */
mbed_official 376:cb4d9db17537 838 return HAL_OK;
mbed_official 376:cb4d9db17537 839 }
mbed_official 376:cb4d9db17537 840
mbed_official 376:cb4d9db17537 841 /**
mbed_official 376:cb4d9db17537 842 * @brief Stops the TIM Output Compare signal generation in DMA mode.
mbed_official 489:119543c9f674 843 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 844 * @param Channel: TIM Channel to be disabled.
mbed_official 376:cb4d9db17537 845 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 846 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 847 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 848 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 849 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 850 * @retval HAL status
mbed_official 376:cb4d9db17537 851 */
mbed_official 376:cb4d9db17537 852 HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 853 {
mbed_official 376:cb4d9db17537 854 /* Check the parameters */
mbed_official 376:cb4d9db17537 855 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 856
mbed_official 376:cb4d9db17537 857 switch (Channel)
mbed_official 376:cb4d9db17537 858 {
mbed_official 376:cb4d9db17537 859 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 860 {
mbed_official 376:cb4d9db17537 861 /* Disable the TIM Capture/Compare 1 DMA request */
mbed_official 376:cb4d9db17537 862 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 863 }
mbed_official 376:cb4d9db17537 864 break;
mbed_official 489:119543c9f674 865
mbed_official 376:cb4d9db17537 866 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 867 {
mbed_official 376:cb4d9db17537 868 /* Disable the TIM Capture/Compare 2 DMA request */
mbed_official 376:cb4d9db17537 869 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 870 }
mbed_official 376:cb4d9db17537 871 break;
mbed_official 489:119543c9f674 872
mbed_official 376:cb4d9db17537 873 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 874 {
mbed_official 376:cb4d9db17537 875 /* Disable the TIM Capture/Compare 3 DMA request */
mbed_official 376:cb4d9db17537 876 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 376:cb4d9db17537 877 }
mbed_official 376:cb4d9db17537 878 break;
mbed_official 489:119543c9f674 879
mbed_official 376:cb4d9db17537 880 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 881 {
mbed_official 376:cb4d9db17537 882 /* Disable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 883 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 376:cb4d9db17537 884 }
mbed_official 376:cb4d9db17537 885 break;
mbed_official 489:119543c9f674 886
mbed_official 376:cb4d9db17537 887 default:
mbed_official 376:cb4d9db17537 888 break;
mbed_official 489:119543c9f674 889 }
mbed_official 489:119543c9f674 890
mbed_official 376:cb4d9db17537 891 /* Disable the Output compare channel */
mbed_official 376:cb4d9db17537 892 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 893
mbed_official 376:cb4d9db17537 894 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 895 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 896
mbed_official 376:cb4d9db17537 897 /* Change the htim state */
mbed_official 376:cb4d9db17537 898 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 899
mbed_official 376:cb4d9db17537 900 /* Return function status */
mbed_official 376:cb4d9db17537 901 return HAL_OK;
mbed_official 376:cb4d9db17537 902 }
mbed_official 376:cb4d9db17537 903
mbed_official 376:cb4d9db17537 904 /**
mbed_official 489:119543c9f674 905 * @}
mbed_official 489:119543c9f674 906 */
mbed_official 489:119543c9f674 907
mbed_official 489:119543c9f674 908 /** @addtogroup TIM_Exported_Functions_Group3
mbed_official 489:119543c9f674 909 * @brief Time PWM functions
mbed_official 489:119543c9f674 910 *
mbed_official 489:119543c9f674 911 @verbatim
mbed_official 489:119543c9f674 912 ==============================================================================
mbed_official 489:119543c9f674 913 ##### Timer PWM functions #####
mbed_official 489:119543c9f674 914 ==============================================================================
mbed_official 489:119543c9f674 915 [..]
mbed_official 489:119543c9f674 916 This section provides functions allowing to:
mbed_official 489:119543c9f674 917 (+) Initialize and configure the TIM OPWM.
mbed_official 489:119543c9f674 918 (+) De-initialize the TIM PWM.
mbed_official 489:119543c9f674 919 (+) Start the Timer PWM.
mbed_official 489:119543c9f674 920 (+) Stop the Timer PWM.
mbed_official 489:119543c9f674 921 (+) Start the Timer PWM and enable interrupt.
mbed_official 489:119543c9f674 922 (+) Stop the Timer PWM and disable interrupt.
mbed_official 489:119543c9f674 923 (+) Start the Timer PWM and enable DMA transfer.
mbed_official 489:119543c9f674 924 (+) Stop the Timer PWM and disable DMA transfer.
mbed_official 489:119543c9f674 925
mbed_official 489:119543c9f674 926 @endverbatim
mbed_official 489:119543c9f674 927 * @{
mbed_official 489:119543c9f674 928 */
mbed_official 489:119543c9f674 929 /**
mbed_official 489:119543c9f674 930 * @brief Initializes the TIM PWM Time Base according to the specified
mbed_official 489:119543c9f674 931 * parameters in the TIM_HandleTypeDef and create the associated handle.
mbed_official 489:119543c9f674 932 * @param htim : TIM handle
mbed_official 489:119543c9f674 933 * @retval HAL status
mbed_official 489:119543c9f674 934 */
mbed_official 489:119543c9f674 935
mbed_official 489:119543c9f674 936
mbed_official 489:119543c9f674 937 HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 938 {
mbed_official 489:119543c9f674 939 /* Check the TIM handle allocation */
mbed_official 489:119543c9f674 940 if(htim == NULL)
mbed_official 489:119543c9f674 941 {
mbed_official 489:119543c9f674 942 return HAL_ERROR;
mbed_official 489:119543c9f674 943 }
mbed_official 489:119543c9f674 944
mbed_official 489:119543c9f674 945 /* Check the parameters */
mbed_official 489:119543c9f674 946 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 947 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
mbed_official 489:119543c9f674 948 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
mbed_official 489:119543c9f674 949 assert_param(IS_TIM_PERIOD(htim->Init.Period));
mbed_official 489:119543c9f674 950 assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler));
mbed_official 489:119543c9f674 951
mbed_official 489:119543c9f674 952 if(htim->State == HAL_TIM_STATE_RESET)
mbed_official 489:119543c9f674 953 {
mbed_official 489:119543c9f674 954 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
mbed_official 489:119543c9f674 955 HAL_TIM_PWM_MspInit(htim);
mbed_official 489:119543c9f674 956 }
mbed_official 489:119543c9f674 957
mbed_official 489:119543c9f674 958 /* Set the TIM state */
mbed_official 489:119543c9f674 959 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 960
mbed_official 489:119543c9f674 961 /* Init the base time for the PWM */
mbed_official 489:119543c9f674 962 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 489:119543c9f674 963
mbed_official 489:119543c9f674 964 /* Initialize the TIM state*/
mbed_official 489:119543c9f674 965 htim->State= HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 966
mbed_official 489:119543c9f674 967 return HAL_OK;
mbed_official 489:119543c9f674 968 }
mbed_official 489:119543c9f674 969
mbed_official 489:119543c9f674 970 /**
mbed_official 489:119543c9f674 971 * @brief DeInitializes the TIM peripheral
mbed_official 489:119543c9f674 972 * @param htim : TIM handle
mbed_official 489:119543c9f674 973 * @retval HAL status
mbed_official 489:119543c9f674 974 */
mbed_official 489:119543c9f674 975 HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 976 {
mbed_official 489:119543c9f674 977 /* Check the parameters */
mbed_official 489:119543c9f674 978 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 979
mbed_official 489:119543c9f674 980 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 981
mbed_official 489:119543c9f674 982 /* Disable the TIM Peripheral Clock */
mbed_official 489:119543c9f674 983 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 984
mbed_official 489:119543c9f674 985 /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */
mbed_official 489:119543c9f674 986 HAL_TIM_PWM_MspDeInit(htim);
mbed_official 489:119543c9f674 987
mbed_official 489:119543c9f674 988 /* Change TIM state */
mbed_official 489:119543c9f674 989 htim->State = HAL_TIM_STATE_RESET;
mbed_official 489:119543c9f674 990
mbed_official 489:119543c9f674 991 /* Release Lock */
mbed_official 489:119543c9f674 992 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 993
mbed_official 489:119543c9f674 994 return HAL_OK;
mbed_official 489:119543c9f674 995 }
mbed_official 489:119543c9f674 996
mbed_official 489:119543c9f674 997 /**
mbed_official 489:119543c9f674 998 * @brief Initializes the TIM PWM MSP.
mbed_official 489:119543c9f674 999 * @param htim : TIM handle
mbed_official 489:119543c9f674 1000 * @retval None
mbed_official 489:119543c9f674 1001 */
mbed_official 489:119543c9f674 1002 __weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1003 {
mbed_official 489:119543c9f674 1004 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 1005 the HAL_TIM_PWM_MspInit could be implemented in the user file
mbed_official 489:119543c9f674 1006 */
mbed_official 489:119543c9f674 1007 }
mbed_official 489:119543c9f674 1008
mbed_official 489:119543c9f674 1009 /**
mbed_official 489:119543c9f674 1010 * @brief DeInitializes TIM PWM MSP.
mbed_official 489:119543c9f674 1011 * @param htim : TIM handle
mbed_official 489:119543c9f674 1012 * @retval None
mbed_official 489:119543c9f674 1013 */
mbed_official 489:119543c9f674 1014 __weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1015 {
mbed_official 489:119543c9f674 1016 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 1017 the HAL_TIM_PWM_MspDeInit could be implemented in the user file
mbed_official 489:119543c9f674 1018 */
mbed_official 489:119543c9f674 1019 }
mbed_official 489:119543c9f674 1020
mbed_official 489:119543c9f674 1021 /**
mbed_official 376:cb4d9db17537 1022 * @brief Starts the PWM signal generation.
mbed_official 489:119543c9f674 1023 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1024 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 1025 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1026 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1027 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1028 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1029 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1030 * @retval HAL status
mbed_official 376:cb4d9db17537 1031 */
mbed_official 376:cb4d9db17537 1032 HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1033 {
mbed_official 376:cb4d9db17537 1034 /* Check the parameters */
mbed_official 376:cb4d9db17537 1035 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 376:cb4d9db17537 1036
mbed_official 376:cb4d9db17537 1037 /* Enable the Capture compare channel */
mbed_official 376:cb4d9db17537 1038 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 1039
mbed_official 376:cb4d9db17537 1040 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 1041 __HAL_TIM_ENABLE(htim);
mbed_official 489:119543c9f674 1042
mbed_official 376:cb4d9db17537 1043 /* Return function status */
mbed_official 376:cb4d9db17537 1044 return HAL_OK;
mbed_official 489:119543c9f674 1045 }
mbed_official 376:cb4d9db17537 1046
mbed_official 376:cb4d9db17537 1047 /**
mbed_official 376:cb4d9db17537 1048 * @brief Stops the PWM signal generation.
mbed_official 489:119543c9f674 1049 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1050 * @param Channel: TIM Channels to be disabled.
mbed_official 376:cb4d9db17537 1051 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1052 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1053 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1054 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1055 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1056 * @retval HAL status
mbed_official 376:cb4d9db17537 1057 */
mbed_official 376:cb4d9db17537 1058 HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 489:119543c9f674 1059 {
mbed_official 376:cb4d9db17537 1060 /* Check the parameters */
mbed_official 376:cb4d9db17537 1061 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1062
mbed_official 376:cb4d9db17537 1063 /* Disable the Capture compare channel */
mbed_official 376:cb4d9db17537 1064 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 1065
mbed_official 376:cb4d9db17537 1066 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 1067 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1068
mbed_official 376:cb4d9db17537 1069 /* Change the htim state */
mbed_official 376:cb4d9db17537 1070 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 1071
mbed_official 376:cb4d9db17537 1072 /* Return function status */
mbed_official 376:cb4d9db17537 1073 return HAL_OK;
mbed_official 489:119543c9f674 1074 }
mbed_official 376:cb4d9db17537 1075
mbed_official 376:cb4d9db17537 1076 /**
mbed_official 376:cb4d9db17537 1077 * @brief Starts the PWM signal generation in interrupt mode.
mbed_official 489:119543c9f674 1078 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1079 * @param Channel: TIM Channel to be disabled.
mbed_official 376:cb4d9db17537 1080 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1081 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1082 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1083 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1084 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1085 * @retval HAL status
mbed_official 376:cb4d9db17537 1086 */
mbed_official 376:cb4d9db17537 1087 HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1088 {
mbed_official 376:cb4d9db17537 1089 /* Check the parameters */
mbed_official 376:cb4d9db17537 1090 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1091
mbed_official 376:cb4d9db17537 1092 switch (Channel)
mbed_official 376:cb4d9db17537 1093 {
mbed_official 376:cb4d9db17537 1094 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 1095 {
mbed_official 376:cb4d9db17537 1096 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 376:cb4d9db17537 1097 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 1098 }
mbed_official 376:cb4d9db17537 1099 break;
mbed_official 489:119543c9f674 1100
mbed_official 376:cb4d9db17537 1101 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1102 {
mbed_official 376:cb4d9db17537 1103 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 1104 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 1105 }
mbed_official 376:cb4d9db17537 1106 break;
mbed_official 489:119543c9f674 1107
mbed_official 376:cb4d9db17537 1108 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1109 {
mbed_official 376:cb4d9db17537 1110 /* Enable the TIM Capture/Compare 3 interrupt */
mbed_official 376:cb4d9db17537 1111 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
mbed_official 376:cb4d9db17537 1112 }
mbed_official 376:cb4d9db17537 1113 break;
mbed_official 489:119543c9f674 1114
mbed_official 376:cb4d9db17537 1115 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1116 {
mbed_official 376:cb4d9db17537 1117 /* Enable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 1118 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
mbed_official 376:cb4d9db17537 1119 }
mbed_official 376:cb4d9db17537 1120 break;
mbed_official 489:119543c9f674 1121
mbed_official 376:cb4d9db17537 1122 default:
mbed_official 376:cb4d9db17537 1123 break;
mbed_official 489:119543c9f674 1124 }
mbed_official 489:119543c9f674 1125
mbed_official 376:cb4d9db17537 1126 /* Enable the Capture compare channel */
mbed_official 376:cb4d9db17537 1127 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 1128
mbed_official 376:cb4d9db17537 1129 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 1130 __HAL_TIM_ENABLE(htim);
mbed_official 489:119543c9f674 1131
mbed_official 376:cb4d9db17537 1132 /* Return function status */
mbed_official 376:cb4d9db17537 1133 return HAL_OK;
mbed_official 489:119543c9f674 1134 }
mbed_official 376:cb4d9db17537 1135
mbed_official 376:cb4d9db17537 1136 /**
mbed_official 376:cb4d9db17537 1137 * @brief Stops the PWM signal generation in interrupt mode.
mbed_official 489:119543c9f674 1138 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1139 * @param Channel: TIM Channels to be disabled.
mbed_official 376:cb4d9db17537 1140 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1141 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1142 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1143 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1144 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1145 * @retval HAL status
mbed_official 376:cb4d9db17537 1146 */
mbed_official 376:cb4d9db17537 1147 HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT (TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1148 {
mbed_official 376:cb4d9db17537 1149 /* Check the parameters */
mbed_official 376:cb4d9db17537 1150 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1151
mbed_official 376:cb4d9db17537 1152 switch (Channel)
mbed_official 376:cb4d9db17537 1153 {
mbed_official 376:cb4d9db17537 1154 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 1155 {
mbed_official 376:cb4d9db17537 1156 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 376:cb4d9db17537 1157 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 1158 }
mbed_official 376:cb4d9db17537 1159 break;
mbed_official 489:119543c9f674 1160
mbed_official 376:cb4d9db17537 1161 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1162 {
mbed_official 376:cb4d9db17537 1163 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 1164 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 1165 }
mbed_official 376:cb4d9db17537 1166 break;
mbed_official 489:119543c9f674 1167
mbed_official 376:cb4d9db17537 1168 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1169 {
mbed_official 376:cb4d9db17537 1170 /* Disable the TIM Capture/Compare 3 interrupt */
mbed_official 376:cb4d9db17537 1171 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
mbed_official 376:cb4d9db17537 1172 }
mbed_official 376:cb4d9db17537 1173 break;
mbed_official 489:119543c9f674 1174
mbed_official 376:cb4d9db17537 1175 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1176 {
mbed_official 376:cb4d9db17537 1177 /* Disable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 1178 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
mbed_official 376:cb4d9db17537 1179 }
mbed_official 376:cb4d9db17537 1180 break;
mbed_official 489:119543c9f674 1181
mbed_official 376:cb4d9db17537 1182 default:
mbed_official 489:119543c9f674 1183 break;
mbed_official 376:cb4d9db17537 1184 }
mbed_official 489:119543c9f674 1185
mbed_official 376:cb4d9db17537 1186 /* Disable the Capture compare channel */
mbed_official 376:cb4d9db17537 1187 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 1188
mbed_official 376:cb4d9db17537 1189 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 1190 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1191
mbed_official 376:cb4d9db17537 1192 /* Return function status */
mbed_official 376:cb4d9db17537 1193 return HAL_OK;
mbed_official 489:119543c9f674 1194 }
mbed_official 376:cb4d9db17537 1195
mbed_official 376:cb4d9db17537 1196 /**
mbed_official 376:cb4d9db17537 1197 * @brief Starts the TIM PWM signal generation in DMA mode.
mbed_official 489:119543c9f674 1198 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1199 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 1200 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1201 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1202 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1203 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1204 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 489:119543c9f674 1205 * @param pData: The source Buffer address. This buffer contains the values
mbed_official 489:119543c9f674 1206 * which will be loaded inside the capture/compare registers.
mbed_official 376:cb4d9db17537 1207 * @param Length: The length of data to be transferred from memory to TIM peripheral
mbed_official 376:cb4d9db17537 1208 * @retval HAL status
mbed_official 376:cb4d9db17537 1209 */
mbed_official 376:cb4d9db17537 1210 HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
mbed_official 376:cb4d9db17537 1211 {
mbed_official 376:cb4d9db17537 1212 /* Check the parameters */
mbed_official 376:cb4d9db17537 1213 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1214
mbed_official 376:cb4d9db17537 1215 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 376:cb4d9db17537 1216 {
mbed_official 376:cb4d9db17537 1217 return HAL_BUSY;
mbed_official 376:cb4d9db17537 1218 }
mbed_official 376:cb4d9db17537 1219 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 376:cb4d9db17537 1220 {
mbed_official 489:119543c9f674 1221 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 376:cb4d9db17537 1222 {
mbed_official 489:119543c9f674 1223 return HAL_ERROR;
mbed_official 376:cb4d9db17537 1224 }
mbed_official 376:cb4d9db17537 1225 else
mbed_official 376:cb4d9db17537 1226 {
mbed_official 376:cb4d9db17537 1227 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 1228 }
mbed_official 489:119543c9f674 1229 }
mbed_official 376:cb4d9db17537 1230 switch (Channel)
mbed_official 376:cb4d9db17537 1231 {
mbed_official 376:cb4d9db17537 1232 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 1233 {
mbed_official 376:cb4d9db17537 1234 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1235 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 1236
mbed_official 376:cb4d9db17537 1237 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1238 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1239
mbed_official 376:cb4d9db17537 1240 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 1241 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
mbed_official 489:119543c9f674 1242
mbed_official 376:cb4d9db17537 1243 /* Enable the TIM Capture/Compare 1 DMA request */
mbed_official 376:cb4d9db17537 1244 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 1245 }
mbed_official 376:cb4d9db17537 1246 break;
mbed_official 489:119543c9f674 1247
mbed_official 376:cb4d9db17537 1248 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1249 {
mbed_official 376:cb4d9db17537 1250 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1251 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 1252
mbed_official 376:cb4d9db17537 1253 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1254 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1255
mbed_official 376:cb4d9db17537 1256 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 1257 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
mbed_official 489:119543c9f674 1258
mbed_official 376:cb4d9db17537 1259 /* Enable the TIM Capture/Compare 2 DMA request */
mbed_official 376:cb4d9db17537 1260 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 1261 }
mbed_official 376:cb4d9db17537 1262 break;
mbed_official 489:119543c9f674 1263
mbed_official 376:cb4d9db17537 1264 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1265 {
mbed_official 376:cb4d9db17537 1266 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1267 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 1268
mbed_official 376:cb4d9db17537 1269 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1270 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1271
mbed_official 376:cb4d9db17537 1272 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 1273 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
mbed_official 489:119543c9f674 1274
mbed_official 376:cb4d9db17537 1275 /* Enable the TIM Output Capture/Compare 3 request */
mbed_official 376:cb4d9db17537 1276 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 376:cb4d9db17537 1277 }
mbed_official 376:cb4d9db17537 1278 break;
mbed_official 489:119543c9f674 1279
mbed_official 376:cb4d9db17537 1280 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1281 {
mbed_official 376:cb4d9db17537 1282 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1283 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 489:119543c9f674 1284
mbed_official 376:cb4d9db17537 1285 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1286 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1287
mbed_official 376:cb4d9db17537 1288 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 1289 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
mbed_official 489:119543c9f674 1290
mbed_official 376:cb4d9db17537 1291 /* Enable the TIM Capture/Compare 4 DMA request */
mbed_official 376:cb4d9db17537 1292 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 376:cb4d9db17537 1293 }
mbed_official 376:cb4d9db17537 1294 break;
mbed_official 489:119543c9f674 1295
mbed_official 376:cb4d9db17537 1296 default:
mbed_official 376:cb4d9db17537 1297 break;
mbed_official 376:cb4d9db17537 1298 }
mbed_official 376:cb4d9db17537 1299
mbed_official 376:cb4d9db17537 1300 /* Enable the Capture compare channel */
mbed_official 376:cb4d9db17537 1301 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 1302
mbed_official 376:cb4d9db17537 1303 /* Enable the Peripheral */
mbed_official 489:119543c9f674 1304 __HAL_TIM_ENABLE(htim);
mbed_official 489:119543c9f674 1305
mbed_official 376:cb4d9db17537 1306 /* Return function status */
mbed_official 376:cb4d9db17537 1307 return HAL_OK;
mbed_official 376:cb4d9db17537 1308 }
mbed_official 376:cb4d9db17537 1309
mbed_official 376:cb4d9db17537 1310 /**
mbed_official 376:cb4d9db17537 1311 * @brief Stops the TIM PWM signal generation in DMA mode.
mbed_official 489:119543c9f674 1312 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1313 * @param Channel: TIM Channels to be disabled.
mbed_official 376:cb4d9db17537 1314 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1315 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1316 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1317 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1318 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1319 * @retval HAL status
mbed_official 376:cb4d9db17537 1320 */
mbed_official 376:cb4d9db17537 1321 HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1322 {
mbed_official 376:cb4d9db17537 1323 /* Check the parameters */
mbed_official 376:cb4d9db17537 1324 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1325
mbed_official 376:cb4d9db17537 1326 switch (Channel)
mbed_official 376:cb4d9db17537 1327 {
mbed_official 376:cb4d9db17537 1328 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 1329 {
mbed_official 376:cb4d9db17537 1330 /* Disable the TIM Capture/Compare 1 DMA request */
mbed_official 376:cb4d9db17537 1331 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 1332 }
mbed_official 376:cb4d9db17537 1333 break;
mbed_official 489:119543c9f674 1334
mbed_official 376:cb4d9db17537 1335 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1336 {
mbed_official 376:cb4d9db17537 1337 /* Disable the TIM Capture/Compare 2 DMA request */
mbed_official 376:cb4d9db17537 1338 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 1339 }
mbed_official 376:cb4d9db17537 1340 break;
mbed_official 489:119543c9f674 1341
mbed_official 376:cb4d9db17537 1342 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1343 {
mbed_official 376:cb4d9db17537 1344 /* Disable the TIM Capture/Compare 3 DMA request */
mbed_official 376:cb4d9db17537 1345 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 376:cb4d9db17537 1346 }
mbed_official 376:cb4d9db17537 1347 break;
mbed_official 489:119543c9f674 1348
mbed_official 376:cb4d9db17537 1349 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1350 {
mbed_official 376:cb4d9db17537 1351 /* Disable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 1352 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 376:cb4d9db17537 1353 }
mbed_official 376:cb4d9db17537 1354 break;
mbed_official 489:119543c9f674 1355
mbed_official 376:cb4d9db17537 1356 default:
mbed_official 376:cb4d9db17537 1357 break;
mbed_official 489:119543c9f674 1358 }
mbed_official 489:119543c9f674 1359
mbed_official 376:cb4d9db17537 1360 /* Disable the Capture compare channel */
mbed_official 376:cb4d9db17537 1361 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 1362
mbed_official 376:cb4d9db17537 1363 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 1364 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1365
mbed_official 376:cb4d9db17537 1366 /* Change the htim state */
mbed_official 376:cb4d9db17537 1367 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 1368
mbed_official 376:cb4d9db17537 1369 /* Return function status */
mbed_official 376:cb4d9db17537 1370 return HAL_OK;
mbed_official 376:cb4d9db17537 1371 }
mbed_official 376:cb4d9db17537 1372
mbed_official 376:cb4d9db17537 1373 /**
mbed_official 489:119543c9f674 1374 * @}
mbed_official 489:119543c9f674 1375 */
mbed_official 489:119543c9f674 1376
mbed_official 489:119543c9f674 1377 /** @addtogroup TIM_Exported_Functions_Group4
mbed_official 489:119543c9f674 1378 * @brief Time Input Capture functions
mbed_official 489:119543c9f674 1379 *
mbed_official 489:119543c9f674 1380 @verbatim
mbed_official 489:119543c9f674 1381 ==============================================================================
mbed_official 489:119543c9f674 1382 ##### Timer Input Capture functions #####
mbed_official 489:119543c9f674 1383 ==============================================================================
mbed_official 489:119543c9f674 1384 [..]
mbed_official 489:119543c9f674 1385 This section provides functions allowing to:
mbed_official 489:119543c9f674 1386 (+) Initialize and configure the TIM Input Capture.
mbed_official 489:119543c9f674 1387 (+) De-initialize the TIM Input Capture.
mbed_official 489:119543c9f674 1388 (+) Start the Timer Input Capture.
mbed_official 489:119543c9f674 1389 (+) Stop the Timer Input Capture.
mbed_official 489:119543c9f674 1390 (+) Start the Timer Input Capture and enable interrupt.
mbed_official 489:119543c9f674 1391 (+) Stop the Timer Input Capture and disable interrupt.
mbed_official 489:119543c9f674 1392 (+) Start the Timer Input Capture and enable DMA transfer.
mbed_official 489:119543c9f674 1393 (+) Stop the Timer Input Capture and disable DMA transfer.
mbed_official 489:119543c9f674 1394
mbed_official 489:119543c9f674 1395 @endverbatim
mbed_official 489:119543c9f674 1396 * @{
mbed_official 489:119543c9f674 1397 */
mbed_official 489:119543c9f674 1398 /**
mbed_official 489:119543c9f674 1399 * @brief Initializes the TIM Input Capture Time base according to the specified
mbed_official 489:119543c9f674 1400 * parameters in the TIM_HandleTypeDef and create the associated handle.
mbed_official 489:119543c9f674 1401 * @param htim: TIM Input Capture handle
mbed_official 489:119543c9f674 1402 * @retval HAL status
mbed_official 489:119543c9f674 1403 */
mbed_official 489:119543c9f674 1404 HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1405 {
mbed_official 489:119543c9f674 1406 /* Check the TIM handle allocation */
mbed_official 489:119543c9f674 1407 if(htim == NULL)
mbed_official 489:119543c9f674 1408 {
mbed_official 489:119543c9f674 1409 return HAL_ERROR;
mbed_official 489:119543c9f674 1410 }
mbed_official 489:119543c9f674 1411
mbed_official 489:119543c9f674 1412 /* Check the parameters */
mbed_official 489:119543c9f674 1413 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 1414 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
mbed_official 489:119543c9f674 1415 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
mbed_official 489:119543c9f674 1416 assert_param(IS_TIM_PERIOD(htim->Init.Period));
mbed_official 489:119543c9f674 1417 assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler));
mbed_official 489:119543c9f674 1418
mbed_official 489:119543c9f674 1419 if(htim->State == HAL_TIM_STATE_RESET)
mbed_official 489:119543c9f674 1420 {
mbed_official 489:119543c9f674 1421 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
mbed_official 489:119543c9f674 1422 HAL_TIM_IC_MspInit(htim);
mbed_official 489:119543c9f674 1423 }
mbed_official 489:119543c9f674 1424
mbed_official 489:119543c9f674 1425 /* Set the TIM state */
mbed_official 489:119543c9f674 1426 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 1427
mbed_official 489:119543c9f674 1428 /* Init the base time for the input capture */
mbed_official 489:119543c9f674 1429 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 489:119543c9f674 1430
mbed_official 489:119543c9f674 1431 /* Initialize the TIM state*/
mbed_official 489:119543c9f674 1432 htim->State= HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 1433
mbed_official 489:119543c9f674 1434 return HAL_OK;
mbed_official 489:119543c9f674 1435 }
mbed_official 489:119543c9f674 1436
mbed_official 489:119543c9f674 1437 /**
mbed_official 489:119543c9f674 1438 * @brief DeInitializes the TIM peripheral
mbed_official 489:119543c9f674 1439 * @param htim: TIM Input Capture handle
mbed_official 489:119543c9f674 1440 * @retval HAL status
mbed_official 489:119543c9f674 1441 */
mbed_official 489:119543c9f674 1442 HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1443 {
mbed_official 489:119543c9f674 1444 /* Check the parameters */
mbed_official 489:119543c9f674 1445 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 1446
mbed_official 489:119543c9f674 1447 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 1448
mbed_official 489:119543c9f674 1449 /* Disable the TIM Peripheral Clock */
mbed_official 489:119543c9f674 1450 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1451
mbed_official 489:119543c9f674 1452 /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */
mbed_official 489:119543c9f674 1453 HAL_TIM_IC_MspDeInit(htim);
mbed_official 489:119543c9f674 1454
mbed_official 489:119543c9f674 1455 /* Change TIM state */
mbed_official 489:119543c9f674 1456 htim->State = HAL_TIM_STATE_RESET;
mbed_official 489:119543c9f674 1457
mbed_official 489:119543c9f674 1458 /* Release Lock */
mbed_official 489:119543c9f674 1459 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 1460
mbed_official 489:119543c9f674 1461 return HAL_OK;
mbed_official 489:119543c9f674 1462 }
mbed_official 489:119543c9f674 1463
mbed_official 489:119543c9f674 1464 /**
mbed_official 489:119543c9f674 1465 * @brief Initializes the TIM INput Capture MSP.
mbed_official 489:119543c9f674 1466 * @param htim : TIM handle
mbed_official 489:119543c9f674 1467 * @retval None
mbed_official 489:119543c9f674 1468 */
mbed_official 489:119543c9f674 1469 __weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1470 {
mbed_official 489:119543c9f674 1471 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 1472 the HAL_TIM_IC_MspInit could be implemented in the user file
mbed_official 489:119543c9f674 1473 */
mbed_official 489:119543c9f674 1474 }
mbed_official 489:119543c9f674 1475
mbed_official 489:119543c9f674 1476 /**
mbed_official 489:119543c9f674 1477 * @brief DeInitializes TIM Input Capture MSP.
mbed_official 489:119543c9f674 1478 * @param htim : TIM handle
mbed_official 489:119543c9f674 1479 * @retval None
mbed_official 489:119543c9f674 1480 */
mbed_official 489:119543c9f674 1481 __weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1482 {
mbed_official 489:119543c9f674 1483 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 1484 the HAL_TIM_IC_MspDeInit could be implemented in the user file
mbed_official 489:119543c9f674 1485 */
mbed_official 489:119543c9f674 1486 }
mbed_official 489:119543c9f674 1487 /**
mbed_official 376:cb4d9db17537 1488 * @brief Starts the TIM Input Capture measurement.
mbed_official 489:119543c9f674 1489 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1490 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 1491 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1492 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1493 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1494 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1495 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1496 * @retval HAL status
mbed_official 376:cb4d9db17537 1497 */
mbed_official 376:cb4d9db17537 1498 HAL_StatusTypeDef HAL_TIM_IC_Start (TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1499 {
mbed_official 376:cb4d9db17537 1500 /* Check the parameters */
mbed_official 376:cb4d9db17537 1501 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1502
mbed_official 376:cb4d9db17537 1503 /* Enable the Input Capture channel */
mbed_official 376:cb4d9db17537 1504 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 1505
mbed_official 376:cb4d9db17537 1506 /* Enable the Peripheral */
mbed_official 489:119543c9f674 1507 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 1508
mbed_official 376:cb4d9db17537 1509 /* Return function status */
mbed_official 489:119543c9f674 1510 return HAL_OK;
mbed_official 489:119543c9f674 1511 }
mbed_official 376:cb4d9db17537 1512
mbed_official 376:cb4d9db17537 1513 /**
mbed_official 376:cb4d9db17537 1514 * @brief Stops the TIM Input Capture measurement.
mbed_official 489:119543c9f674 1515 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1516 * @param Channel: TIM Channels to be disabled.
mbed_official 376:cb4d9db17537 1517 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1518 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1519 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1520 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1521 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1522 * @retval HAL status
mbed_official 376:cb4d9db17537 1523 */
mbed_official 376:cb4d9db17537 1524 HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 489:119543c9f674 1525 {
mbed_official 376:cb4d9db17537 1526 /* Check the parameters */
mbed_official 376:cb4d9db17537 1527 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1528
mbed_official 376:cb4d9db17537 1529 /* Disable the Input Capture channel */
mbed_official 376:cb4d9db17537 1530 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 1531
mbed_official 376:cb4d9db17537 1532 /* Disable the Peripheral */
mbed_official 489:119543c9f674 1533 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1534
mbed_official 376:cb4d9db17537 1535 /* Return function status */
mbed_official 376:cb4d9db17537 1536 return HAL_OK;
mbed_official 376:cb4d9db17537 1537 }
mbed_official 376:cb4d9db17537 1538
mbed_official 376:cb4d9db17537 1539 /**
mbed_official 376:cb4d9db17537 1540 * @brief Starts the TIM Input Capture measurement in interrupt mode.
mbed_official 489:119543c9f674 1541 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1542 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 1543 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1544 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1545 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1546 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1547 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1548 * @retval HAL status
mbed_official 376:cb4d9db17537 1549 */
mbed_official 376:cb4d9db17537 1550 HAL_StatusTypeDef HAL_TIM_IC_Start_IT (TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1551 {
mbed_official 376:cb4d9db17537 1552 /* Check the parameters */
mbed_official 376:cb4d9db17537 1553 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1554
mbed_official 376:cb4d9db17537 1555 switch (Channel)
mbed_official 376:cb4d9db17537 1556 {
mbed_official 376:cb4d9db17537 1557 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 1558 {
mbed_official 376:cb4d9db17537 1559 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 376:cb4d9db17537 1560 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 1561 }
mbed_official 376:cb4d9db17537 1562 break;
mbed_official 489:119543c9f674 1563
mbed_official 376:cb4d9db17537 1564 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1565 {
mbed_official 376:cb4d9db17537 1566 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 1567 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 1568 }
mbed_official 376:cb4d9db17537 1569 break;
mbed_official 489:119543c9f674 1570
mbed_official 376:cb4d9db17537 1571 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1572 {
mbed_official 376:cb4d9db17537 1573 /* Enable the TIM Capture/Compare 3 interrupt */
mbed_official 376:cb4d9db17537 1574 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
mbed_official 376:cb4d9db17537 1575 }
mbed_official 376:cb4d9db17537 1576 break;
mbed_official 489:119543c9f674 1577
mbed_official 376:cb4d9db17537 1578 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1579 {
mbed_official 376:cb4d9db17537 1580 /* Enable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 1581 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
mbed_official 376:cb4d9db17537 1582 }
mbed_official 376:cb4d9db17537 1583 break;
mbed_official 489:119543c9f674 1584
mbed_official 376:cb4d9db17537 1585 default:
mbed_official 376:cb4d9db17537 1586 break;
mbed_official 489:119543c9f674 1587 }
mbed_official 376:cb4d9db17537 1588 /* Enable the Input Capture channel */
mbed_official 376:cb4d9db17537 1589 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 1590
mbed_official 376:cb4d9db17537 1591 /* Enable the Peripheral */
mbed_official 489:119543c9f674 1592 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 1593
mbed_official 376:cb4d9db17537 1594 /* Return function status */
mbed_official 489:119543c9f674 1595 return HAL_OK;
mbed_official 489:119543c9f674 1596 }
mbed_official 376:cb4d9db17537 1597
mbed_official 376:cb4d9db17537 1598 /**
mbed_official 376:cb4d9db17537 1599 * @brief Stops the TIM Input Capture measurement in interrupt mode.
mbed_official 489:119543c9f674 1600 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1601 * @param Channel : TIM Channels to be disabled
mbed_official 376:cb4d9db17537 1602 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1603 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1604 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1605 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1606 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1607 * @retval HAL status
mbed_official 376:cb4d9db17537 1608 */
mbed_official 376:cb4d9db17537 1609 HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1610 {
mbed_official 376:cb4d9db17537 1611 /* Check the parameters */
mbed_official 376:cb4d9db17537 1612 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 489:119543c9f674 1613
mbed_official 376:cb4d9db17537 1614 switch (Channel)
mbed_official 376:cb4d9db17537 1615 {
mbed_official 376:cb4d9db17537 1616 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 1617 {
mbed_official 376:cb4d9db17537 1618 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 376:cb4d9db17537 1619 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 1620 }
mbed_official 376:cb4d9db17537 1621 break;
mbed_official 489:119543c9f674 1622
mbed_official 376:cb4d9db17537 1623 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1624 {
mbed_official 376:cb4d9db17537 1625 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 1626 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 1627 }
mbed_official 376:cb4d9db17537 1628 break;
mbed_official 489:119543c9f674 1629
mbed_official 376:cb4d9db17537 1630 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1631 {
mbed_official 376:cb4d9db17537 1632 /* Disable the TIM Capture/Compare 3 interrupt */
mbed_official 376:cb4d9db17537 1633 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
mbed_official 376:cb4d9db17537 1634 }
mbed_official 376:cb4d9db17537 1635 break;
mbed_official 489:119543c9f674 1636
mbed_official 376:cb4d9db17537 1637 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1638 {
mbed_official 376:cb4d9db17537 1639 /* Disable the TIM Capture/Compare 4 interrupt */
mbed_official 376:cb4d9db17537 1640 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
mbed_official 376:cb4d9db17537 1641 }
mbed_official 376:cb4d9db17537 1642 break;
mbed_official 489:119543c9f674 1643
mbed_official 376:cb4d9db17537 1644 default:
mbed_official 489:119543c9f674 1645 break;
mbed_official 489:119543c9f674 1646 }
mbed_official 489:119543c9f674 1647
mbed_official 376:cb4d9db17537 1648 /* Disable the Input Capture channel */
mbed_official 489:119543c9f674 1649 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 1650
mbed_official 376:cb4d9db17537 1651 /* Disable the Peripheral */
mbed_official 489:119543c9f674 1652 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1653
mbed_official 376:cb4d9db17537 1654 /* Return function status */
mbed_official 376:cb4d9db17537 1655 return HAL_OK;
mbed_official 376:cb4d9db17537 1656 }
mbed_official 376:cb4d9db17537 1657
mbed_official 376:cb4d9db17537 1658 /**
mbed_official 376:cb4d9db17537 1659 * @brief Starts the TIM Input Capture measurement on in DMA mode.
mbed_official 489:119543c9f674 1660 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1661 * @param Channel : TIM Channels to be enabled
mbed_official 376:cb4d9db17537 1662 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1663 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1664 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1665 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1666 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1667 * @param pData: The destination Buffer address.
mbed_official 376:cb4d9db17537 1668 * @param Length: The length of data to be transferred from TIM peripheral to memory.
mbed_official 376:cb4d9db17537 1669 * @retval HAL status
mbed_official 376:cb4d9db17537 1670 */
mbed_official 376:cb4d9db17537 1671 HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
mbed_official 376:cb4d9db17537 1672 {
mbed_official 376:cb4d9db17537 1673 /* Check the parameters */
mbed_official 376:cb4d9db17537 1674 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 376:cb4d9db17537 1675 assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 1676
mbed_official 376:cb4d9db17537 1677 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 376:cb4d9db17537 1678 {
mbed_official 376:cb4d9db17537 1679 return HAL_BUSY;
mbed_official 376:cb4d9db17537 1680 }
mbed_official 376:cb4d9db17537 1681 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 376:cb4d9db17537 1682 {
mbed_official 489:119543c9f674 1683 if((pData == 0 ) && (Length > 0))
mbed_official 376:cb4d9db17537 1684 {
mbed_official 489:119543c9f674 1685 return HAL_ERROR;
mbed_official 376:cb4d9db17537 1686 }
mbed_official 376:cb4d9db17537 1687 else
mbed_official 376:cb4d9db17537 1688 {
mbed_official 376:cb4d9db17537 1689 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 1690 }
mbed_official 489:119543c9f674 1691 }
mbed_official 489:119543c9f674 1692
mbed_official 376:cb4d9db17537 1693 switch (Channel)
mbed_official 376:cb4d9db17537 1694 {
mbed_official 376:cb4d9db17537 1695 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 1696 {
mbed_official 376:cb4d9db17537 1697 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1698 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 1699
mbed_official 376:cb4d9db17537 1700 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1701 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1702
mbed_official 376:cb4d9db17537 1703 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 1704 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length);
mbed_official 489:119543c9f674 1705
mbed_official 489:119543c9f674 1706 /* Enable the TIM Capture/Compare 1 DMA request */
mbed_official 376:cb4d9db17537 1707 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 1708 }
mbed_official 376:cb4d9db17537 1709 break;
mbed_official 489:119543c9f674 1710
mbed_official 376:cb4d9db17537 1711 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1712 {
mbed_official 376:cb4d9db17537 1713 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1714 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 1715
mbed_official 376:cb4d9db17537 1716 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1717 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1718
mbed_official 376:cb4d9db17537 1719 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 1720 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData, Length);
mbed_official 489:119543c9f674 1721
mbed_official 376:cb4d9db17537 1722 /* Enable the TIM Capture/Compare 2 DMA request */
mbed_official 376:cb4d9db17537 1723 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 1724 }
mbed_official 376:cb4d9db17537 1725 break;
mbed_official 489:119543c9f674 1726
mbed_official 376:cb4d9db17537 1727 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1728 {
mbed_official 376:cb4d9db17537 1729 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1730 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 1731
mbed_official 376:cb4d9db17537 1732 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1733 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1734
mbed_official 376:cb4d9db17537 1735 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 1736 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData, Length);
mbed_official 489:119543c9f674 1737
mbed_official 376:cb4d9db17537 1738 /* Enable the TIM Capture/Compare 3 DMA request */
mbed_official 376:cb4d9db17537 1739 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 376:cb4d9db17537 1740 }
mbed_official 376:cb4d9db17537 1741 break;
mbed_official 489:119543c9f674 1742
mbed_official 376:cb4d9db17537 1743 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1744 {
mbed_official 376:cb4d9db17537 1745 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 1746 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 1747
mbed_official 376:cb4d9db17537 1748 /* Set the DMA error callback */
mbed_official 489:119543c9f674 1749 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 1750
mbed_official 376:cb4d9db17537 1751 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 1752 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData, Length);
mbed_official 489:119543c9f674 1753
mbed_official 376:cb4d9db17537 1754 /* Enable the TIM Capture/Compare 4 DMA request */
mbed_official 376:cb4d9db17537 1755 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 376:cb4d9db17537 1756 }
mbed_official 376:cb4d9db17537 1757 break;
mbed_official 489:119543c9f674 1758
mbed_official 376:cb4d9db17537 1759 default:
mbed_official 376:cb4d9db17537 1760 break;
mbed_official 376:cb4d9db17537 1761 }
mbed_official 376:cb4d9db17537 1762
mbed_official 376:cb4d9db17537 1763 /* Enable the Input Capture channel */
mbed_official 376:cb4d9db17537 1764 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 1765
mbed_official 376:cb4d9db17537 1766 /* Enable the Peripheral */
mbed_official 489:119543c9f674 1767 __HAL_TIM_ENABLE(htim);
mbed_official 489:119543c9f674 1768
mbed_official 376:cb4d9db17537 1769 /* Return function status */
mbed_official 376:cb4d9db17537 1770 return HAL_OK;
mbed_official 376:cb4d9db17537 1771 }
mbed_official 376:cb4d9db17537 1772
mbed_official 376:cb4d9db17537 1773 /**
mbed_official 376:cb4d9db17537 1774 * @brief Stops the TIM Input Capture measurement on in DMA mode.
mbed_official 489:119543c9f674 1775 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1776 * @param Channel : TIM Channels to be disabled
mbed_official 376:cb4d9db17537 1777 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1778 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1779 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1780 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 1781 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 1782 * @retval HAL status
mbed_official 376:cb4d9db17537 1783 */
mbed_official 376:cb4d9db17537 1784 HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 1785 {
mbed_official 376:cb4d9db17537 1786 /* Check the parameters */
mbed_official 376:cb4d9db17537 1787 assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
mbed_official 376:cb4d9db17537 1788 assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 1789
mbed_official 376:cb4d9db17537 1790 switch (Channel)
mbed_official 376:cb4d9db17537 1791 {
mbed_official 376:cb4d9db17537 1792 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 1793 {
mbed_official 376:cb4d9db17537 1794 /* Disable the TIM Capture/Compare 1 DMA request */
mbed_official 376:cb4d9db17537 1795 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 1796 }
mbed_official 376:cb4d9db17537 1797 break;
mbed_official 489:119543c9f674 1798
mbed_official 376:cb4d9db17537 1799 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 1800 {
mbed_official 376:cb4d9db17537 1801 /* Disable the TIM Capture/Compare 2 DMA request */
mbed_official 376:cb4d9db17537 1802 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 1803 }
mbed_official 376:cb4d9db17537 1804 break;
mbed_official 489:119543c9f674 1805
mbed_official 376:cb4d9db17537 1806 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 1807 {
mbed_official 376:cb4d9db17537 1808 /* Disable the TIM Capture/Compare 3 DMA request */
mbed_official 376:cb4d9db17537 1809 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 376:cb4d9db17537 1810 }
mbed_official 376:cb4d9db17537 1811 break;
mbed_official 489:119543c9f674 1812
mbed_official 376:cb4d9db17537 1813 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 1814 {
mbed_official 376:cb4d9db17537 1815 /* Disable the TIM Capture/Compare 4 DMA request */
mbed_official 376:cb4d9db17537 1816 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 376:cb4d9db17537 1817 }
mbed_official 376:cb4d9db17537 1818 break;
mbed_official 489:119543c9f674 1819
mbed_official 376:cb4d9db17537 1820 default:
mbed_official 376:cb4d9db17537 1821 break;
mbed_official 376:cb4d9db17537 1822 }
mbed_official 376:cb4d9db17537 1823
mbed_official 376:cb4d9db17537 1824 /* Disable the Input Capture channel */
mbed_official 376:cb4d9db17537 1825 TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 1826
mbed_official 376:cb4d9db17537 1827 /* Disable the Peripheral */
mbed_official 489:119543c9f674 1828 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1829
mbed_official 376:cb4d9db17537 1830 /* Change the htim state */
mbed_official 376:cb4d9db17537 1831 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 1832
mbed_official 376:cb4d9db17537 1833 /* Return function status */
mbed_official 376:cb4d9db17537 1834 return HAL_OK;
mbed_official 376:cb4d9db17537 1835 }
mbed_official 376:cb4d9db17537 1836
mbed_official 376:cb4d9db17537 1837 /**
mbed_official 489:119543c9f674 1838 * @}
mbed_official 489:119543c9f674 1839 */
mbed_official 489:119543c9f674 1840
mbed_official 489:119543c9f674 1841 /** @addtogroup TIM_Exported_Functions_Group5
mbed_official 489:119543c9f674 1842 * @brief Time One Pulse functions
mbed_official 489:119543c9f674 1843 *
mbed_official 489:119543c9f674 1844 @verbatim
mbed_official 489:119543c9f674 1845 ==============================================================================
mbed_official 489:119543c9f674 1846 ##### Timer One Pulse functions #####
mbed_official 489:119543c9f674 1847 ==============================================================================
mbed_official 489:119543c9f674 1848 [..]
mbed_official 489:119543c9f674 1849 This section provides functions allowing to:
mbed_official 489:119543c9f674 1850 (+) Initialize and configure the TIM One Pulse.
mbed_official 489:119543c9f674 1851 (+) De-initialize the TIM One Pulse.
mbed_official 489:119543c9f674 1852 (+) Start the Timer One Pulse.
mbed_official 489:119543c9f674 1853 (+) Stop the Timer One Pulse.
mbed_official 489:119543c9f674 1854 (+) Start the Timer One Pulse and enable interrupt.
mbed_official 489:119543c9f674 1855 (+) Stop the Timer One Pulse and disable interrupt.
mbed_official 489:119543c9f674 1856 (+) Start the Timer One Pulse and enable DMA transfer.
mbed_official 489:119543c9f674 1857 (+) Stop the Timer One Pulse and disable DMA transfer.
mbed_official 489:119543c9f674 1858
mbed_official 489:119543c9f674 1859 @endverbatim
mbed_official 489:119543c9f674 1860 * @{
mbed_official 489:119543c9f674 1861 */
mbed_official 489:119543c9f674 1862 /**
mbed_official 489:119543c9f674 1863 * @brief Initializes the TIM One Pulse Time Base according to the specified
mbed_official 489:119543c9f674 1864 * parameters in the TIM_HandleTypeDef and create the associated handle.
mbed_official 489:119543c9f674 1865 * @param htim: TIM OnePulse handle
mbed_official 489:119543c9f674 1866 * @param OnePulseMode: Select the One pulse mode.
mbed_official 489:119543c9f674 1867 * This parameter can be one of the following values:
mbed_official 489:119543c9f674 1868 * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated.
mbed_official 489:119543c9f674 1869 * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated.
mbed_official 489:119543c9f674 1870 * @retval HAL status
mbed_official 489:119543c9f674 1871 */
mbed_official 489:119543c9f674 1872 HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode)
mbed_official 489:119543c9f674 1873 {
mbed_official 489:119543c9f674 1874 /* Check the TIM handle allocation */
mbed_official 489:119543c9f674 1875 if(htim == NULL)
mbed_official 489:119543c9f674 1876 {
mbed_official 489:119543c9f674 1877 return HAL_ERROR;
mbed_official 489:119543c9f674 1878 }
mbed_official 489:119543c9f674 1879
mbed_official 489:119543c9f674 1880 /* Check the parameters */
mbed_official 489:119543c9f674 1881 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 1882 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
mbed_official 489:119543c9f674 1883 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
mbed_official 489:119543c9f674 1884 assert_param(IS_TIM_OPM_MODE(OnePulseMode));
mbed_official 489:119543c9f674 1885 assert_param(IS_TIM_PERIOD(htim->Init.Period));
mbed_official 489:119543c9f674 1886 assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler));
mbed_official 489:119543c9f674 1887
mbed_official 489:119543c9f674 1888 if(htim->State == HAL_TIM_STATE_RESET)
mbed_official 489:119543c9f674 1889 {
mbed_official 489:119543c9f674 1890 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
mbed_official 489:119543c9f674 1891 HAL_TIM_OnePulse_MspInit(htim);
mbed_official 489:119543c9f674 1892 }
mbed_official 489:119543c9f674 1893
mbed_official 489:119543c9f674 1894 /* Set the TIM state */
mbed_official 489:119543c9f674 1895 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 1896
mbed_official 489:119543c9f674 1897 /* Configure the Time base in the One Pulse Mode */
mbed_official 489:119543c9f674 1898 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 489:119543c9f674 1899
mbed_official 489:119543c9f674 1900 /* Reset the OPM Bit */
mbed_official 489:119543c9f674 1901 htim->Instance->CR1 &= ~TIM_CR1_OPM;
mbed_official 489:119543c9f674 1902
mbed_official 489:119543c9f674 1903 /* Configure the OPM Mode */
mbed_official 489:119543c9f674 1904 htim->Instance->CR1 |= OnePulseMode;
mbed_official 489:119543c9f674 1905
mbed_official 489:119543c9f674 1906 /* Initialize the TIM state*/
mbed_official 489:119543c9f674 1907 htim->State= HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 1908
mbed_official 489:119543c9f674 1909 return HAL_OK;
mbed_official 489:119543c9f674 1910 }
mbed_official 489:119543c9f674 1911
mbed_official 489:119543c9f674 1912 /**
mbed_official 489:119543c9f674 1913 * @brief DeInitializes the TIM One Pulse
mbed_official 489:119543c9f674 1914 * @param htim: TIM One Pulse handle
mbed_official 489:119543c9f674 1915 * @retval HAL status
mbed_official 489:119543c9f674 1916 */
mbed_official 489:119543c9f674 1917 HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1918 {
mbed_official 489:119543c9f674 1919 /* Check the parameters */
mbed_official 489:119543c9f674 1920 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 1921
mbed_official 489:119543c9f674 1922 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 1923
mbed_official 489:119543c9f674 1924 /* Disable the TIM Peripheral Clock */
mbed_official 489:119543c9f674 1925 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 1926
mbed_official 489:119543c9f674 1927 /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
mbed_official 489:119543c9f674 1928 HAL_TIM_OnePulse_MspDeInit(htim);
mbed_official 489:119543c9f674 1929
mbed_official 489:119543c9f674 1930 /* Change TIM state */
mbed_official 489:119543c9f674 1931 htim->State = HAL_TIM_STATE_RESET;
mbed_official 489:119543c9f674 1932
mbed_official 489:119543c9f674 1933 /* Release Lock */
mbed_official 489:119543c9f674 1934 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 1935
mbed_official 489:119543c9f674 1936 return HAL_OK;
mbed_official 489:119543c9f674 1937 }
mbed_official 489:119543c9f674 1938
mbed_official 489:119543c9f674 1939 /**
mbed_official 489:119543c9f674 1940 * @brief Initializes the TIM One Pulse MSP.
mbed_official 489:119543c9f674 1941 * @param htim : TIM handle
mbed_official 489:119543c9f674 1942 * @retval None
mbed_official 489:119543c9f674 1943 */
mbed_official 489:119543c9f674 1944 __weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1945 {
mbed_official 489:119543c9f674 1946 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 1947 the HAL_TIM_OnePulse_MspInit could be implemented in the user file
mbed_official 489:119543c9f674 1948 */
mbed_official 489:119543c9f674 1949 }
mbed_official 489:119543c9f674 1950
mbed_official 489:119543c9f674 1951 /**
mbed_official 489:119543c9f674 1952 * @brief DeInitializes TIM One Pulse MSP.
mbed_official 489:119543c9f674 1953 * @param htim : TIM handle
mbed_official 489:119543c9f674 1954 * @retval None
mbed_official 489:119543c9f674 1955 */
mbed_official 489:119543c9f674 1956 __weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 1957 {
mbed_official 489:119543c9f674 1958 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 1959 the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file
mbed_official 489:119543c9f674 1960 */
mbed_official 489:119543c9f674 1961 }
mbed_official 489:119543c9f674 1962
mbed_official 489:119543c9f674 1963 /**
mbed_official 376:cb4d9db17537 1964 * @brief Starts the TIM One Pulse signal generation.
mbed_official 489:119543c9f674 1965 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1966 * @param OutputChannel : TIM Channels to be enabled.
mbed_official 489:119543c9f674 1967 * This parameter is not used since both channels TIM_CHANNEL_1 and
mbed_official 489:119543c9f674 1968 * TIM_CHANNEL_2 are automatically selected.
mbed_official 376:cb4d9db17537 1969 * @retval HAL status
mbed_official 376:cb4d9db17537 1970 */
mbed_official 376:cb4d9db17537 1971 HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 376:cb4d9db17537 1972 {
mbed_official 489:119543c9f674 1973 /* Enable the Capture compare and the Input Capture channels
mbed_official 376:cb4d9db17537 1974 (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
mbed_official 376:cb4d9db17537 1975 if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
mbed_official 489:119543c9f674 1976 if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output
mbed_official 489:119543c9f674 1977 in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together
mbed_official 489:119543c9f674 1978
mbed_official 489:119543c9f674 1979 No need to enable the counter, it's enabled automatically by hardware
mbed_official 376:cb4d9db17537 1980 (the counter starts in response to a stimulus and generate a pulse */
mbed_official 489:119543c9f674 1981
mbed_official 489:119543c9f674 1982 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 1983 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 1984
mbed_official 376:cb4d9db17537 1985 /* Return function status */
mbed_official 376:cb4d9db17537 1986 return HAL_OK;
mbed_official 376:cb4d9db17537 1987 }
mbed_official 376:cb4d9db17537 1988
mbed_official 376:cb4d9db17537 1989 /**
mbed_official 376:cb4d9db17537 1990 * @brief Stops the TIM One Pulse signal generation.
mbed_official 489:119543c9f674 1991 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 1992 * @param OutputChannel : TIM Channels to be disable.
mbed_official 376:cb4d9db17537 1993 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 1994 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 1995 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 1996 * @retval HAL status
mbed_official 376:cb4d9db17537 1997 */
mbed_official 376:cb4d9db17537 1998 HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 376:cb4d9db17537 1999 {
mbed_official 489:119543c9f674 2000 /* Disable the Capture compare and the Input Capture channels
mbed_official 376:cb4d9db17537 2001 (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
mbed_official 376:cb4d9db17537 2002 if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
mbed_official 489:119543c9f674 2003 if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output
mbed_official 376:cb4d9db17537 2004 in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */
mbed_official 489:119543c9f674 2005
mbed_official 489:119543c9f674 2006 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2007 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 2008
mbed_official 376:cb4d9db17537 2009 /* Disable the Peripheral */
mbed_official 489:119543c9f674 2010 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 2011
mbed_official 376:cb4d9db17537 2012 /* Return function status */
mbed_official 376:cb4d9db17537 2013 return HAL_OK;
mbed_official 376:cb4d9db17537 2014 }
mbed_official 376:cb4d9db17537 2015
mbed_official 376:cb4d9db17537 2016 /**
mbed_official 376:cb4d9db17537 2017 * @brief Starts the TIM One Pulse signal generation in interrupt mode.
mbed_official 489:119543c9f674 2018 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2019 * @param OutputChannel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2020 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2021 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2022 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 2023 * @retval HAL status
mbed_official 376:cb4d9db17537 2024 */
mbed_official 376:cb4d9db17537 2025 HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 376:cb4d9db17537 2026 {
mbed_official 489:119543c9f674 2027 /* Enable the Capture compare and the Input Capture channels
mbed_official 376:cb4d9db17537 2028 (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
mbed_official 376:cb4d9db17537 2029 if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
mbed_official 489:119543c9f674 2030 if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output
mbed_official 489:119543c9f674 2031 in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together
mbed_official 489:119543c9f674 2032
mbed_official 489:119543c9f674 2033 No need to enable the counter, it's enabled automatically by hardware
mbed_official 376:cb4d9db17537 2034 (the counter starts in response to a stimulus and generate a pulse */
mbed_official 489:119543c9f674 2035
mbed_official 376:cb4d9db17537 2036 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 376:cb4d9db17537 2037 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 489:119543c9f674 2038
mbed_official 376:cb4d9db17537 2039 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 2040 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 489:119543c9f674 2041
mbed_official 489:119543c9f674 2042 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 2043 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 489:119543c9f674 2044
mbed_official 376:cb4d9db17537 2045 /* Return function status */
mbed_official 376:cb4d9db17537 2046 return HAL_OK;
mbed_official 376:cb4d9db17537 2047 }
mbed_official 376:cb4d9db17537 2048
mbed_official 376:cb4d9db17537 2049 /**
mbed_official 376:cb4d9db17537 2050 * @brief Stops the TIM One Pulse signal generation in interrupt mode.
mbed_official 489:119543c9f674 2051 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2052 * @param OutputChannel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2053 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2054 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2055 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 2056 * @retval HAL status
mbed_official 376:cb4d9db17537 2057 */
mbed_official 376:cb4d9db17537 2058 HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 376:cb4d9db17537 2059 {
mbed_official 376:cb4d9db17537 2060 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 489:119543c9f674 2061 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 489:119543c9f674 2062
mbed_official 376:cb4d9db17537 2063 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 376:cb4d9db17537 2064 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 489:119543c9f674 2065
mbed_official 489:119543c9f674 2066 /* Disable the Capture compare and the Input Capture channels
mbed_official 376:cb4d9db17537 2067 (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2)
mbed_official 376:cb4d9db17537 2068 if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and
mbed_official 489:119543c9f674 2069 if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output
mbed_official 489:119543c9f674 2070 in all combinations, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */
mbed_official 489:119543c9f674 2071 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2072 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 489:119543c9f674 2073
mbed_official 376:cb4d9db17537 2074 /* Disable the Peripheral */
mbed_official 489:119543c9f674 2075 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 2076
mbed_official 376:cb4d9db17537 2077 /* Return function status */
mbed_official 376:cb4d9db17537 2078 return HAL_OK;
mbed_official 376:cb4d9db17537 2079 }
mbed_official 376:cb4d9db17537 2080
mbed_official 376:cb4d9db17537 2081 /**
mbed_official 489:119543c9f674 2082 * @}
mbed_official 489:119543c9f674 2083 */
mbed_official 489:119543c9f674 2084
mbed_official 489:119543c9f674 2085 /** @addtogroup TIM_Exported_Functions_Group6
mbed_official 489:119543c9f674 2086 * @brief Time Encoder functions
mbed_official 489:119543c9f674 2087 *
mbed_official 489:119543c9f674 2088 @verbatim
mbed_official 489:119543c9f674 2089 ==============================================================================
mbed_official 489:119543c9f674 2090 ##### Timer Encoder functions #####
mbed_official 489:119543c9f674 2091 ==============================================================================
mbed_official 489:119543c9f674 2092 [..]
mbed_official 489:119543c9f674 2093 This section provides functions allowing to:
mbed_official 489:119543c9f674 2094 (+) Initialize and configure the TIM Encoder.
mbed_official 489:119543c9f674 2095 (+) De-initialize the TIM Encoder.
mbed_official 489:119543c9f674 2096 (+) Start the Timer Encoder.
mbed_official 489:119543c9f674 2097 (+) Stop the Timer Encoder.
mbed_official 489:119543c9f674 2098 (+) Start the Timer Encoder and enable interrupt.
mbed_official 489:119543c9f674 2099 (+) Stop the Timer Encoder and disable interrupt.
mbed_official 489:119543c9f674 2100 (+) Start the Timer Encoder and enable DMA transfer.
mbed_official 489:119543c9f674 2101 (+) Stop the Timer Encoder and disable DMA transfer.
mbed_official 489:119543c9f674 2102
mbed_official 489:119543c9f674 2103 @endverbatim
mbed_official 489:119543c9f674 2104 * @{
mbed_official 489:119543c9f674 2105 */
mbed_official 489:119543c9f674 2106 /**
mbed_official 489:119543c9f674 2107 * @brief Initializes the TIM Encoder Interface and create the associated handle.
mbed_official 489:119543c9f674 2108 * @param htim: TIM Encoder Interface handle
mbed_official 489:119543c9f674 2109 * @param sConfig: TIM Encoder Interface configuration structure
mbed_official 489:119543c9f674 2110 * @retval HAL status
mbed_official 489:119543c9f674 2111 */
mbed_official 489:119543c9f674 2112 HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef* sConfig)
mbed_official 489:119543c9f674 2113 {
mbed_official 489:119543c9f674 2114 uint32_t tmpsmcr = 0;
mbed_official 489:119543c9f674 2115 uint32_t tmpccmr1 = 0;
mbed_official 489:119543c9f674 2116 uint32_t tmpccer = 0;
mbed_official 489:119543c9f674 2117
mbed_official 489:119543c9f674 2118 /* Check the TIM handle allocation */
mbed_official 489:119543c9f674 2119 if(htim == NULL)
mbed_official 489:119543c9f674 2120 {
mbed_official 489:119543c9f674 2121 return HAL_ERROR;
mbed_official 489:119543c9f674 2122 }
mbed_official 489:119543c9f674 2123
mbed_official 489:119543c9f674 2124 /* Check the parameters */
mbed_official 489:119543c9f674 2125 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 2126 assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
mbed_official 489:119543c9f674 2127 assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
mbed_official 489:119543c9f674 2128 assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
mbed_official 489:119543c9f674 2129 assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
mbed_official 489:119543c9f674 2130 assert_param(IS_TIM_IC_POLARITY(sConfig->IC2Polarity));
mbed_official 489:119543c9f674 2131 assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
mbed_official 489:119543c9f674 2132 assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
mbed_official 489:119543c9f674 2133 assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
mbed_official 489:119543c9f674 2134 assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter));
mbed_official 489:119543c9f674 2135 assert_param(IS_TIM_PERIOD(htim->Init.Period));
mbed_official 489:119543c9f674 2136 assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler));
mbed_official 489:119543c9f674 2137
mbed_official 489:119543c9f674 2138 if(htim->State == HAL_TIM_STATE_RESET)
mbed_official 489:119543c9f674 2139 {
mbed_official 489:119543c9f674 2140 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
mbed_official 489:119543c9f674 2141 HAL_TIM_Encoder_MspInit(htim);
mbed_official 489:119543c9f674 2142 }
mbed_official 489:119543c9f674 2143
mbed_official 489:119543c9f674 2144 /* Set the TIM state */
mbed_official 489:119543c9f674 2145 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 2146
mbed_official 489:119543c9f674 2147 /* Reset the SMS bits */
mbed_official 489:119543c9f674 2148 htim->Instance->SMCR &= ~TIM_SMCR_SMS;
mbed_official 489:119543c9f674 2149
mbed_official 489:119543c9f674 2150 /* Configure the Time base in the Encoder Mode */
mbed_official 489:119543c9f674 2151 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 489:119543c9f674 2152
mbed_official 489:119543c9f674 2153 /* Get the TIMx SMCR register value */
mbed_official 489:119543c9f674 2154 tmpsmcr = htim->Instance->SMCR;
mbed_official 489:119543c9f674 2155
mbed_official 489:119543c9f674 2156 /* Get the TIMx CCMR1 register value */
mbed_official 489:119543c9f674 2157 tmpccmr1 = htim->Instance->CCMR1;
mbed_official 489:119543c9f674 2158
mbed_official 489:119543c9f674 2159 /* Get the TIMx CCER register value */
mbed_official 489:119543c9f674 2160 tmpccer = htim->Instance->CCER;
mbed_official 489:119543c9f674 2161
mbed_official 489:119543c9f674 2162 /* Set the encoder Mode */
mbed_official 489:119543c9f674 2163 tmpsmcr |= sConfig->EncoderMode;
mbed_official 489:119543c9f674 2164
mbed_official 489:119543c9f674 2165 /* Select the Capture Compare 1 and the Capture Compare 2 as input */
mbed_official 489:119543c9f674 2166 tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S);
mbed_official 489:119543c9f674 2167 tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8));
mbed_official 489:119543c9f674 2168
mbed_official 489:119543c9f674 2169 /* Set the the Capture Compare 1 and the Capture Compare 2 prescalers and filters */
mbed_official 489:119543c9f674 2170 tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC);
mbed_official 489:119543c9f674 2171 tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F);
mbed_official 489:119543c9f674 2172 tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8);
mbed_official 489:119543c9f674 2173 tmpccmr1 |= (sConfig->IC1Filter << 4) | (sConfig->IC2Filter << 12);
mbed_official 489:119543c9f674 2174
mbed_official 489:119543c9f674 2175 /* Set the TI1 and the TI2 Polarities */
mbed_official 489:119543c9f674 2176 tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);
mbed_official 489:119543c9f674 2177 tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP);
mbed_official 489:119543c9f674 2178 tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4);
mbed_official 489:119543c9f674 2179
mbed_official 489:119543c9f674 2180 /* Write to TIMx SMCR */
mbed_official 489:119543c9f674 2181 htim->Instance->SMCR = tmpsmcr;
mbed_official 489:119543c9f674 2182
mbed_official 489:119543c9f674 2183 /* Write to TIMx CCMR1 */
mbed_official 489:119543c9f674 2184 htim->Instance->CCMR1 = tmpccmr1;
mbed_official 489:119543c9f674 2185
mbed_official 489:119543c9f674 2186 /* Write to TIMx CCER */
mbed_official 489:119543c9f674 2187 htim->Instance->CCER = tmpccer;
mbed_official 489:119543c9f674 2188
mbed_official 489:119543c9f674 2189 /* Initialize the TIM state*/
mbed_official 489:119543c9f674 2190 htim->State= HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 2191
mbed_official 489:119543c9f674 2192 return HAL_OK;
mbed_official 489:119543c9f674 2193 }
mbed_official 489:119543c9f674 2194
mbed_official 489:119543c9f674 2195 /**
mbed_official 489:119543c9f674 2196 * @brief DeInitializes the TIM Encoder interface
mbed_official 489:119543c9f674 2197 * @param htim: TIM Encoder handle
mbed_official 489:119543c9f674 2198 * @retval HAL status
mbed_official 489:119543c9f674 2199 */
mbed_official 489:119543c9f674 2200 HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 2201 {
mbed_official 489:119543c9f674 2202 /* Check the parameters */
mbed_official 489:119543c9f674 2203 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 2204
mbed_official 489:119543c9f674 2205 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 2206
mbed_official 489:119543c9f674 2207 /* Disable the TIM Peripheral Clock */
mbed_official 489:119543c9f674 2208 __HAL_TIM_DISABLE(htim);
mbed_official 489:119543c9f674 2209
mbed_official 489:119543c9f674 2210 /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
mbed_official 489:119543c9f674 2211 HAL_TIM_Encoder_MspDeInit(htim);
mbed_official 489:119543c9f674 2212
mbed_official 489:119543c9f674 2213 /* Change TIM state */
mbed_official 489:119543c9f674 2214 htim->State = HAL_TIM_STATE_RESET;
mbed_official 489:119543c9f674 2215
mbed_official 489:119543c9f674 2216 /* Release Lock */
mbed_official 489:119543c9f674 2217 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 2218
mbed_official 489:119543c9f674 2219 return HAL_OK;
mbed_official 489:119543c9f674 2220 }
mbed_official 489:119543c9f674 2221
mbed_official 489:119543c9f674 2222
mbed_official 489:119543c9f674 2223 /**
mbed_official 489:119543c9f674 2224 * @brief Initializes the TIM Encoder Interface MSP.
mbed_official 489:119543c9f674 2225 * @param htim : TIM handle
mbed_official 489:119543c9f674 2226 * @retval None
mbed_official 489:119543c9f674 2227 */
mbed_official 489:119543c9f674 2228 __weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 2229 {
mbed_official 489:119543c9f674 2230 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 2231 the HAL_TIM_Encoder_MspInit could be implemented in the user file
mbed_official 489:119543c9f674 2232 */
mbed_official 489:119543c9f674 2233 }
mbed_official 489:119543c9f674 2234
mbed_official 489:119543c9f674 2235
mbed_official 489:119543c9f674 2236 /**
mbed_official 489:119543c9f674 2237 * @brief DeInitializes TIM Encoder Interface MSP.
mbed_official 489:119543c9f674 2238 * @param htim : TIM handle
mbed_official 489:119543c9f674 2239 * @retval None
mbed_official 489:119543c9f674 2240 */
mbed_official 489:119543c9f674 2241 __weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 2242 {
mbed_official 489:119543c9f674 2243 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 489:119543c9f674 2244 the HAL_TIM_Encoder_MspDeInit could be implemented in the user file
mbed_official 489:119543c9f674 2245 */
mbed_official 489:119543c9f674 2246 }
mbed_official 489:119543c9f674 2247
mbed_official 489:119543c9f674 2248 /**
mbed_official 376:cb4d9db17537 2249 * @brief Starts the TIM Encoder Interface.
mbed_official 489:119543c9f674 2250 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2251 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2252 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2253 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2254 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 489:119543c9f674 2255 * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
mbed_official 376:cb4d9db17537 2256 * @retval HAL status
mbed_official 376:cb4d9db17537 2257 */
mbed_official 376:cb4d9db17537 2258 HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 2259 {
mbed_official 376:cb4d9db17537 2260 /* Check the parameters */
mbed_official 376:cb4d9db17537 2261 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2262
mbed_official 376:cb4d9db17537 2263 /* Enable the encoder interface channels */
mbed_official 376:cb4d9db17537 2264 switch (Channel)
mbed_official 376:cb4d9db17537 2265 {
mbed_official 376:cb4d9db17537 2266 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 2267 {
mbed_official 376:cb4d9db17537 2268 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2269 break;
mbed_official 376:cb4d9db17537 2270 }
mbed_official 376:cb4d9db17537 2271 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 2272 {
mbed_official 376:cb4d9db17537 2273 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2274 break;
mbed_official 376:cb4d9db17537 2275 }
mbed_official 376:cb4d9db17537 2276 default :
mbed_official 376:cb4d9db17537 2277 {
mbed_official 376:cb4d9db17537 2278 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2279 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2280 break;
mbed_official 376:cb4d9db17537 2281 }
mbed_official 376:cb4d9db17537 2282 }
mbed_official 376:cb4d9db17537 2283 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 2284 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 2285
mbed_official 376:cb4d9db17537 2286 /* Return function status */
mbed_official 376:cb4d9db17537 2287 return HAL_OK;
mbed_official 376:cb4d9db17537 2288 }
mbed_official 376:cb4d9db17537 2289
mbed_official 376:cb4d9db17537 2290 /**
mbed_official 376:cb4d9db17537 2291 * @brief Stops the TIM Encoder Interface.
mbed_official 489:119543c9f674 2292 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2293 * @param Channel: TIM Channels to be disabled.
mbed_official 376:cb4d9db17537 2294 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2295 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2296 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 489:119543c9f674 2297 * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
mbed_official 376:cb4d9db17537 2298 * @retval HAL status
mbed_official 376:cb4d9db17537 2299 */
mbed_official 376:cb4d9db17537 2300 HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 2301 {
mbed_official 376:cb4d9db17537 2302 /* Check the parameters */
mbed_official 376:cb4d9db17537 2303 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2304
mbed_official 376:cb4d9db17537 2305 /* Disable the Input Capture channels 1 and 2
mbed_official 376:cb4d9db17537 2306 (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
mbed_official 376:cb4d9db17537 2307 switch (Channel)
mbed_official 376:cb4d9db17537 2308 {
mbed_official 376:cb4d9db17537 2309 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 2310 {
mbed_official 376:cb4d9db17537 2311 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2312 break;
mbed_official 376:cb4d9db17537 2313 }
mbed_official 376:cb4d9db17537 2314 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 2315 {
mbed_official 376:cb4d9db17537 2316 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2317 break;
mbed_official 376:cb4d9db17537 2318 }
mbed_official 376:cb4d9db17537 2319 default :
mbed_official 376:cb4d9db17537 2320 {
mbed_official 376:cb4d9db17537 2321 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2322 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2323 break;
mbed_official 376:cb4d9db17537 2324 }
mbed_official 376:cb4d9db17537 2325 }
mbed_official 376:cb4d9db17537 2326 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 2327 __HAL_TIM_DISABLE(htim);
mbed_official 376:cb4d9db17537 2328
mbed_official 376:cb4d9db17537 2329 /* Return function status */
mbed_official 376:cb4d9db17537 2330 return HAL_OK;
mbed_official 376:cb4d9db17537 2331 }
mbed_official 376:cb4d9db17537 2332
mbed_official 376:cb4d9db17537 2333 /**
mbed_official 376:cb4d9db17537 2334 * @brief Starts the TIM Encoder Interface in interrupt mode.
mbed_official 489:119543c9f674 2335 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2336 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2337 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2338 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2339 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 489:119543c9f674 2340 * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
mbed_official 376:cb4d9db17537 2341 * @retval HAL status
mbed_official 376:cb4d9db17537 2342 */
mbed_official 376:cb4d9db17537 2343 HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 2344 {
mbed_official 376:cb4d9db17537 2345 /* Check the parameters */
mbed_official 376:cb4d9db17537 2346 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2347
mbed_official 376:cb4d9db17537 2348 /* Enable the encoder interface channels */
mbed_official 376:cb4d9db17537 2349 /* Enable the capture compare Interrupts 1 and/or 2 */
mbed_official 376:cb4d9db17537 2350 switch (Channel)
mbed_official 376:cb4d9db17537 2351 {
mbed_official 376:cb4d9db17537 2352 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 2353 {
mbed_official 376:cb4d9db17537 2354 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2355 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 2356 break;
mbed_official 376:cb4d9db17537 2357 }
mbed_official 376:cb4d9db17537 2358 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 2359 {
mbed_official 376:cb4d9db17537 2360 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2361 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 2362 break;
mbed_official 376:cb4d9db17537 2363 }
mbed_official 376:cb4d9db17537 2364 default :
mbed_official 376:cb4d9db17537 2365 {
mbed_official 376:cb4d9db17537 2366 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2367 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2368 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 2369 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 2370 break;
mbed_official 376:cb4d9db17537 2371 }
mbed_official 376:cb4d9db17537 2372 }
mbed_official 376:cb4d9db17537 2373
mbed_official 376:cb4d9db17537 2374 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 2375 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 2376
mbed_official 376:cb4d9db17537 2377 /* Return function status */
mbed_official 376:cb4d9db17537 2378 return HAL_OK;
mbed_official 376:cb4d9db17537 2379 }
mbed_official 376:cb4d9db17537 2380
mbed_official 376:cb4d9db17537 2381 /**
mbed_official 376:cb4d9db17537 2382 * @brief Stops the TIM Encoder Interface in interrupt mode.
mbed_official 489:119543c9f674 2383 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2384 * @param Channel: TIM Channels to be disabled.
mbed_official 376:cb4d9db17537 2385 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2386 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2387 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 489:119543c9f674 2388 * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
mbed_official 376:cb4d9db17537 2389 * @retval HAL status
mbed_official 376:cb4d9db17537 2390 */
mbed_official 376:cb4d9db17537 2391 HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 2392 {
mbed_official 376:cb4d9db17537 2393 /* Check the parameters */
mbed_official 376:cb4d9db17537 2394 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2395
mbed_official 376:cb4d9db17537 2396 /* Disable the Input Capture channels 1 and 2
mbed_official 376:cb4d9db17537 2397 (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
mbed_official 376:cb4d9db17537 2398 if(Channel == TIM_CHANNEL_1)
mbed_official 376:cb4d9db17537 2399 {
mbed_official 376:cb4d9db17537 2400 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2401
mbed_official 376:cb4d9db17537 2402 /* Disable the capture compare Interrupts 1 */
mbed_official 376:cb4d9db17537 2403 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 2404 }
mbed_official 376:cb4d9db17537 2405 else if(Channel == TIM_CHANNEL_2)
mbed_official 376:cb4d9db17537 2406 {
mbed_official 376:cb4d9db17537 2407 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2408
mbed_official 376:cb4d9db17537 2409 /* Disable the capture compare Interrupts 2 */
mbed_official 376:cb4d9db17537 2410 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 2411 }
mbed_official 376:cb4d9db17537 2412 else
mbed_official 376:cb4d9db17537 2413 {
mbed_official 376:cb4d9db17537 2414 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2415 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2416
mbed_official 376:cb4d9db17537 2417 /* Disable the capture compare Interrupts 1 and 2 */
mbed_official 376:cb4d9db17537 2418 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 376:cb4d9db17537 2419 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 376:cb4d9db17537 2420 }
mbed_official 376:cb4d9db17537 2421
mbed_official 376:cb4d9db17537 2422 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 2423 __HAL_TIM_DISABLE(htim);
mbed_official 376:cb4d9db17537 2424
mbed_official 376:cb4d9db17537 2425 /* Change the htim state */
mbed_official 376:cb4d9db17537 2426 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 2427
mbed_official 376:cb4d9db17537 2428 /* Return function status */
mbed_official 376:cb4d9db17537 2429 return HAL_OK;
mbed_official 376:cb4d9db17537 2430 }
mbed_official 376:cb4d9db17537 2431
mbed_official 376:cb4d9db17537 2432 /**
mbed_official 376:cb4d9db17537 2433 * @brief Starts the TIM Encoder Interface in DMA mode.
mbed_official 489:119543c9f674 2434 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2435 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2436 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2437 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2438 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 489:119543c9f674 2439 * @arg TIM_CHANNEL_ALL : TIM Channel 1 and 2 selected
mbed_official 376:cb4d9db17537 2440 * @param pData1: The destination Buffer address for IC1.
mbed_official 376:cb4d9db17537 2441 * @param pData2: The destination Buffer address for IC2.
mbed_official 376:cb4d9db17537 2442 * @param Length: The length of data to be transferred from TIM peripheral to memory.
mbed_official 376:cb4d9db17537 2443 * @retval HAL status
mbed_official 376:cb4d9db17537 2444 */
mbed_official 376:cb4d9db17537 2445 HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length)
mbed_official 376:cb4d9db17537 2446 {
mbed_official 376:cb4d9db17537 2447 /* Check the parameters */
mbed_official 376:cb4d9db17537 2448 assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2449
mbed_official 376:cb4d9db17537 2450 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 376:cb4d9db17537 2451 {
mbed_official 376:cb4d9db17537 2452 return HAL_BUSY;
mbed_official 376:cb4d9db17537 2453 }
mbed_official 376:cb4d9db17537 2454 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 376:cb4d9db17537 2455 {
mbed_official 376:cb4d9db17537 2456 if((((pData1 == 0) || (pData2 == 0) )) && (Length > 0))
mbed_official 376:cb4d9db17537 2457 {
mbed_official 376:cb4d9db17537 2458 return HAL_ERROR;
mbed_official 376:cb4d9db17537 2459 }
mbed_official 376:cb4d9db17537 2460 else
mbed_official 376:cb4d9db17537 2461 {
mbed_official 376:cb4d9db17537 2462 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 2463 }
mbed_official 376:cb4d9db17537 2464 }
mbed_official 376:cb4d9db17537 2465
mbed_official 376:cb4d9db17537 2466 switch (Channel)
mbed_official 376:cb4d9db17537 2467 {
mbed_official 376:cb4d9db17537 2468 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 2469 {
mbed_official 376:cb4d9db17537 2470 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 2471 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 376:cb4d9db17537 2472
mbed_official 376:cb4d9db17537 2473 /* Set the DMA error callback */
mbed_official 489:119543c9f674 2474 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 2475
mbed_official 376:cb4d9db17537 2476 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 2477 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t )pData1, Length);
mbed_official 376:cb4d9db17537 2478
mbed_official 376:cb4d9db17537 2479 /* Enable the TIM Input Capture DMA request */
mbed_official 376:cb4d9db17537 2480 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 2481
mbed_official 376:cb4d9db17537 2482 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 2483 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 2484
mbed_official 376:cb4d9db17537 2485 /* Enable the Capture compare channel */
mbed_official 376:cb4d9db17537 2486 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2487 }
mbed_official 376:cb4d9db17537 2488 break;
mbed_official 376:cb4d9db17537 2489
mbed_official 376:cb4d9db17537 2490 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 2491 {
mbed_official 376:cb4d9db17537 2492 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 2493 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 376:cb4d9db17537 2494
mbed_official 376:cb4d9db17537 2495 /* Set the DMA error callback */
mbed_official 489:119543c9f674 2496 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError;
mbed_official 376:cb4d9db17537 2497 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 2498 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length);
mbed_official 376:cb4d9db17537 2499
mbed_official 376:cb4d9db17537 2500 /* Enable the TIM Input Capture DMA request */
mbed_official 376:cb4d9db17537 2501 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 2502
mbed_official 376:cb4d9db17537 2503 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 2504 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 2505
mbed_official 376:cb4d9db17537 2506 /* Enable the Capture compare channel */
mbed_official 376:cb4d9db17537 2507 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2508 }
mbed_official 376:cb4d9db17537 2509 break;
mbed_official 376:cb4d9db17537 2510
mbed_official 376:cb4d9db17537 2511 case TIM_CHANNEL_ALL:
mbed_official 376:cb4d9db17537 2512 {
mbed_official 376:cb4d9db17537 2513 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 2514 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 376:cb4d9db17537 2515
mbed_official 376:cb4d9db17537 2516 /* Set the DMA error callback */
mbed_official 489:119543c9f674 2517 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 2518
mbed_official 376:cb4d9db17537 2519 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 2520 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, Length);
mbed_official 376:cb4d9db17537 2521
mbed_official 376:cb4d9db17537 2522 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 2523 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 376:cb4d9db17537 2524
mbed_official 376:cb4d9db17537 2525 /* Set the DMA error callback */
mbed_official 489:119543c9f674 2526 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 2527
mbed_official 376:cb4d9db17537 2528 /* Enable the DMA Stream */
mbed_official 376:cb4d9db17537 2529 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length);
mbed_official 376:cb4d9db17537 2530
mbed_official 376:cb4d9db17537 2531 /* Enable the Peripheral */
mbed_official 376:cb4d9db17537 2532 __HAL_TIM_ENABLE(htim);
mbed_official 376:cb4d9db17537 2533
mbed_official 376:cb4d9db17537 2534 /* Enable the Capture compare channel */
mbed_official 376:cb4d9db17537 2535 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2536 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
mbed_official 376:cb4d9db17537 2537
mbed_official 376:cb4d9db17537 2538 /* Enable the TIM Input Capture DMA request */
mbed_official 376:cb4d9db17537 2539 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 2540 /* Enable the TIM Input Capture DMA request */
mbed_official 376:cb4d9db17537 2541 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 2542 }
mbed_official 376:cb4d9db17537 2543 break;
mbed_official 376:cb4d9db17537 2544
mbed_official 376:cb4d9db17537 2545 default:
mbed_official 376:cb4d9db17537 2546 break;
mbed_official 376:cb4d9db17537 2547 }
mbed_official 376:cb4d9db17537 2548 /* Return function status */
mbed_official 376:cb4d9db17537 2549 return HAL_OK;
mbed_official 376:cb4d9db17537 2550 }
mbed_official 376:cb4d9db17537 2551
mbed_official 376:cb4d9db17537 2552 /**
mbed_official 376:cb4d9db17537 2553 * @brief Stops the TIM Encoder Interface in DMA mode.
mbed_official 489:119543c9f674 2554 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2555 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2556 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2557 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2558 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 489:119543c9f674 2559 * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected
mbed_official 376:cb4d9db17537 2560 * @retval HAL status
mbed_official 376:cb4d9db17537 2561 */
mbed_official 376:cb4d9db17537 2562 HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 2563 {
mbed_official 376:cb4d9db17537 2564 /* Check the parameters */
mbed_official 376:cb4d9db17537 2565 assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2566
mbed_official 376:cb4d9db17537 2567 /* Disable the Input Capture channels 1 and 2
mbed_official 376:cb4d9db17537 2568 (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
mbed_official 376:cb4d9db17537 2569 if(Channel == TIM_CHANNEL_1)
mbed_official 376:cb4d9db17537 2570 {
mbed_official 376:cb4d9db17537 2571 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2572
mbed_official 376:cb4d9db17537 2573 /* Disable the capture compare DMA Request 1 */
mbed_official 376:cb4d9db17537 2574 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 2575 }
mbed_official 376:cb4d9db17537 2576 else if(Channel == TIM_CHANNEL_2)
mbed_official 376:cb4d9db17537 2577 {
mbed_official 376:cb4d9db17537 2578 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2579
mbed_official 376:cb4d9db17537 2580 /* Disable the capture compare DMA Request 2 */
mbed_official 376:cb4d9db17537 2581 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 2582 }
mbed_official 376:cb4d9db17537 2583 else
mbed_official 376:cb4d9db17537 2584 {
mbed_official 376:cb4d9db17537 2585 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2586 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE);
mbed_official 376:cb4d9db17537 2587
mbed_official 376:cb4d9db17537 2588 /* Disable the capture compare DMA Request 1 and 2 */
mbed_official 376:cb4d9db17537 2589 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 376:cb4d9db17537 2590 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 376:cb4d9db17537 2591 }
mbed_official 376:cb4d9db17537 2592
mbed_official 376:cb4d9db17537 2593 /* Disable the Peripheral */
mbed_official 376:cb4d9db17537 2594 __HAL_TIM_DISABLE(htim);
mbed_official 376:cb4d9db17537 2595
mbed_official 376:cb4d9db17537 2596 /* Change the htim state */
mbed_official 376:cb4d9db17537 2597 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 2598
mbed_official 376:cb4d9db17537 2599 /* Return function status */
mbed_official 376:cb4d9db17537 2600 return HAL_OK;
mbed_official 376:cb4d9db17537 2601 }
mbed_official 376:cb4d9db17537 2602
mbed_official 376:cb4d9db17537 2603 /**
mbed_official 376:cb4d9db17537 2604 * @}
mbed_official 376:cb4d9db17537 2605 */
mbed_official 376:cb4d9db17537 2606
mbed_official 489:119543c9f674 2607 /** @addtogroup TIM_Exported_Functions_Group7
mbed_official 489:119543c9f674 2608 * @brief IRQ handler management
mbed_official 489:119543c9f674 2609 *
mbed_official 489:119543c9f674 2610 @verbatim
mbed_official 489:119543c9f674 2611 ==============================================================================
mbed_official 489:119543c9f674 2612 ##### IRQ handler management #####
mbed_official 489:119543c9f674 2613 ==============================================================================
mbed_official 489:119543c9f674 2614 [..]
mbed_official 489:119543c9f674 2615 This section provides Timer IRQ handler function.
mbed_official 489:119543c9f674 2616
mbed_official 489:119543c9f674 2617 @endverbatim
mbed_official 489:119543c9f674 2618 * @{
mbed_official 489:119543c9f674 2619 */
mbed_official 489:119543c9f674 2620 /**
mbed_official 489:119543c9f674 2621 * @brief This function handles TIM interrupts requests.
mbed_official 489:119543c9f674 2622 * @param htim: TIM handle
mbed_official 489:119543c9f674 2623 * @retval None
mbed_official 489:119543c9f674 2624 */
mbed_official 489:119543c9f674 2625 void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
mbed_official 489:119543c9f674 2626 {
mbed_official 489:119543c9f674 2627 /* Capture compare 1 event */
mbed_official 489:119543c9f674 2628 if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)
mbed_official 489:119543c9f674 2629 {
mbed_official 489:119543c9f674 2630 if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) !=RESET)
mbed_official 489:119543c9f674 2631 {
mbed_official 489:119543c9f674 2632 {
mbed_official 489:119543c9f674 2633 __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
mbed_official 489:119543c9f674 2634 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
mbed_official 489:119543c9f674 2635
mbed_official 489:119543c9f674 2636 /* Input capture event */
mbed_official 489:119543c9f674 2637 if((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00)
mbed_official 489:119543c9f674 2638 {
mbed_official 489:119543c9f674 2639 HAL_TIM_IC_CaptureCallback(htim);
mbed_official 489:119543c9f674 2640 }
mbed_official 489:119543c9f674 2641 /* Output compare event */
mbed_official 489:119543c9f674 2642 else
mbed_official 489:119543c9f674 2643 {
mbed_official 489:119543c9f674 2644 HAL_TIM_OC_DelayElapsedCallback(htim);
mbed_official 489:119543c9f674 2645 HAL_TIM_PWM_PulseFinishedCallback(htim);
mbed_official 489:119543c9f674 2646 }
mbed_official 489:119543c9f674 2647 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
mbed_official 489:119543c9f674 2648 }
mbed_official 489:119543c9f674 2649 }
mbed_official 489:119543c9f674 2650 }
mbed_official 489:119543c9f674 2651 /* Capture compare 2 event */
mbed_official 489:119543c9f674 2652 if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)
mbed_official 489:119543c9f674 2653 {
mbed_official 489:119543c9f674 2654 if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) !=RESET)
mbed_official 489:119543c9f674 2655 {
mbed_official 489:119543c9f674 2656 __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
mbed_official 489:119543c9f674 2657 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
mbed_official 489:119543c9f674 2658 /* Input capture event */
mbed_official 489:119543c9f674 2659 if((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00)
mbed_official 489:119543c9f674 2660 {
mbed_official 489:119543c9f674 2661 HAL_TIM_IC_CaptureCallback(htim);
mbed_official 489:119543c9f674 2662 }
mbed_official 489:119543c9f674 2663 /* Output compare event */
mbed_official 489:119543c9f674 2664 else
mbed_official 489:119543c9f674 2665 {
mbed_official 489:119543c9f674 2666 HAL_TIM_OC_DelayElapsedCallback(htim);
mbed_official 489:119543c9f674 2667 HAL_TIM_PWM_PulseFinishedCallback(htim);
mbed_official 489:119543c9f674 2668 }
mbed_official 489:119543c9f674 2669 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
mbed_official 489:119543c9f674 2670 }
mbed_official 489:119543c9f674 2671 }
mbed_official 489:119543c9f674 2672 /* Capture compare 3 event */
mbed_official 489:119543c9f674 2673 if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)
mbed_official 489:119543c9f674 2674 {
mbed_official 489:119543c9f674 2675 if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) !=RESET)
mbed_official 489:119543c9f674 2676 {
mbed_official 489:119543c9f674 2677 __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
mbed_official 489:119543c9f674 2678 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
mbed_official 489:119543c9f674 2679 /* Input capture event */
mbed_official 489:119543c9f674 2680 if((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00)
mbed_official 489:119543c9f674 2681 {
mbed_official 489:119543c9f674 2682 HAL_TIM_IC_CaptureCallback(htim);
mbed_official 489:119543c9f674 2683 }
mbed_official 489:119543c9f674 2684 /* Output compare event */
mbed_official 489:119543c9f674 2685 else
mbed_official 489:119543c9f674 2686 {
mbed_official 489:119543c9f674 2687 HAL_TIM_OC_DelayElapsedCallback(htim);
mbed_official 489:119543c9f674 2688 HAL_TIM_PWM_PulseFinishedCallback(htim);
mbed_official 489:119543c9f674 2689 }
mbed_official 489:119543c9f674 2690 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
mbed_official 489:119543c9f674 2691 }
mbed_official 489:119543c9f674 2692 }
mbed_official 489:119543c9f674 2693 /* Capture compare 4 event */
mbed_official 489:119543c9f674 2694 if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
mbed_official 489:119543c9f674 2695 {
mbed_official 489:119543c9f674 2696 if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) !=RESET)
mbed_official 489:119543c9f674 2697 {
mbed_official 489:119543c9f674 2698 __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
mbed_official 489:119543c9f674 2699 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
mbed_official 489:119543c9f674 2700 /* Input capture event */
mbed_official 489:119543c9f674 2701 if((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00)
mbed_official 489:119543c9f674 2702 {
mbed_official 489:119543c9f674 2703 HAL_TIM_IC_CaptureCallback(htim);
mbed_official 489:119543c9f674 2704 }
mbed_official 489:119543c9f674 2705 /* Output compare event */
mbed_official 489:119543c9f674 2706 else
mbed_official 489:119543c9f674 2707 {
mbed_official 489:119543c9f674 2708 HAL_TIM_OC_DelayElapsedCallback(htim);
mbed_official 489:119543c9f674 2709 HAL_TIM_PWM_PulseFinishedCallback(htim);
mbed_official 489:119543c9f674 2710 }
mbed_official 489:119543c9f674 2711 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
mbed_official 489:119543c9f674 2712 }
mbed_official 489:119543c9f674 2713 }
mbed_official 489:119543c9f674 2714 /* TIM Update event */
mbed_official 489:119543c9f674 2715 if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
mbed_official 489:119543c9f674 2716 {
mbed_official 489:119543c9f674 2717 if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET)
mbed_official 489:119543c9f674 2718 {
mbed_official 489:119543c9f674 2719 __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
mbed_official 489:119543c9f674 2720 HAL_TIM_PeriodElapsedCallback(htim);
mbed_official 489:119543c9f674 2721 }
mbed_official 489:119543c9f674 2722 }
mbed_official 489:119543c9f674 2723 /* TIM Trigger detection event */
mbed_official 489:119543c9f674 2724 if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)
mbed_official 489:119543c9f674 2725 {
mbed_official 489:119543c9f674 2726 if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) !=RESET)
mbed_official 489:119543c9f674 2727 {
mbed_official 489:119543c9f674 2728 __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);
mbed_official 489:119543c9f674 2729 HAL_TIM_TriggerCallback(htim);
mbed_official 489:119543c9f674 2730 }
mbed_official 489:119543c9f674 2731 }
mbed_official 489:119543c9f674 2732 }
mbed_official 489:119543c9f674 2733
mbed_official 489:119543c9f674 2734 /**
mbed_official 489:119543c9f674 2735 * @}
mbed_official 489:119543c9f674 2736 */
mbed_official 489:119543c9f674 2737
mbed_official 489:119543c9f674 2738 /** @addtogroup TIM_Exported_Functions_Group8
mbed_official 489:119543c9f674 2739 * @brief Peripheral Control functions
mbed_official 376:cb4d9db17537 2740 *
mbed_official 376:cb4d9db17537 2741 @verbatim
mbed_official 376:cb4d9db17537 2742 ==============================================================================
mbed_official 376:cb4d9db17537 2743 ##### Peripheral Control functions #####
mbed_official 376:cb4d9db17537 2744 ==============================================================================
mbed_official 376:cb4d9db17537 2745 [..]
mbed_official 376:cb4d9db17537 2746 This section provides functions allowing to:
mbed_official 489:119543c9f674 2747 (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode.
mbed_official 376:cb4d9db17537 2748 (+) Configure External Clock source.
mbed_official 376:cb4d9db17537 2749 (+) Configure Master and the Slave synchronization.
mbed_official 376:cb4d9db17537 2750 (+) Configure the DMA Burst Mode.
mbed_official 489:119543c9f674 2751
mbed_official 376:cb4d9db17537 2752 @endverbatim
mbed_official 376:cb4d9db17537 2753 * @{
mbed_official 376:cb4d9db17537 2754 */
mbed_official 376:cb4d9db17537 2755 /**
mbed_official 376:cb4d9db17537 2756 * @brief Initializes the TIM Output Compare Channels according to the specified
mbed_official 376:cb4d9db17537 2757 * parameters in the TIM_OC_InitTypeDef.
mbed_official 489:119543c9f674 2758 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2759 * @param sConfig: TIM Output Compare configuration structure
mbed_official 376:cb4d9db17537 2760 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2761 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2762 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2763 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 2764 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 489:119543c9f674 2765 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 2766 * @retval HAL status
mbed_official 376:cb4d9db17537 2767 */
mbed_official 376:cb4d9db17537 2768 HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel)
mbed_official 376:cb4d9db17537 2769 {
mbed_official 376:cb4d9db17537 2770 /* Check the parameters */
mbed_official 376:cb4d9db17537 2771 assert_param(IS_TIM_CHANNELS(Channel));
mbed_official 376:cb4d9db17537 2772 assert_param(IS_TIM_OC_MODE(sConfig->OCMode));
mbed_official 376:cb4d9db17537 2773 assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));
mbed_official 376:cb4d9db17537 2774
mbed_official 376:cb4d9db17537 2775 /* Check input state */
mbed_official 489:119543c9f674 2776 __HAL_LOCK(htim);
mbed_official 489:119543c9f674 2777
mbed_official 376:cb4d9db17537 2778 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 2779
mbed_official 376:cb4d9db17537 2780 switch (Channel)
mbed_official 376:cb4d9db17537 2781 {
mbed_official 376:cb4d9db17537 2782 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 2783 {
mbed_official 376:cb4d9db17537 2784 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2785 /* Configure the TIM Channel 1 in Output Compare */
mbed_official 376:cb4d9db17537 2786 TIM_OC1_SetConfig(htim->Instance, sConfig);
mbed_official 376:cb4d9db17537 2787 }
mbed_official 376:cb4d9db17537 2788 break;
mbed_official 376:cb4d9db17537 2789
mbed_official 376:cb4d9db17537 2790 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 2791 {
mbed_official 376:cb4d9db17537 2792 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2793 /* Configure the TIM Channel 2 in Output Compare */
mbed_official 376:cb4d9db17537 2794 TIM_OC2_SetConfig(htim->Instance, sConfig);
mbed_official 376:cb4d9db17537 2795 }
mbed_official 376:cb4d9db17537 2796 break;
mbed_official 376:cb4d9db17537 2797
mbed_official 376:cb4d9db17537 2798 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 2799 {
mbed_official 376:cb4d9db17537 2800 assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2801 /* Configure the TIM Channel 3 in Output Compare */
mbed_official 376:cb4d9db17537 2802 TIM_OC3_SetConfig(htim->Instance, sConfig);
mbed_official 376:cb4d9db17537 2803 }
mbed_official 376:cb4d9db17537 2804 break;
mbed_official 376:cb4d9db17537 2805
mbed_official 376:cb4d9db17537 2806 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 2807 {
mbed_official 376:cb4d9db17537 2808 assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2809 /* Configure the TIM Channel 4 in Output Compare */
mbed_official 376:cb4d9db17537 2810 TIM_OC4_SetConfig(htim->Instance, sConfig);
mbed_official 376:cb4d9db17537 2811 }
mbed_official 376:cb4d9db17537 2812 break;
mbed_official 376:cb4d9db17537 2813
mbed_official 376:cb4d9db17537 2814 default:
mbed_official 376:cb4d9db17537 2815 break;
mbed_official 376:cb4d9db17537 2816 }
mbed_official 376:cb4d9db17537 2817 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 2818
mbed_official 489:119543c9f674 2819 __HAL_UNLOCK(htim);
mbed_official 376:cb4d9db17537 2820
mbed_official 376:cb4d9db17537 2821 return HAL_OK;
mbed_official 376:cb4d9db17537 2822 }
mbed_official 376:cb4d9db17537 2823
mbed_official 376:cb4d9db17537 2824 /**
mbed_official 376:cb4d9db17537 2825 * @brief Initializes the TIM Input Capture Channels according to the specified
mbed_official 376:cb4d9db17537 2826 * parameters in the TIM_IC_InitTypeDef.
mbed_official 489:119543c9f674 2827 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2828 * @param sConfig: TIM Input Capture configuration structure
mbed_official 376:cb4d9db17537 2829 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2830 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2831 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2832 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 2833 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 489:119543c9f674 2834 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 2835 * @retval HAL status
mbed_official 376:cb4d9db17537 2836 */
mbed_official 376:cb4d9db17537 2837 HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef* sConfig, uint32_t Channel)
mbed_official 376:cb4d9db17537 2838 {
mbed_official 376:cb4d9db17537 2839 /* Check the parameters */
mbed_official 376:cb4d9db17537 2840 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2841 assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity));
mbed_official 376:cb4d9db17537 2842 assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection));
mbed_official 376:cb4d9db17537 2843 assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler));
mbed_official 376:cb4d9db17537 2844 assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter));
mbed_official 489:119543c9f674 2845
mbed_official 376:cb4d9db17537 2846 __HAL_LOCK(htim);
mbed_official 489:119543c9f674 2847
mbed_official 376:cb4d9db17537 2848 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 2849
mbed_official 376:cb4d9db17537 2850 if (Channel == TIM_CHANNEL_1)
mbed_official 376:cb4d9db17537 2851 {
mbed_official 376:cb4d9db17537 2852 /* TI1 Configuration */
mbed_official 376:cb4d9db17537 2853 TIM_TI1_SetConfig(htim->Instance,
mbed_official 376:cb4d9db17537 2854 sConfig->ICPolarity,
mbed_official 376:cb4d9db17537 2855 sConfig->ICSelection,
mbed_official 376:cb4d9db17537 2856 sConfig->ICFilter);
mbed_official 489:119543c9f674 2857
mbed_official 376:cb4d9db17537 2858 /* Reset the IC1PSC Bits */
mbed_official 376:cb4d9db17537 2859 htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
mbed_official 376:cb4d9db17537 2860
mbed_official 376:cb4d9db17537 2861 /* Set the IC1PSC value */
mbed_official 376:cb4d9db17537 2862 htim->Instance->CCMR1 |= sConfig->ICPrescaler;
mbed_official 376:cb4d9db17537 2863 }
mbed_official 376:cb4d9db17537 2864 else if (Channel == TIM_CHANNEL_2)
mbed_official 376:cb4d9db17537 2865 {
mbed_official 376:cb4d9db17537 2866 /* TI2 Configuration */
mbed_official 376:cb4d9db17537 2867 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2868
mbed_official 489:119543c9f674 2869 TIM_TI2_SetConfig(htim->Instance,
mbed_official 376:cb4d9db17537 2870 sConfig->ICPolarity,
mbed_official 376:cb4d9db17537 2871 sConfig->ICSelection,
mbed_official 376:cb4d9db17537 2872 sConfig->ICFilter);
mbed_official 376:cb4d9db17537 2873
mbed_official 376:cb4d9db17537 2874 /* Reset the IC2PSC Bits */
mbed_official 376:cb4d9db17537 2875 htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;
mbed_official 376:cb4d9db17537 2876
mbed_official 376:cb4d9db17537 2877 /* Set the IC2PSC value */
mbed_official 376:cb4d9db17537 2878 htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8);
mbed_official 376:cb4d9db17537 2879 }
mbed_official 376:cb4d9db17537 2880 else if (Channel == TIM_CHANNEL_3)
mbed_official 376:cb4d9db17537 2881 {
mbed_official 376:cb4d9db17537 2882 /* TI3 Configuration */
mbed_official 376:cb4d9db17537 2883 assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 2884
mbed_official 489:119543c9f674 2885 TIM_TI3_SetConfig(htim->Instance,
mbed_official 376:cb4d9db17537 2886 sConfig->ICPolarity,
mbed_official 376:cb4d9db17537 2887 sConfig->ICSelection,
mbed_official 376:cb4d9db17537 2888 sConfig->ICFilter);
mbed_official 376:cb4d9db17537 2889
mbed_official 376:cb4d9db17537 2890 /* Reset the IC3PSC Bits */
mbed_official 376:cb4d9db17537 2891 htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC;
mbed_official 376:cb4d9db17537 2892
mbed_official 376:cb4d9db17537 2893 /* Set the IC3PSC value */
mbed_official 376:cb4d9db17537 2894 htim->Instance->CCMR2 |= sConfig->ICPrescaler;
mbed_official 376:cb4d9db17537 2895 }
mbed_official 376:cb4d9db17537 2896 else
mbed_official 376:cb4d9db17537 2897 {
mbed_official 376:cb4d9db17537 2898 /* TI4 Configuration */
mbed_official 376:cb4d9db17537 2899 assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 2900
mbed_official 489:119543c9f674 2901 TIM_TI4_SetConfig(htim->Instance,
mbed_official 376:cb4d9db17537 2902 sConfig->ICPolarity,
mbed_official 376:cb4d9db17537 2903 sConfig->ICSelection,
mbed_official 376:cb4d9db17537 2904 sConfig->ICFilter);
mbed_official 489:119543c9f674 2905
mbed_official 376:cb4d9db17537 2906 /* Reset the IC4PSC Bits */
mbed_official 376:cb4d9db17537 2907 htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC;
mbed_official 376:cb4d9db17537 2908
mbed_official 376:cb4d9db17537 2909 /* Set the IC4PSC value */
mbed_official 376:cb4d9db17537 2910 htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8);
mbed_official 376:cb4d9db17537 2911 }
mbed_official 489:119543c9f674 2912
mbed_official 376:cb4d9db17537 2913 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 2914
mbed_official 376:cb4d9db17537 2915 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 2916
mbed_official 489:119543c9f674 2917 return HAL_OK;
mbed_official 376:cb4d9db17537 2918 }
mbed_official 376:cb4d9db17537 2919
mbed_official 376:cb4d9db17537 2920 /**
mbed_official 376:cb4d9db17537 2921 * @brief Initializes the TIM PWM channels according to the specified
mbed_official 376:cb4d9db17537 2922 * parameters in the TIM_OC_InitTypeDef.
mbed_official 489:119543c9f674 2923 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 2924 * @param sConfig: TIM PWM configuration structure
mbed_official 376:cb4d9db17537 2925 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 2926 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 2927 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 2928 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 2929 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 2930 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 2931 * @retval HAL status
mbed_official 376:cb4d9db17537 2932 */
mbed_official 376:cb4d9db17537 2933 HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel)
mbed_official 376:cb4d9db17537 2934 {
mbed_official 376:cb4d9db17537 2935 __HAL_LOCK(htim);
mbed_official 489:119543c9f674 2936
mbed_official 489:119543c9f674 2937 /* Check the parameters */
mbed_official 489:119543c9f674 2938 assert_param(IS_TIM_CHANNELS(Channel));
mbed_official 376:cb4d9db17537 2939 assert_param(IS_TIM_PWM_MODE(sConfig->OCMode));
mbed_official 376:cb4d9db17537 2940 assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));
mbed_official 489:119543c9f674 2941 assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode));
mbed_official 376:cb4d9db17537 2942
mbed_official 376:cb4d9db17537 2943 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 2944
mbed_official 376:cb4d9db17537 2945 switch (Channel)
mbed_official 376:cb4d9db17537 2946 {
mbed_official 376:cb4d9db17537 2947 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 2948 {
mbed_official 376:cb4d9db17537 2949 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2950 /* Configure the Channel 1 in PWM mode */
mbed_official 376:cb4d9db17537 2951 TIM_OC1_SetConfig(htim->Instance, sConfig);
mbed_official 489:119543c9f674 2952
mbed_official 376:cb4d9db17537 2953 /* Set the Preload enable bit for channel1 */
mbed_official 376:cb4d9db17537 2954 htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE;
mbed_official 489:119543c9f674 2955
mbed_official 376:cb4d9db17537 2956 /* Configure the Output Fast mode */
mbed_official 376:cb4d9db17537 2957 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE;
mbed_official 376:cb4d9db17537 2958 htim->Instance->CCMR1 |= sConfig->OCFastMode;
mbed_official 376:cb4d9db17537 2959 }
mbed_official 376:cb4d9db17537 2960 break;
mbed_official 489:119543c9f674 2961
mbed_official 376:cb4d9db17537 2962 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 2963 {
mbed_official 376:cb4d9db17537 2964 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2965 /* Configure the Channel 2 in PWM mode */
mbed_official 376:cb4d9db17537 2966 TIM_OC2_SetConfig(htim->Instance, sConfig);
mbed_official 489:119543c9f674 2967
mbed_official 376:cb4d9db17537 2968 /* Set the Preload enable bit for channel2 */
mbed_official 376:cb4d9db17537 2969 htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE;
mbed_official 489:119543c9f674 2970
mbed_official 376:cb4d9db17537 2971 /* Configure the Output Fast mode */
mbed_official 376:cb4d9db17537 2972 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE;
mbed_official 376:cb4d9db17537 2973 htim->Instance->CCMR1 |= sConfig->OCFastMode << 8;
mbed_official 376:cb4d9db17537 2974 }
mbed_official 376:cb4d9db17537 2975 break;
mbed_official 489:119543c9f674 2976
mbed_official 376:cb4d9db17537 2977 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 2978 {
mbed_official 376:cb4d9db17537 2979 assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2980 /* Configure the Channel 3 in PWM mode */
mbed_official 376:cb4d9db17537 2981 TIM_OC3_SetConfig(htim->Instance, sConfig);
mbed_official 489:119543c9f674 2982
mbed_official 376:cb4d9db17537 2983 /* Set the Preload enable bit for channel3 */
mbed_official 376:cb4d9db17537 2984 htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE;
mbed_official 489:119543c9f674 2985
mbed_official 376:cb4d9db17537 2986 /* Configure the Output Fast mode */
mbed_official 376:cb4d9db17537 2987 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE;
mbed_official 489:119543c9f674 2988 htim->Instance->CCMR2 |= sConfig->OCFastMode;
mbed_official 376:cb4d9db17537 2989 }
mbed_official 376:cb4d9db17537 2990 break;
mbed_official 489:119543c9f674 2991
mbed_official 376:cb4d9db17537 2992 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 2993 {
mbed_official 376:cb4d9db17537 2994 assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 2995 /* Configure the Channel 4 in PWM mode */
mbed_official 376:cb4d9db17537 2996 TIM_OC4_SetConfig(htim->Instance, sConfig);
mbed_official 489:119543c9f674 2997
mbed_official 376:cb4d9db17537 2998 /* Set the Preload enable bit for channel4 */
mbed_official 376:cb4d9db17537 2999 htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE;
mbed_official 489:119543c9f674 3000
mbed_official 376:cb4d9db17537 3001 /* Configure the Output Fast mode */
mbed_official 376:cb4d9db17537 3002 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE;
mbed_official 489:119543c9f674 3003 htim->Instance->CCMR2 |= sConfig->OCFastMode << 8;
mbed_official 376:cb4d9db17537 3004 }
mbed_official 376:cb4d9db17537 3005 break;
mbed_official 489:119543c9f674 3006
mbed_official 376:cb4d9db17537 3007 default:
mbed_official 489:119543c9f674 3008 break;
mbed_official 376:cb4d9db17537 3009 }
mbed_official 376:cb4d9db17537 3010
mbed_official 376:cb4d9db17537 3011 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 3012
mbed_official 376:cb4d9db17537 3013 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 3014
mbed_official 376:cb4d9db17537 3015 return HAL_OK;
mbed_official 376:cb4d9db17537 3016 }
mbed_official 376:cb4d9db17537 3017
mbed_official 376:cb4d9db17537 3018 /**
mbed_official 376:cb4d9db17537 3019 * @brief Initializes the TIM One Pulse Channels according to the specified
mbed_official 376:cb4d9db17537 3020 * parameters in the TIM_OnePulse_InitTypeDef.
mbed_official 489:119543c9f674 3021 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3022 * @param sConfig: TIM One Pulse configuration structure
mbed_official 376:cb4d9db17537 3023 * @param OutputChannel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 3024 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 3025 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 3026 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 3027 * @param InputChannel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 3028 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 3029 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 3030 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 3031 * @retval HAL status
mbed_official 376:cb4d9db17537 3032 */
mbed_official 376:cb4d9db17537 3033 HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef* sConfig, uint32_t OutputChannel, uint32_t InputChannel)
mbed_official 376:cb4d9db17537 3034 {
mbed_official 376:cb4d9db17537 3035 TIM_OC_InitTypeDef temp1;
mbed_official 489:119543c9f674 3036
mbed_official 376:cb4d9db17537 3037 /* Check the parameters */
mbed_official 376:cb4d9db17537 3038 assert_param(IS_TIM_OPM_CHANNELS(OutputChannel));
mbed_official 376:cb4d9db17537 3039 assert_param(IS_TIM_OPM_CHANNELS(InputChannel));
mbed_official 376:cb4d9db17537 3040
mbed_official 489:119543c9f674 3041 if(OutputChannel != InputChannel)
mbed_official 376:cb4d9db17537 3042 {
mbed_official 376:cb4d9db17537 3043 __HAL_LOCK(htim);
mbed_official 376:cb4d9db17537 3044
mbed_official 376:cb4d9db17537 3045 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 3046
mbed_official 489:119543c9f674 3047 /* Extract the Ouput compare configuration from sConfig structure */
mbed_official 376:cb4d9db17537 3048 temp1.OCMode = sConfig->OCMode;
mbed_official 376:cb4d9db17537 3049 temp1.Pulse = sConfig->Pulse;
mbed_official 489:119543c9f674 3050 temp1.OCPolarity = sConfig->OCPolarity;
mbed_official 489:119543c9f674 3051
mbed_official 376:cb4d9db17537 3052 switch (OutputChannel)
mbed_official 376:cb4d9db17537 3053 {
mbed_official 376:cb4d9db17537 3054 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 3055 {
mbed_official 376:cb4d9db17537 3056 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 3057
mbed_official 489:119543c9f674 3058 TIM_OC1_SetConfig(htim->Instance, &temp1);
mbed_official 376:cb4d9db17537 3059 }
mbed_official 376:cb4d9db17537 3060 break;
mbed_official 376:cb4d9db17537 3061 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 3062 {
mbed_official 376:cb4d9db17537 3063 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 3064
mbed_official 376:cb4d9db17537 3065 TIM_OC2_SetConfig(htim->Instance, &temp1);
mbed_official 376:cb4d9db17537 3066 }
mbed_official 376:cb4d9db17537 3067 break;
mbed_official 376:cb4d9db17537 3068 default:
mbed_official 489:119543c9f674 3069 break;
mbed_official 489:119543c9f674 3070 }
mbed_official 376:cb4d9db17537 3071 switch (InputChannel)
mbed_official 376:cb4d9db17537 3072 {
mbed_official 376:cb4d9db17537 3073 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 3074 {
mbed_official 376:cb4d9db17537 3075 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3076
mbed_official 376:cb4d9db17537 3077 TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity,
mbed_official 376:cb4d9db17537 3078 sConfig->ICSelection, sConfig->ICFilter);
mbed_official 489:119543c9f674 3079
mbed_official 376:cb4d9db17537 3080 /* Reset the IC1PSC Bits */
mbed_official 376:cb4d9db17537 3081 htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
mbed_official 376:cb4d9db17537 3082
mbed_official 376:cb4d9db17537 3083 /* Select the Trigger source */
mbed_official 376:cb4d9db17537 3084 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 376:cb4d9db17537 3085 htim->Instance->SMCR |= TIM_TS_TI1FP1;
mbed_official 489:119543c9f674 3086
mbed_official 489:119543c9f674 3087 /* Select the Slave Mode */
mbed_official 376:cb4d9db17537 3088 htim->Instance->SMCR &= ~TIM_SMCR_SMS;
mbed_official 376:cb4d9db17537 3089 htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
mbed_official 376:cb4d9db17537 3090 }
mbed_official 376:cb4d9db17537 3091 break;
mbed_official 376:cb4d9db17537 3092 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 3093 {
mbed_official 376:cb4d9db17537 3094 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 3095
mbed_official 376:cb4d9db17537 3096 TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity,
mbed_official 376:cb4d9db17537 3097 sConfig->ICSelection, sConfig->ICFilter);
mbed_official 489:119543c9f674 3098
mbed_official 376:cb4d9db17537 3099 /* Reset the IC2PSC Bits */
mbed_official 376:cb4d9db17537 3100 htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;
mbed_official 376:cb4d9db17537 3101
mbed_official 376:cb4d9db17537 3102 /* Select the Trigger source */
mbed_official 376:cb4d9db17537 3103 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 376:cb4d9db17537 3104 htim->Instance->SMCR |= TIM_TS_TI2FP2;
mbed_official 489:119543c9f674 3105
mbed_official 489:119543c9f674 3106 /* Select the Slave Mode */
mbed_official 376:cb4d9db17537 3107 htim->Instance->SMCR &= ~TIM_SMCR_SMS;
mbed_official 376:cb4d9db17537 3108 htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
mbed_official 376:cb4d9db17537 3109 }
mbed_official 376:cb4d9db17537 3110 break;
mbed_official 489:119543c9f674 3111
mbed_official 376:cb4d9db17537 3112 default:
mbed_official 489:119543c9f674 3113 break;
mbed_official 376:cb4d9db17537 3114 }
mbed_official 489:119543c9f674 3115
mbed_official 376:cb4d9db17537 3116 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 3117
mbed_official 376:cb4d9db17537 3118 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 3119
mbed_official 376:cb4d9db17537 3120 return HAL_OK;
mbed_official 376:cb4d9db17537 3121 }
mbed_official 376:cb4d9db17537 3122 else
mbed_official 376:cb4d9db17537 3123 {
mbed_official 376:cb4d9db17537 3124 return HAL_ERROR;
mbed_official 376:cb4d9db17537 3125 }
mbed_official 376:cb4d9db17537 3126 }
mbed_official 376:cb4d9db17537 3127
mbed_official 376:cb4d9db17537 3128 /**
mbed_official 489:119543c9f674 3129 * @brief Configure the DMA Burst to transfer Data from the memory to the TIM peripheral
mbed_official 489:119543c9f674 3130 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3131 * @param BurstBaseAddress: TIM Base address from when the DMA will starts the Data write.
mbed_official 376:cb4d9db17537 3132 * This parameters can be on of the following values:
mbed_official 489:119543c9f674 3133 * @arg TIM_DMABASE_CR1
mbed_official 489:119543c9f674 3134 * @arg TIM_DMABASE_CR2
mbed_official 489:119543c9f674 3135 * @arg TIM_DMABASE_SMCR
mbed_official 489:119543c9f674 3136 * @arg TIM_DMABASE_DIER
mbed_official 489:119543c9f674 3137 * @arg TIM_DMABASE_SR
mbed_official 489:119543c9f674 3138 * @arg TIM_DMABASE_EGR
mbed_official 489:119543c9f674 3139 * @arg TIM_DMABASE_CCMR1
mbed_official 489:119543c9f674 3140 * @arg TIM_DMABASE_CCMR2
mbed_official 489:119543c9f674 3141 * @arg TIM_DMABASE_CCER
mbed_official 489:119543c9f674 3142 * @arg TIM_DMABASE_CNT
mbed_official 489:119543c9f674 3143 * @arg TIM_DMABASE_PSC
mbed_official 489:119543c9f674 3144 * @arg TIM_DMABASE_ARR
mbed_official 489:119543c9f674 3145 * @arg TIM_DMABASE_CCR1
mbed_official 489:119543c9f674 3146 * @arg TIM_DMABASE_CCR2
mbed_official 489:119543c9f674 3147 * @arg TIM_DMABASE_CCR3
mbed_official 489:119543c9f674 3148 * @arg TIM_DMABASE_CCR4
mbed_official 489:119543c9f674 3149 * @arg TIM_DMABASE_DCR
mbed_official 376:cb4d9db17537 3150 * @param BurstRequestSrc: TIM DMA Request sources.
mbed_official 376:cb4d9db17537 3151 * This parameters can be on of the following values:
mbed_official 376:cb4d9db17537 3152 * @arg TIM_DMA_UPDATE: TIM update Interrupt source
mbed_official 376:cb4d9db17537 3153 * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source
mbed_official 376:cb4d9db17537 3154 * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source
mbed_official 376:cb4d9db17537 3155 * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source
mbed_official 376:cb4d9db17537 3156 * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source
mbed_official 376:cb4d9db17537 3157 * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source
mbed_official 376:cb4d9db17537 3158 * @param BurstBuffer: The Buffer address.
mbed_official 376:cb4d9db17537 3159 * @param BurstLength: DMA Burst length. This parameter can be one value
mbed_official 489:119543c9f674 3160 * between TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS .
mbed_official 376:cb4d9db17537 3161 * @retval HAL status
mbed_official 376:cb4d9db17537 3162 */
mbed_official 376:cb4d9db17537 3163 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,
mbed_official 376:cb4d9db17537 3164 uint32_t* BurstBuffer, uint32_t BurstLength)
mbed_official 376:cb4d9db17537 3165 {
mbed_official 376:cb4d9db17537 3166 /* Check the parameters */
mbed_official 376:cb4d9db17537 3167 assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3168 assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));
mbed_official 376:cb4d9db17537 3169 assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
mbed_official 376:cb4d9db17537 3170 assert_param(IS_TIM_DMA_LENGTH(BurstLength));
mbed_official 376:cb4d9db17537 3171
mbed_official 376:cb4d9db17537 3172 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 376:cb4d9db17537 3173 {
mbed_official 376:cb4d9db17537 3174 return HAL_BUSY;
mbed_official 376:cb4d9db17537 3175 }
mbed_official 376:cb4d9db17537 3176 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 376:cb4d9db17537 3177 {
mbed_official 376:cb4d9db17537 3178 if((BurstBuffer == 0 ) && (BurstLength > 0))
mbed_official 376:cb4d9db17537 3179 {
mbed_official 376:cb4d9db17537 3180 return HAL_ERROR;
mbed_official 376:cb4d9db17537 3181 }
mbed_official 376:cb4d9db17537 3182 else
mbed_official 376:cb4d9db17537 3183 {
mbed_official 376:cb4d9db17537 3184 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 3185 }
mbed_official 376:cb4d9db17537 3186 }
mbed_official 376:cb4d9db17537 3187 switch(BurstRequestSrc)
mbed_official 376:cb4d9db17537 3188 {
mbed_official 376:cb4d9db17537 3189 case TIM_DMA_UPDATE:
mbed_official 376:cb4d9db17537 3190 {
mbed_official 376:cb4d9db17537 3191 /* Set the DMA Period elapsed callback */
mbed_official 376:cb4d9db17537 3192 htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;
mbed_official 376:cb4d9db17537 3193
mbed_official 376:cb4d9db17537 3194 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3195 htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3196
mbed_official 376:cb4d9db17537 3197 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3198 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3199 }
mbed_official 376:cb4d9db17537 3200 break;
mbed_official 376:cb4d9db17537 3201 case TIM_DMA_CC1:
mbed_official 376:cb4d9db17537 3202 {
mbed_official 376:cb4d9db17537 3203 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3204 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 376:cb4d9db17537 3205
mbed_official 376:cb4d9db17537 3206 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3207 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3208
mbed_official 376:cb4d9db17537 3209 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3210 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3211 }
mbed_official 376:cb4d9db17537 3212 break;
mbed_official 376:cb4d9db17537 3213 case TIM_DMA_CC2:
mbed_official 376:cb4d9db17537 3214 {
mbed_official 376:cb4d9db17537 3215 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3216 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 376:cb4d9db17537 3217
mbed_official 376:cb4d9db17537 3218 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3219 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3220
mbed_official 376:cb4d9db17537 3221 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3222 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3223 }
mbed_official 376:cb4d9db17537 3224 break;
mbed_official 376:cb4d9db17537 3225 case TIM_DMA_CC3:
mbed_official 376:cb4d9db17537 3226 {
mbed_official 376:cb4d9db17537 3227 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3228 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 376:cb4d9db17537 3229
mbed_official 376:cb4d9db17537 3230 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3231 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3232
mbed_official 376:cb4d9db17537 3233 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3234 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3235 }
mbed_official 376:cb4d9db17537 3236 break;
mbed_official 376:cb4d9db17537 3237 case TIM_DMA_CC4:
mbed_official 376:cb4d9db17537 3238 {
mbed_official 376:cb4d9db17537 3239 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3240 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt;
mbed_official 376:cb4d9db17537 3241
mbed_official 376:cb4d9db17537 3242 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3243 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3244
mbed_official 376:cb4d9db17537 3245 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3246 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3247 }
mbed_official 376:cb4d9db17537 3248 break;
mbed_official 376:cb4d9db17537 3249 case TIM_DMA_TRIGGER:
mbed_official 376:cb4d9db17537 3250 {
mbed_official 376:cb4d9db17537 3251 /* Set the DMA Period elapsed callback */
mbed_official 376:cb4d9db17537 3252 htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;
mbed_official 376:cb4d9db17537 3253
mbed_official 376:cb4d9db17537 3254 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3255 htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3256
mbed_official 376:cb4d9db17537 3257 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3258 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3259 }
mbed_official 376:cb4d9db17537 3260 break;
mbed_official 376:cb4d9db17537 3261 default:
mbed_official 376:cb4d9db17537 3262 break;
mbed_official 376:cb4d9db17537 3263 }
mbed_official 376:cb4d9db17537 3264 /* configure the DMA Burst Mode */
mbed_official 489:119543c9f674 3265 htim->Instance->DCR = BurstBaseAddress | BurstLength;
mbed_official 489:119543c9f674 3266
mbed_official 376:cb4d9db17537 3267 /* Enable the TIM DMA Request */
mbed_official 489:119543c9f674 3268 __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
mbed_official 489:119543c9f674 3269
mbed_official 376:cb4d9db17537 3270 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 3271
mbed_official 376:cb4d9db17537 3272 /* Return function status */
mbed_official 376:cb4d9db17537 3273 return HAL_OK;
mbed_official 376:cb4d9db17537 3274 }
mbed_official 376:cb4d9db17537 3275
mbed_official 376:cb4d9db17537 3276 /**
mbed_official 489:119543c9f674 3277 * @brief Stops the TIM DMA Burst mode
mbed_official 489:119543c9f674 3278 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3279 * @param BurstRequestSrc: TIM DMA Request sources to disable
mbed_official 376:cb4d9db17537 3280 * @retval HAL status
mbed_official 376:cb4d9db17537 3281 */
mbed_official 376:cb4d9db17537 3282 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
mbed_official 376:cb4d9db17537 3283 {
mbed_official 376:cb4d9db17537 3284 /* Check the parameters */
mbed_official 376:cb4d9db17537 3285 assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
mbed_official 376:cb4d9db17537 3286
mbed_official 489:119543c9f674 3287 /* Abort the DMA transfer (at least disable the DMA channel) */
mbed_official 489:119543c9f674 3288 switch(BurstRequestSrc)
mbed_official 489:119543c9f674 3289 {
mbed_official 489:119543c9f674 3290 case TIM_DMA_UPDATE:
mbed_official 489:119543c9f674 3291 {
mbed_official 489:119543c9f674 3292 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_UPDATE]);
mbed_official 489:119543c9f674 3293 }
mbed_official 489:119543c9f674 3294 break;
mbed_official 489:119543c9f674 3295 case TIM_DMA_CC1:
mbed_official 489:119543c9f674 3296 {
mbed_official 489:119543c9f674 3297 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC1]);
mbed_official 489:119543c9f674 3298 }
mbed_official 489:119543c9f674 3299 break;
mbed_official 489:119543c9f674 3300 case TIM_DMA_CC2:
mbed_official 489:119543c9f674 3301 {
mbed_official 489:119543c9f674 3302 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC2]);
mbed_official 489:119543c9f674 3303 }
mbed_official 489:119543c9f674 3304 break;
mbed_official 489:119543c9f674 3305 case TIM_DMA_CC3:
mbed_official 489:119543c9f674 3306 {
mbed_official 489:119543c9f674 3307 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC3]);
mbed_official 489:119543c9f674 3308 }
mbed_official 489:119543c9f674 3309 break;
mbed_official 489:119543c9f674 3310 case TIM_DMA_CC4:
mbed_official 489:119543c9f674 3311 {
mbed_official 489:119543c9f674 3312 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC4]);
mbed_official 489:119543c9f674 3313 }
mbed_official 489:119543c9f674 3314 break;
mbed_official 489:119543c9f674 3315 case TIM_DMA_TRIGGER:
mbed_official 489:119543c9f674 3316 {
mbed_official 489:119543c9f674 3317 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_TRIGGER]);
mbed_official 489:119543c9f674 3318 }
mbed_official 489:119543c9f674 3319 break;
mbed_official 489:119543c9f674 3320 default:
mbed_official 489:119543c9f674 3321 break;
mbed_official 489:119543c9f674 3322 }
mbed_official 376:cb4d9db17537 3323 /* Disable the TIM Update DMA request */
mbed_official 376:cb4d9db17537 3324 __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
mbed_official 376:cb4d9db17537 3325
mbed_official 376:cb4d9db17537 3326 /* Return function status */
mbed_official 376:cb4d9db17537 3327 return HAL_OK;
mbed_official 376:cb4d9db17537 3328 }
mbed_official 376:cb4d9db17537 3329
mbed_official 376:cb4d9db17537 3330 /**
mbed_official 489:119543c9f674 3331 * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory
mbed_official 489:119543c9f674 3332 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3333 * @param BurstBaseAddress: TIM Base address from when the DMA will starts the Data read.
mbed_official 376:cb4d9db17537 3334 * This parameters can be on of the following values:
mbed_official 489:119543c9f674 3335 * @arg TIM_DMABASE_CR1
mbed_official 489:119543c9f674 3336 * @arg TIM_DMABASE_CR2
mbed_official 489:119543c9f674 3337 * @arg TIM_DMABASE_SMCR
mbed_official 489:119543c9f674 3338 * @arg TIM_DMABASE_DIER
mbed_official 489:119543c9f674 3339 * @arg TIM_DMABASE_SR
mbed_official 489:119543c9f674 3340 * @arg TIM_DMABASE_EGR
mbed_official 489:119543c9f674 3341 * @arg TIM_DMABASE_CCMR1
mbed_official 489:119543c9f674 3342 * @arg TIM_DMABASE_CCMR2
mbed_official 489:119543c9f674 3343 * @arg TIM_DMABASE_CCER
mbed_official 489:119543c9f674 3344 * @arg TIM_DMABASE_CNT
mbed_official 489:119543c9f674 3345 * @arg TIM_DMABASE_PSC
mbed_official 489:119543c9f674 3346 * @arg TIM_DMABASE_ARR
mbed_official 489:119543c9f674 3347 * @arg TIM_DMABASE_CCR1
mbed_official 489:119543c9f674 3348 * @arg TIM_DMABASE_CCR2
mbed_official 489:119543c9f674 3349 * @arg TIM_DMABASE_CCR3
mbed_official 489:119543c9f674 3350 * @arg TIM_DMABASE_CCR4
mbed_official 489:119543c9f674 3351 * @arg TIM_DMABASE_DCR
mbed_official 376:cb4d9db17537 3352 * @param BurstRequestSrc: TIM DMA Request sources.
mbed_official 376:cb4d9db17537 3353 * This parameters can be on of the following values:
mbed_official 376:cb4d9db17537 3354 * @arg TIM_DMA_UPDATE: TIM update Interrupt source
mbed_official 376:cb4d9db17537 3355 * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source
mbed_official 376:cb4d9db17537 3356 * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source
mbed_official 376:cb4d9db17537 3357 * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source
mbed_official 376:cb4d9db17537 3358 * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source
mbed_official 376:cb4d9db17537 3359 * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source
mbed_official 376:cb4d9db17537 3360 * @param BurstBuffer: The Buffer address.
mbed_official 376:cb4d9db17537 3361 * @param BurstLength: DMA Burst length. This parameter can be one value
mbed_official 489:119543c9f674 3362 * between TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS .
mbed_official 376:cb4d9db17537 3363 * @retval HAL status
mbed_official 376:cb4d9db17537 3364 */
mbed_official 376:cb4d9db17537 3365 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,
mbed_official 376:cb4d9db17537 3366 uint32_t *BurstBuffer, uint32_t BurstLength)
mbed_official 376:cb4d9db17537 3367 {
mbed_official 376:cb4d9db17537 3368 /* Check the parameters */
mbed_official 376:cb4d9db17537 3369 assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3370 assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));
mbed_official 376:cb4d9db17537 3371 assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
mbed_official 376:cb4d9db17537 3372 assert_param(IS_TIM_DMA_LENGTH(BurstLength));
mbed_official 376:cb4d9db17537 3373
mbed_official 376:cb4d9db17537 3374 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 376:cb4d9db17537 3375 {
mbed_official 376:cb4d9db17537 3376 return HAL_BUSY;
mbed_official 376:cb4d9db17537 3377 }
mbed_official 376:cb4d9db17537 3378 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 376:cb4d9db17537 3379 {
mbed_official 489:119543c9f674 3380 if((BurstBuffer == 0 ) && (BurstLength > 0))
mbed_official 376:cb4d9db17537 3381 {
mbed_official 489:119543c9f674 3382 return HAL_ERROR;
mbed_official 376:cb4d9db17537 3383 }
mbed_official 376:cb4d9db17537 3384 else
mbed_official 376:cb4d9db17537 3385 {
mbed_official 376:cb4d9db17537 3386 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 3387 }
mbed_official 489:119543c9f674 3388 }
mbed_official 376:cb4d9db17537 3389 switch(BurstRequestSrc)
mbed_official 376:cb4d9db17537 3390 {
mbed_official 376:cb4d9db17537 3391 case TIM_DMA_UPDATE:
mbed_official 489:119543c9f674 3392 {
mbed_official 376:cb4d9db17537 3393 /* Set the DMA Period elapsed callback */
mbed_official 376:cb4d9db17537 3394 htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt;
mbed_official 489:119543c9f674 3395
mbed_official 376:cb4d9db17537 3396 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3397 htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3398
mbed_official 376:cb4d9db17537 3399 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3400 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3401 }
mbed_official 376:cb4d9db17537 3402 break;
mbed_official 376:cb4d9db17537 3403 case TIM_DMA_CC1:
mbed_official 489:119543c9f674 3404 {
mbed_official 376:cb4d9db17537 3405 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3406 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 3407
mbed_official 376:cb4d9db17537 3408 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3409 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3410
mbed_official 376:cb4d9db17537 3411 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3412 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3413 }
mbed_official 376:cb4d9db17537 3414 break;
mbed_official 376:cb4d9db17537 3415 case TIM_DMA_CC2:
mbed_official 489:119543c9f674 3416 {
mbed_official 376:cb4d9db17537 3417 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3418 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 3419
mbed_official 376:cb4d9db17537 3420 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3421 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3422
mbed_official 376:cb4d9db17537 3423 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3424 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3425 }
mbed_official 376:cb4d9db17537 3426 break;
mbed_official 376:cb4d9db17537 3427 case TIM_DMA_CC3:
mbed_official 489:119543c9f674 3428 {
mbed_official 376:cb4d9db17537 3429 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3430 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 3431
mbed_official 376:cb4d9db17537 3432 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3433 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
mbed_official 376:cb4d9db17537 3434
mbed_official 376:cb4d9db17537 3435 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3436 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3437 }
mbed_official 376:cb4d9db17537 3438 break;
mbed_official 376:cb4d9db17537 3439 case TIM_DMA_CC4:
mbed_official 489:119543c9f674 3440 {
mbed_official 376:cb4d9db17537 3441 /* Set the DMA Period elapsed callback */
mbed_official 489:119543c9f674 3442 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt;
mbed_official 489:119543c9f674 3443
mbed_official 376:cb4d9db17537 3444 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3445 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 3446
mbed_official 376:cb4d9db17537 3447 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3448 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3449 }
mbed_official 376:cb4d9db17537 3450 break;
mbed_official 376:cb4d9db17537 3451 case TIM_DMA_TRIGGER:
mbed_official 489:119543c9f674 3452 {
mbed_official 376:cb4d9db17537 3453 /* Set the DMA Period elapsed callback */
mbed_official 376:cb4d9db17537 3454 htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt;
mbed_official 489:119543c9f674 3455
mbed_official 376:cb4d9db17537 3456 /* Set the DMA error callback */
mbed_official 489:119543c9f674 3457 htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
mbed_official 489:119543c9f674 3458
mbed_official 376:cb4d9db17537 3459 /* Enable the DMA Stream */
mbed_official 489:119543c9f674 3460 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, ((BurstLength) >> 8) + 1);
mbed_official 376:cb4d9db17537 3461 }
mbed_official 376:cb4d9db17537 3462 break;
mbed_official 376:cb4d9db17537 3463 default:
mbed_official 489:119543c9f674 3464 break;
mbed_official 376:cb4d9db17537 3465 }
mbed_official 376:cb4d9db17537 3466
mbed_official 376:cb4d9db17537 3467 /* configure the DMA Burst Mode */
mbed_official 489:119543c9f674 3468 htim->Instance->DCR = BurstBaseAddress | BurstLength;
mbed_official 489:119543c9f674 3469
mbed_official 376:cb4d9db17537 3470 /* Enable the TIM DMA Request */
mbed_official 376:cb4d9db17537 3471 __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
mbed_official 489:119543c9f674 3472
mbed_official 376:cb4d9db17537 3473 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 3474
mbed_official 376:cb4d9db17537 3475 /* Return function status */
mbed_official 376:cb4d9db17537 3476 return HAL_OK;
mbed_official 376:cb4d9db17537 3477 }
mbed_official 376:cb4d9db17537 3478
mbed_official 376:cb4d9db17537 3479 /**
mbed_official 489:119543c9f674 3480 * @brief Stop the DMA burst reading
mbed_official 489:119543c9f674 3481 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3482 * @param BurstRequestSrc: TIM DMA Request sources to disable.
mbed_official 376:cb4d9db17537 3483 * @retval HAL status
mbed_official 376:cb4d9db17537 3484 */
mbed_official 376:cb4d9db17537 3485 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
mbed_official 376:cb4d9db17537 3486 {
mbed_official 376:cb4d9db17537 3487 /* Check the parameters */
mbed_official 376:cb4d9db17537 3488 assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
mbed_official 376:cb4d9db17537 3489
mbed_official 489:119543c9f674 3490 /* Abort the DMA transfer (at least disable the DMA channel) */
mbed_official 489:119543c9f674 3491 switch(BurstRequestSrc)
mbed_official 489:119543c9f674 3492 {
mbed_official 489:119543c9f674 3493 case TIM_DMA_UPDATE:
mbed_official 489:119543c9f674 3494 {
mbed_official 489:119543c9f674 3495 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_UPDATE]);
mbed_official 489:119543c9f674 3496 }
mbed_official 489:119543c9f674 3497 break;
mbed_official 489:119543c9f674 3498 case TIM_DMA_CC1:
mbed_official 489:119543c9f674 3499 {
mbed_official 489:119543c9f674 3500 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC1]);
mbed_official 489:119543c9f674 3501 }
mbed_official 489:119543c9f674 3502 break;
mbed_official 489:119543c9f674 3503 case TIM_DMA_CC2:
mbed_official 489:119543c9f674 3504 {
mbed_official 489:119543c9f674 3505 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC2]);
mbed_official 489:119543c9f674 3506 }
mbed_official 489:119543c9f674 3507 break;
mbed_official 489:119543c9f674 3508 case TIM_DMA_CC3:
mbed_official 489:119543c9f674 3509 {
mbed_official 489:119543c9f674 3510 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC3]);
mbed_official 489:119543c9f674 3511 }
mbed_official 489:119543c9f674 3512 break;
mbed_official 489:119543c9f674 3513 case TIM_DMA_CC4:
mbed_official 489:119543c9f674 3514 {
mbed_official 489:119543c9f674 3515 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_CC4]);
mbed_official 489:119543c9f674 3516 }
mbed_official 489:119543c9f674 3517 break;
mbed_official 489:119543c9f674 3518 case TIM_DMA_TRIGGER:
mbed_official 489:119543c9f674 3519 {
mbed_official 489:119543c9f674 3520 HAL_DMA_Abort(htim->hdma[TIM_DMA_ID_TRIGGER]);
mbed_official 489:119543c9f674 3521 }
mbed_official 489:119543c9f674 3522 break;
mbed_official 489:119543c9f674 3523 default:
mbed_official 489:119543c9f674 3524 break;
mbed_official 489:119543c9f674 3525 }
mbed_official 489:119543c9f674 3526
mbed_official 376:cb4d9db17537 3527 /* Disable the TIM Update DMA request */
mbed_official 376:cb4d9db17537 3528 __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
mbed_official 489:119543c9f674 3529
mbed_official 376:cb4d9db17537 3530 /* Return function status */
mbed_official 489:119543c9f674 3531 return HAL_OK;
mbed_official 376:cb4d9db17537 3532 }
mbed_official 376:cb4d9db17537 3533
mbed_official 376:cb4d9db17537 3534 /**
mbed_official 376:cb4d9db17537 3535 * @brief Generate a software event
mbed_official 489:119543c9f674 3536 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3537 * @param EventSource: specifies the event source.
mbed_official 376:cb4d9db17537 3538 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 3539 * @arg TIM_EventSource_Update: Timer update Event source
mbed_official 489:119543c9f674 3540 * @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source
mbed_official 376:cb4d9db17537 3541 * @arg TIM_EventSource_CC2: Timer Capture Compare 2 Event source
mbed_official 376:cb4d9db17537 3542 * @arg TIM_EventSource_CC3: Timer Capture Compare 3 Event source
mbed_official 489:119543c9f674 3543 * @arg TIM_EventSource_CC4: Timer Capture Compare 4 Event source
mbed_official 489:119543c9f674 3544 * @arg TIM_EVENTSOURCE_TRIGGER : Timer Trigger Event source
mbed_official 489:119543c9f674 3545 * @note TIM6 can only generate an update event.
mbed_official 376:cb4d9db17537 3546 * @retval HAL status
mbed_official 489:119543c9f674 3547 */
mbed_official 376:cb4d9db17537 3548
mbed_official 376:cb4d9db17537 3549 HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource)
mbed_official 376:cb4d9db17537 3550 {
mbed_official 376:cb4d9db17537 3551 /* Check the parameters */
mbed_official 376:cb4d9db17537 3552 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3553 assert_param(IS_TIM_EVENT_SOURCE(EventSource));
mbed_official 489:119543c9f674 3554
mbed_official 376:cb4d9db17537 3555 /* Process Locked */
mbed_official 376:cb4d9db17537 3556 __HAL_LOCK(htim);
mbed_official 489:119543c9f674 3557
mbed_official 376:cb4d9db17537 3558 /* Change the TIM state */
mbed_official 376:cb4d9db17537 3559 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 3560
mbed_official 376:cb4d9db17537 3561 /* Set the event sources */
mbed_official 376:cb4d9db17537 3562 htim->Instance->EGR = EventSource;
mbed_official 489:119543c9f674 3563
mbed_official 376:cb4d9db17537 3564 /* Change the TIM state */
mbed_official 376:cb4d9db17537 3565 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 3566
mbed_official 376:cb4d9db17537 3567 __HAL_UNLOCK(htim);
mbed_official 376:cb4d9db17537 3568
mbed_official 376:cb4d9db17537 3569 /* Return function status */
mbed_official 489:119543c9f674 3570 return HAL_OK;
mbed_official 376:cb4d9db17537 3571 }
mbed_official 376:cb4d9db17537 3572
mbed_official 376:cb4d9db17537 3573 /**
mbed_official 376:cb4d9db17537 3574 * @brief Configures the OCRef clear feature
mbed_official 489:119543c9f674 3575 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3576 * @param sClearInputConfig: pointer to a TIM_ClearInputConfigTypeDef structure that
mbed_official 489:119543c9f674 3577 * contains the OCREF clear feature and parameters for the TIM peripheral.
mbed_official 376:cb4d9db17537 3578 * @param Channel: specifies the TIM Channel.
mbed_official 376:cb4d9db17537 3579 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 3580 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 3581 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 3582 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 3583 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 3584 * @retval HAL status
mbed_official 489:119543c9f674 3585 */
mbed_official 376:cb4d9db17537 3586 HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef * sClearInputConfig, uint32_t Channel)
mbed_official 489:119543c9f674 3587 {
mbed_official 376:cb4d9db17537 3588 /* Check the parameters */
mbed_official 376:cb4d9db17537 3589 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3590 assert_param(IS_TIM_CHANNELS(Channel));
mbed_official 376:cb4d9db17537 3591 assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource));
mbed_official 376:cb4d9db17537 3592 assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity));
mbed_official 376:cb4d9db17537 3593 assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler));
mbed_official 376:cb4d9db17537 3594 assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter));
mbed_official 489:119543c9f674 3595
mbed_official 376:cb4d9db17537 3596 /* Process Locked */
mbed_official 376:cb4d9db17537 3597 __HAL_LOCK(htim);
mbed_official 489:119543c9f674 3598
mbed_official 376:cb4d9db17537 3599 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 3600
mbed_official 376:cb4d9db17537 3601 if(sClearInputConfig->ClearInputSource == TIM_CLEARINPUTSOURCE_ETR)
mbed_official 376:cb4d9db17537 3602 {
mbed_official 489:119543c9f674 3603 TIM_ETR_SetConfig(htim->Instance,
mbed_official 376:cb4d9db17537 3604 sClearInputConfig->ClearInputPrescaler,
mbed_official 376:cb4d9db17537 3605 sClearInputConfig->ClearInputPolarity,
mbed_official 376:cb4d9db17537 3606 sClearInputConfig->ClearInputFilter);
mbed_official 376:cb4d9db17537 3607 }
mbed_official 489:119543c9f674 3608
mbed_official 376:cb4d9db17537 3609 switch (Channel)
mbed_official 376:cb4d9db17537 3610 {
mbed_official 376:cb4d9db17537 3611 case TIM_CHANNEL_1:
mbed_official 489:119543c9f674 3612 {
mbed_official 489:119543c9f674 3613 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 376:cb4d9db17537 3614 {
mbed_official 376:cb4d9db17537 3615 /* Enable the Ocref clear feature for Channel 1 */
mbed_official 376:cb4d9db17537 3616 htim->Instance->CCMR1 |= TIM_CCMR1_OC1CE;
mbed_official 376:cb4d9db17537 3617 }
mbed_official 376:cb4d9db17537 3618 else
mbed_official 376:cb4d9db17537 3619 {
mbed_official 376:cb4d9db17537 3620 /* Disable the Ocref clear feature for Channel 1 */
mbed_official 489:119543c9f674 3621 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1CE;
mbed_official 376:cb4d9db17537 3622 }
mbed_official 376:cb4d9db17537 3623 }
mbed_official 376:cb4d9db17537 3624 break;
mbed_official 376:cb4d9db17537 3625 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 3626 {
mbed_official 376:cb4d9db17537 3627 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3628 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 376:cb4d9db17537 3629 {
mbed_official 376:cb4d9db17537 3630 /* Enable the Ocref clear feature for Channel 2 */
mbed_official 376:cb4d9db17537 3631 htim->Instance->CCMR1 |= TIM_CCMR1_OC2CE;
mbed_official 376:cb4d9db17537 3632 }
mbed_official 376:cb4d9db17537 3633 else
mbed_official 376:cb4d9db17537 3634 {
mbed_official 376:cb4d9db17537 3635 /* Disable the Ocref clear feature for Channel 2 */
mbed_official 376:cb4d9db17537 3636 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2CE;
mbed_official 376:cb4d9db17537 3637 }
mbed_official 376:cb4d9db17537 3638 }
mbed_official 376:cb4d9db17537 3639 break;
mbed_official 376:cb4d9db17537 3640 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 3641 {
mbed_official 376:cb4d9db17537 3642 assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3643 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 376:cb4d9db17537 3644 {
mbed_official 376:cb4d9db17537 3645 /* Enable the Ocref clear feature for Channel 3 */
mbed_official 376:cb4d9db17537 3646 htim->Instance->CCMR2 |= TIM_CCMR2_OC3CE;
mbed_official 376:cb4d9db17537 3647 }
mbed_official 376:cb4d9db17537 3648 else
mbed_official 376:cb4d9db17537 3649 {
mbed_official 376:cb4d9db17537 3650 /* Disable the Ocref clear feature for Channel 3 */
mbed_official 376:cb4d9db17537 3651 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3CE;
mbed_official 376:cb4d9db17537 3652 }
mbed_official 376:cb4d9db17537 3653 }
mbed_official 376:cb4d9db17537 3654 break;
mbed_official 376:cb4d9db17537 3655 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 3656 {
mbed_official 376:cb4d9db17537 3657 assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3658 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 376:cb4d9db17537 3659 {
mbed_official 376:cb4d9db17537 3660 /* Enable the Ocref clear feature for Channel 4 */
mbed_official 376:cb4d9db17537 3661 htim->Instance->CCMR2 |= TIM_CCMR2_OC4CE;
mbed_official 376:cb4d9db17537 3662 }
mbed_official 376:cb4d9db17537 3663 else
mbed_official 376:cb4d9db17537 3664 {
mbed_official 376:cb4d9db17537 3665 /* Disable the Ocref clear feature for Channel 4 */
mbed_official 376:cb4d9db17537 3666 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4CE;
mbed_official 376:cb4d9db17537 3667 }
mbed_official 376:cb4d9db17537 3668 }
mbed_official 376:cb4d9db17537 3669 break;
mbed_official 376:cb4d9db17537 3670 default:
mbed_official 376:cb4d9db17537 3671 break;
mbed_official 376:cb4d9db17537 3672 }
mbed_official 376:cb4d9db17537 3673
mbed_official 376:cb4d9db17537 3674 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 3675
mbed_official 376:cb4d9db17537 3676 __HAL_UNLOCK(htim);
mbed_official 376:cb4d9db17537 3677
mbed_official 376:cb4d9db17537 3678 return HAL_OK;
mbed_official 376:cb4d9db17537 3679 }
mbed_official 376:cb4d9db17537 3680
mbed_official 376:cb4d9db17537 3681 /**
mbed_official 376:cb4d9db17537 3682 * @brief Configures the clock source to be used
mbed_official 489:119543c9f674 3683 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3684 * @param sClockSourceConfig: pointer to a TIM_ClockConfigTypeDef structure that
mbed_official 376:cb4d9db17537 3685 * contains the clock source information for the TIM peripheral.
mbed_official 376:cb4d9db17537 3686 * @retval HAL status
mbed_official 376:cb4d9db17537 3687 */
mbed_official 376:cb4d9db17537 3688 HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef * sClockSourceConfig)
mbed_official 376:cb4d9db17537 3689 {
mbed_official 376:cb4d9db17537 3690 uint32_t tmpsmcr = 0;
mbed_official 376:cb4d9db17537 3691
mbed_official 376:cb4d9db17537 3692 /* Process Locked */
mbed_official 376:cb4d9db17537 3693 __HAL_LOCK(htim);
mbed_official 376:cb4d9db17537 3694
mbed_official 376:cb4d9db17537 3695 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 3696
mbed_official 376:cb4d9db17537 3697 /* Check the parameters */
mbed_official 376:cb4d9db17537 3698 assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource));
mbed_official 376:cb4d9db17537 3699 assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity));
mbed_official 376:cb4d9db17537 3700 assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler));
mbed_official 376:cb4d9db17537 3701 assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter));
mbed_official 376:cb4d9db17537 3702
mbed_official 376:cb4d9db17537 3703 /* Reset the SMS, TS, ECE, ETPS and ETRF bits */
mbed_official 376:cb4d9db17537 3704 tmpsmcr = htim->Instance->SMCR;
mbed_official 376:cb4d9db17537 3705 tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);
mbed_official 376:cb4d9db17537 3706 tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
mbed_official 376:cb4d9db17537 3707 htim->Instance->SMCR = tmpsmcr;
mbed_official 376:cb4d9db17537 3708
mbed_official 376:cb4d9db17537 3709 switch (sClockSourceConfig->ClockSource)
mbed_official 376:cb4d9db17537 3710 {
mbed_official 376:cb4d9db17537 3711 case TIM_CLOCKSOURCE_INTERNAL:
mbed_official 376:cb4d9db17537 3712 {
mbed_official 376:cb4d9db17537 3713 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3714 /* Disable slave mode to clock the prescaler directly with the internal clock */
mbed_official 376:cb4d9db17537 3715 htim->Instance->SMCR &= ~TIM_SMCR_SMS;
mbed_official 376:cb4d9db17537 3716 }
mbed_official 376:cb4d9db17537 3717 break;
mbed_official 376:cb4d9db17537 3718
mbed_official 376:cb4d9db17537 3719 case TIM_CLOCKSOURCE_ETRMODE1:
mbed_official 376:cb4d9db17537 3720 {
mbed_official 376:cb4d9db17537 3721 assert_param(IS_TIM_ETR_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3722 /* Configure the ETR Clock source */
mbed_official 376:cb4d9db17537 3723 TIM_ETR_SetConfig(htim->Instance,
mbed_official 376:cb4d9db17537 3724 sClockSourceConfig->ClockPrescaler,
mbed_official 376:cb4d9db17537 3725 sClockSourceConfig->ClockPolarity,
mbed_official 376:cb4d9db17537 3726 sClockSourceConfig->ClockFilter);
mbed_official 376:cb4d9db17537 3727 /* Get the TIMx SMCR register value */
mbed_official 376:cb4d9db17537 3728 tmpsmcr = htim->Instance->SMCR;
mbed_official 376:cb4d9db17537 3729 /* Reset the SMS and TS Bits */
mbed_official 376:cb4d9db17537 3730 tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);
mbed_official 376:cb4d9db17537 3731 /* Select the External clock mode1 and the ETRF trigger */
mbed_official 376:cb4d9db17537 3732 tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1);
mbed_official 376:cb4d9db17537 3733 /* Write to TIMx SMCR */
mbed_official 376:cb4d9db17537 3734 htim->Instance->SMCR = tmpsmcr;
mbed_official 376:cb4d9db17537 3735 }
mbed_official 376:cb4d9db17537 3736 break;
mbed_official 376:cb4d9db17537 3737
mbed_official 376:cb4d9db17537 3738 case TIM_CLOCKSOURCE_ETRMODE2:
mbed_official 376:cb4d9db17537 3739 {
mbed_official 376:cb4d9db17537 3740 assert_param(IS_TIM_ETR_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3741 /* Configure the ETR Clock source */
mbed_official 376:cb4d9db17537 3742 TIM_ETR_SetConfig(htim->Instance,
mbed_official 376:cb4d9db17537 3743 sClockSourceConfig->ClockPrescaler,
mbed_official 376:cb4d9db17537 3744 sClockSourceConfig->ClockPolarity,
mbed_official 376:cb4d9db17537 3745 sClockSourceConfig->ClockFilter);
mbed_official 376:cb4d9db17537 3746 /* Enable the External clock mode2 */
mbed_official 376:cb4d9db17537 3747 htim->Instance->SMCR |= TIM_SMCR_ECE;
mbed_official 376:cb4d9db17537 3748 }
mbed_official 376:cb4d9db17537 3749 break;
mbed_official 376:cb4d9db17537 3750
mbed_official 376:cb4d9db17537 3751 case TIM_CLOCKSOURCE_TI1:
mbed_official 376:cb4d9db17537 3752 {
mbed_official 376:cb4d9db17537 3753 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3754 TIM_TI1_ConfigInputStage(htim->Instance,
mbed_official 376:cb4d9db17537 3755 sClockSourceConfig->ClockPolarity,
mbed_official 376:cb4d9db17537 3756 sClockSourceConfig->ClockFilter);
mbed_official 376:cb4d9db17537 3757 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1);
mbed_official 376:cb4d9db17537 3758 }
mbed_official 376:cb4d9db17537 3759 break;
mbed_official 376:cb4d9db17537 3760 case TIM_CLOCKSOURCE_TI2:
mbed_official 376:cb4d9db17537 3761 {
mbed_official 376:cb4d9db17537 3762 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3763 TIM_TI2_ConfigInputStage(htim->Instance,
mbed_official 376:cb4d9db17537 3764 sClockSourceConfig->ClockPolarity,
mbed_official 376:cb4d9db17537 3765 sClockSourceConfig->ClockFilter);
mbed_official 376:cb4d9db17537 3766 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2);
mbed_official 376:cb4d9db17537 3767 }
mbed_official 376:cb4d9db17537 3768 break;
mbed_official 376:cb4d9db17537 3769 case TIM_CLOCKSOURCE_TI1ED:
mbed_official 376:cb4d9db17537 3770 {
mbed_official 376:cb4d9db17537 3771 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3772 TIM_TI1_ConfigInputStage(htim->Instance,
mbed_official 376:cb4d9db17537 3773 sClockSourceConfig->ClockPolarity,
mbed_official 376:cb4d9db17537 3774 sClockSourceConfig->ClockFilter);
mbed_official 376:cb4d9db17537 3775 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED);
mbed_official 376:cb4d9db17537 3776 }
mbed_official 376:cb4d9db17537 3777 break;
mbed_official 376:cb4d9db17537 3778 case TIM_CLOCKSOURCE_ITR0:
mbed_official 376:cb4d9db17537 3779 {
mbed_official 376:cb4d9db17537 3780 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3781 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR0);
mbed_official 376:cb4d9db17537 3782 }
mbed_official 376:cb4d9db17537 3783 break;
mbed_official 376:cb4d9db17537 3784 case TIM_CLOCKSOURCE_ITR1:
mbed_official 376:cb4d9db17537 3785 {
mbed_official 376:cb4d9db17537 3786 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3787 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR1);
mbed_official 376:cb4d9db17537 3788 }
mbed_official 376:cb4d9db17537 3789 break;
mbed_official 376:cb4d9db17537 3790 case TIM_CLOCKSOURCE_ITR2:
mbed_official 376:cb4d9db17537 3791 {
mbed_official 376:cb4d9db17537 3792 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3793 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR2);
mbed_official 376:cb4d9db17537 3794 }
mbed_official 376:cb4d9db17537 3795 break;
mbed_official 376:cb4d9db17537 3796 case TIM_CLOCKSOURCE_ITR3:
mbed_official 376:cb4d9db17537 3797 {
mbed_official 376:cb4d9db17537 3798 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3799 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_ITR3);
mbed_official 376:cb4d9db17537 3800 }
mbed_official 376:cb4d9db17537 3801 break;
mbed_official 376:cb4d9db17537 3802
mbed_official 376:cb4d9db17537 3803 default:
mbed_official 376:cb4d9db17537 3804 break;
mbed_official 376:cb4d9db17537 3805 }
mbed_official 376:cb4d9db17537 3806 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 3807
mbed_official 376:cb4d9db17537 3808 __HAL_UNLOCK(htim);
mbed_official 376:cb4d9db17537 3809
mbed_official 376:cb4d9db17537 3810 return HAL_OK;
mbed_official 376:cb4d9db17537 3811 }
mbed_official 376:cb4d9db17537 3812
mbed_official 376:cb4d9db17537 3813 /**
mbed_official 376:cb4d9db17537 3814 * @brief Selects the signal connected to the TI1 input: direct from CH1_input
mbed_official 376:cb4d9db17537 3815 * or a XOR combination between CH1_input, CH2_input & CH3_input
mbed_official 489:119543c9f674 3816 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3817 * @param TI1_Selection: Indicate whether or not channel 1 is connected to the
mbed_official 376:cb4d9db17537 3818 * output of a XOR gate.
mbed_official 376:cb4d9db17537 3819 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 3820 * @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input
mbed_official 376:cb4d9db17537 3821 * @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3
mbed_official 376:cb4d9db17537 3822 * pins are connected to the TI1 input (XOR combination)
mbed_official 376:cb4d9db17537 3823 * @retval HAL status
mbed_official 376:cb4d9db17537 3824 */
mbed_official 376:cb4d9db17537 3825 HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection)
mbed_official 376:cb4d9db17537 3826 {
mbed_official 376:cb4d9db17537 3827 uint32_t tmpcr2 = 0;
mbed_official 376:cb4d9db17537 3828
mbed_official 376:cb4d9db17537 3829 /* Check the parameters */
mbed_official 376:cb4d9db17537 3830 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3831 assert_param(IS_TIM_TI1SELECTION(TI1_Selection));
mbed_official 376:cb4d9db17537 3832
mbed_official 376:cb4d9db17537 3833 /* Get the TIMx CR2 register value */
mbed_official 376:cb4d9db17537 3834 tmpcr2 = htim->Instance->CR2;
mbed_official 376:cb4d9db17537 3835
mbed_official 376:cb4d9db17537 3836 /* Reset the TI1 selection */
mbed_official 376:cb4d9db17537 3837 tmpcr2 &= ~TIM_CR2_TI1S;
mbed_official 376:cb4d9db17537 3838
mbed_official 376:cb4d9db17537 3839 /* Set the the TI1 selection */
mbed_official 376:cb4d9db17537 3840 tmpcr2 |= TI1_Selection;
mbed_official 376:cb4d9db17537 3841
mbed_official 376:cb4d9db17537 3842 /* Write to TIMxCR2 */
mbed_official 376:cb4d9db17537 3843 htim->Instance->CR2 = tmpcr2;
mbed_official 376:cb4d9db17537 3844
mbed_official 376:cb4d9db17537 3845 return HAL_OK;
mbed_official 376:cb4d9db17537 3846 }
mbed_official 376:cb4d9db17537 3847
mbed_official 376:cb4d9db17537 3848 /**
mbed_official 376:cb4d9db17537 3849 * @brief Configures the TIM in Slave mode
mbed_official 489:119543c9f674 3850 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3851 * @param sSlaveConfig: pointer to a TIM_SlaveConfigTypeDef structure that
mbed_official 376:cb4d9db17537 3852 * contains the selected trigger (internal trigger input, filtered
mbed_official 376:cb4d9db17537 3853 * timer input or external trigger input) and the ) and the Slave
mbed_official 376:cb4d9db17537 3854 * mode (Disable, Reset, Gated, Trigger, External clock mode 1).
mbed_official 376:cb4d9db17537 3855 * @retval HAL status
mbed_official 376:cb4d9db17537 3856 */
mbed_official 376:cb4d9db17537 3857 HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef * sSlaveConfig)
mbed_official 376:cb4d9db17537 3858 {
mbed_official 376:cb4d9db17537 3859 /* Check the parameters */
mbed_official 376:cb4d9db17537 3860 assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3861 assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));
mbed_official 376:cb4d9db17537 3862 assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));
mbed_official 376:cb4d9db17537 3863
mbed_official 376:cb4d9db17537 3864 __HAL_LOCK(htim);
mbed_official 376:cb4d9db17537 3865
mbed_official 376:cb4d9db17537 3866 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 376:cb4d9db17537 3867
mbed_official 489:119543c9f674 3868 /* Configuration in slave mode */
mbed_official 489:119543c9f674 3869 TIM_SlaveTimer_SetConfig(htim, sSlaveConfig);
mbed_official 489:119543c9f674 3870
mbed_official 489:119543c9f674 3871 /* Disable Trigger Interrupt */
mbed_official 489:119543c9f674 3872 __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER);
mbed_official 376:cb4d9db17537 3873
mbed_official 489:119543c9f674 3874 /* Disable Trigger DMA request */
mbed_official 489:119543c9f674 3875 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);
mbed_official 489:119543c9f674 3876
mbed_official 489:119543c9f674 3877 /* Set the new state */
mbed_official 376:cb4d9db17537 3878 htim->State = HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 3879
mbed_official 376:cb4d9db17537 3880 __HAL_UNLOCK(htim);
mbed_official 376:cb4d9db17537 3881
mbed_official 376:cb4d9db17537 3882 return HAL_OK;
mbed_official 376:cb4d9db17537 3883 }
mbed_official 376:cb4d9db17537 3884
mbed_official 376:cb4d9db17537 3885 /**
mbed_official 489:119543c9f674 3886 * @brief Configures the TIM in Slave mode in interrupt mode
mbed_official 489:119543c9f674 3887 * @param htim : TIM handle.
mbed_official 489:119543c9f674 3888 * @param sSlaveConfig: pointer to a TIM_SlaveConfigTypeDef structure that
mbed_official 489:119543c9f674 3889 * contains the selected trigger (internal trigger input, filtered
mbed_official 489:119543c9f674 3890 * timer input or external trigger input) and the ) and the Slave
mbed_official 489:119543c9f674 3891 * mode (Disable, Reset, Gated, Trigger, External clock mode 1).
mbed_official 489:119543c9f674 3892 * @retval HAL status
mbed_official 489:119543c9f674 3893 */
mbed_official 489:119543c9f674 3894 HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization_IT(TIM_HandleTypeDef *htim,
mbed_official 489:119543c9f674 3895 TIM_SlaveConfigTypeDef * sSlaveConfig)
mbed_official 489:119543c9f674 3896 {
mbed_official 489:119543c9f674 3897 /* Check the parameters */
mbed_official 489:119543c9f674 3898 assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 3899 assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode));
mbed_official 489:119543c9f674 3900 assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger));
mbed_official 489:119543c9f674 3901
mbed_official 489:119543c9f674 3902 __HAL_LOCK(htim);
mbed_official 489:119543c9f674 3903
mbed_official 489:119543c9f674 3904 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 489:119543c9f674 3905
mbed_official 489:119543c9f674 3906 TIM_SlaveTimer_SetConfig(htim, sSlaveConfig);
mbed_official 489:119543c9f674 3907
mbed_official 489:119543c9f674 3908 /* Enable Trigger Interrupt */
mbed_official 489:119543c9f674 3909 __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER);
mbed_official 489:119543c9f674 3910
mbed_official 489:119543c9f674 3911 /* Disable Trigger DMA request */
mbed_official 489:119543c9f674 3912 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER);
mbed_official 489:119543c9f674 3913
mbed_official 489:119543c9f674 3914 htim->State = HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 3915
mbed_official 489:119543c9f674 3916 __HAL_UNLOCK(htim);
mbed_official 489:119543c9f674 3917
mbed_official 489:119543c9f674 3918 return HAL_OK;
mbed_official 489:119543c9f674 3919 }
mbed_official 489:119543c9f674 3920
mbed_official 489:119543c9f674 3921 /**
mbed_official 376:cb4d9db17537 3922 * @brief Read the captured value from Capture Compare unit
mbed_official 489:119543c9f674 3923 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 3924 * @param Channel: TIM Channels to be enabled.
mbed_official 376:cb4d9db17537 3925 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 3926 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 376:cb4d9db17537 3927 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 376:cb4d9db17537 3928 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 376:cb4d9db17537 3929 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 376:cb4d9db17537 3930 * @retval Captured value
mbed_official 376:cb4d9db17537 3931 */
mbed_official 376:cb4d9db17537 3932 uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 376:cb4d9db17537 3933 {
mbed_official 376:cb4d9db17537 3934 uint32_t tmpreg = 0;
mbed_official 376:cb4d9db17537 3935
mbed_official 376:cb4d9db17537 3936 __HAL_LOCK(htim);
mbed_official 376:cb4d9db17537 3937
mbed_official 376:cb4d9db17537 3938 switch (Channel)
mbed_official 376:cb4d9db17537 3939 {
mbed_official 376:cb4d9db17537 3940 case TIM_CHANNEL_1:
mbed_official 376:cb4d9db17537 3941 {
mbed_official 376:cb4d9db17537 3942 /* Check the parameters */
mbed_official 376:cb4d9db17537 3943 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3944
mbed_official 376:cb4d9db17537 3945 /* Return the capture 1 value */
mbed_official 376:cb4d9db17537 3946 tmpreg = htim->Instance->CCR1;
mbed_official 376:cb4d9db17537 3947
mbed_official 376:cb4d9db17537 3948 break;
mbed_official 376:cb4d9db17537 3949 }
mbed_official 376:cb4d9db17537 3950 case TIM_CHANNEL_2:
mbed_official 376:cb4d9db17537 3951 {
mbed_official 376:cb4d9db17537 3952 /* Check the parameters */
mbed_official 376:cb4d9db17537 3953 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3954
mbed_official 376:cb4d9db17537 3955 /* Return the capture 2 value */
mbed_official 376:cb4d9db17537 3956 tmpreg = htim->Instance->CCR2;
mbed_official 376:cb4d9db17537 3957
mbed_official 376:cb4d9db17537 3958 break;
mbed_official 376:cb4d9db17537 3959 }
mbed_official 376:cb4d9db17537 3960
mbed_official 376:cb4d9db17537 3961 case TIM_CHANNEL_3:
mbed_official 376:cb4d9db17537 3962 {
mbed_official 376:cb4d9db17537 3963 /* Check the parameters */
mbed_official 376:cb4d9db17537 3964 assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3965
mbed_official 376:cb4d9db17537 3966 /* Return the capture 3 value */
mbed_official 376:cb4d9db17537 3967 tmpreg = htim->Instance->CCR3;
mbed_official 376:cb4d9db17537 3968
mbed_official 376:cb4d9db17537 3969 break;
mbed_official 376:cb4d9db17537 3970 }
mbed_official 376:cb4d9db17537 3971
mbed_official 376:cb4d9db17537 3972 case TIM_CHANNEL_4:
mbed_official 376:cb4d9db17537 3973 {
mbed_official 376:cb4d9db17537 3974 /* Check the parameters */
mbed_official 376:cb4d9db17537 3975 assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
mbed_official 376:cb4d9db17537 3976
mbed_official 376:cb4d9db17537 3977 /* Return the capture 4 value */
mbed_official 376:cb4d9db17537 3978 tmpreg = htim->Instance->CCR4;
mbed_official 376:cb4d9db17537 3979
mbed_official 376:cb4d9db17537 3980 break;
mbed_official 376:cb4d9db17537 3981 }
mbed_official 376:cb4d9db17537 3982
mbed_official 376:cb4d9db17537 3983 default:
mbed_official 376:cb4d9db17537 3984 break;
mbed_official 376:cb4d9db17537 3985 }
mbed_official 376:cb4d9db17537 3986
mbed_official 376:cb4d9db17537 3987 __HAL_UNLOCK(htim);
mbed_official 376:cb4d9db17537 3988 return tmpreg;
mbed_official 376:cb4d9db17537 3989 }
mbed_official 376:cb4d9db17537 3990
mbed_official 376:cb4d9db17537 3991 /**
mbed_official 376:cb4d9db17537 3992 * @}
mbed_official 376:cb4d9db17537 3993 */
mbed_official 376:cb4d9db17537 3994
mbed_official 489:119543c9f674 3995 /** @addtogroup TIM_Exported_Functions_Group9
mbed_official 376:cb4d9db17537 3996 * @brief TIM Callbacks functions
mbed_official 376:cb4d9db17537 3997 *
mbed_official 376:cb4d9db17537 3998 @verbatim
mbed_official 376:cb4d9db17537 3999 ==============================================================================
mbed_official 376:cb4d9db17537 4000 ##### TIM Callbacks functions #####
mbed_official 376:cb4d9db17537 4001 ==============================================================================
mbed_official 376:cb4d9db17537 4002 [..]
mbed_official 376:cb4d9db17537 4003 This section provides TIM callback functions:
mbed_official 376:cb4d9db17537 4004 (+) Timer Period elapsed callback
mbed_official 376:cb4d9db17537 4005 (+) Timer Output Compare callback
mbed_official 376:cb4d9db17537 4006 (+) Timer Input capture callback
mbed_official 376:cb4d9db17537 4007 (+) Timer Trigger callback
mbed_official 376:cb4d9db17537 4008 (+) Timer Error callback
mbed_official 376:cb4d9db17537 4009
mbed_official 376:cb4d9db17537 4010 @endverbatim
mbed_official 376:cb4d9db17537 4011 * @{
mbed_official 376:cb4d9db17537 4012 */
mbed_official 376:cb4d9db17537 4013
mbed_official 376:cb4d9db17537 4014 /**
mbed_official 376:cb4d9db17537 4015 * @brief Period elapsed callback in non blocking mode
mbed_official 489:119543c9f674 4016 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4017 * @retval None
mbed_official 376:cb4d9db17537 4018 */
mbed_official 376:cb4d9db17537 4019 __weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4020 {
mbed_official 376:cb4d9db17537 4021 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 4022 the __HAL_TIM_PeriodElapsedCallback could be implemented in the user file
mbed_official 376:cb4d9db17537 4023 */
mbed_official 376:cb4d9db17537 4024
mbed_official 376:cb4d9db17537 4025 }
mbed_official 376:cb4d9db17537 4026 /**
mbed_official 376:cb4d9db17537 4027 * @brief Output Compare callback in non blocking mode
mbed_official 489:119543c9f674 4028 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4029 * @retval None
mbed_official 376:cb4d9db17537 4030 */
mbed_official 376:cb4d9db17537 4031 __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4032 {
mbed_official 376:cb4d9db17537 4033 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 4034 the __HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file
mbed_official 376:cb4d9db17537 4035 */
mbed_official 376:cb4d9db17537 4036 }
mbed_official 376:cb4d9db17537 4037 /**
mbed_official 376:cb4d9db17537 4038 * @brief Input Capture callback in non blocking mode
mbed_official 376:cb4d9db17537 4039 * @param htim: TIM IC handle
mbed_official 376:cb4d9db17537 4040 * @retval None
mbed_official 376:cb4d9db17537 4041 */
mbed_official 376:cb4d9db17537 4042 __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4043 {
mbed_official 376:cb4d9db17537 4044 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 4045 the __HAL_TIM_IC_CaptureCallback could be implemented in the user file
mbed_official 376:cb4d9db17537 4046 */
mbed_official 376:cb4d9db17537 4047 }
mbed_official 376:cb4d9db17537 4048
mbed_official 376:cb4d9db17537 4049 /**
mbed_official 376:cb4d9db17537 4050 * @brief PWM Pulse finished callback in non blocking mode
mbed_official 489:119543c9f674 4051 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4052 * @retval None
mbed_official 376:cb4d9db17537 4053 */
mbed_official 376:cb4d9db17537 4054 __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4055 {
mbed_official 376:cb4d9db17537 4056 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 4057 the __HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file
mbed_official 376:cb4d9db17537 4058 */
mbed_official 376:cb4d9db17537 4059 }
mbed_official 376:cb4d9db17537 4060
mbed_official 376:cb4d9db17537 4061 /**
mbed_official 376:cb4d9db17537 4062 * @brief Hall Trigger detection callback in non blocking mode
mbed_official 489:119543c9f674 4063 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4064 * @retval None
mbed_official 376:cb4d9db17537 4065 */
mbed_official 376:cb4d9db17537 4066 __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4067 {
mbed_official 376:cb4d9db17537 4068 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 4069 the HAL_TIM_TriggerCallback could be implemented in the user file
mbed_official 376:cb4d9db17537 4070 */
mbed_official 376:cb4d9db17537 4071 }
mbed_official 376:cb4d9db17537 4072
mbed_official 376:cb4d9db17537 4073 /**
mbed_official 376:cb4d9db17537 4074 * @brief Timer error callback in non blocking mode
mbed_official 489:119543c9f674 4075 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4076 * @retval None
mbed_official 376:cb4d9db17537 4077 */
mbed_official 376:cb4d9db17537 4078 __weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4079 {
mbed_official 376:cb4d9db17537 4080 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 376:cb4d9db17537 4081 the HAL_TIM_ErrorCallback could be implemented in the user file
mbed_official 376:cb4d9db17537 4082 */
mbed_official 376:cb4d9db17537 4083 }
mbed_official 376:cb4d9db17537 4084
mbed_official 376:cb4d9db17537 4085 /**
mbed_official 376:cb4d9db17537 4086 * @}
mbed_official 376:cb4d9db17537 4087 */
mbed_official 376:cb4d9db17537 4088
mbed_official 489:119543c9f674 4089 /** @addtogroup TIM_Exported_Functions_Group10
mbed_official 376:cb4d9db17537 4090 * @brief Peripheral State functions
mbed_official 376:cb4d9db17537 4091 *
mbed_official 376:cb4d9db17537 4092 @verbatim
mbed_official 376:cb4d9db17537 4093 ==============================================================================
mbed_official 376:cb4d9db17537 4094 ##### Peripheral State functions #####
mbed_official 376:cb4d9db17537 4095 ==============================================================================
mbed_official 376:cb4d9db17537 4096 [..]
mbed_official 376:cb4d9db17537 4097 This subsection permits to get in run-time the status of the peripheral
mbed_official 376:cb4d9db17537 4098 and the data flow.
mbed_official 376:cb4d9db17537 4099
mbed_official 376:cb4d9db17537 4100 @endverbatim
mbed_official 376:cb4d9db17537 4101 * @{
mbed_official 376:cb4d9db17537 4102 */
mbed_official 376:cb4d9db17537 4103
mbed_official 376:cb4d9db17537 4104 /**
mbed_official 376:cb4d9db17537 4105 * @brief Return the TIM Base state
mbed_official 489:119543c9f674 4106 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4107 * @retval HAL state
mbed_official 376:cb4d9db17537 4108 */
mbed_official 376:cb4d9db17537 4109 HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4110 {
mbed_official 376:cb4d9db17537 4111 return htim->State;
mbed_official 376:cb4d9db17537 4112 }
mbed_official 376:cb4d9db17537 4113
mbed_official 376:cb4d9db17537 4114 /**
mbed_official 376:cb4d9db17537 4115 * @brief Return the TIM OC state
mbed_official 376:cb4d9db17537 4116 * @param htim: TIM Ouput Compare handle
mbed_official 376:cb4d9db17537 4117 * @retval HAL state
mbed_official 376:cb4d9db17537 4118 */
mbed_official 376:cb4d9db17537 4119 HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4120 {
mbed_official 376:cb4d9db17537 4121 return htim->State;
mbed_official 376:cb4d9db17537 4122 }
mbed_official 376:cb4d9db17537 4123
mbed_official 376:cb4d9db17537 4124 /**
mbed_official 376:cb4d9db17537 4125 * @brief Return the TIM PWM state
mbed_official 489:119543c9f674 4126 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4127 * @retval HAL state
mbed_official 376:cb4d9db17537 4128 */
mbed_official 376:cb4d9db17537 4129 HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4130 {
mbed_official 376:cb4d9db17537 4131 return htim->State;
mbed_official 376:cb4d9db17537 4132 }
mbed_official 376:cb4d9db17537 4133
mbed_official 376:cb4d9db17537 4134 /**
mbed_official 376:cb4d9db17537 4135 * @brief Return the TIM Input Capture state
mbed_official 489:119543c9f674 4136 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4137 * @retval HAL state
mbed_official 376:cb4d9db17537 4138 */
mbed_official 376:cb4d9db17537 4139 HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4140 {
mbed_official 376:cb4d9db17537 4141 return htim->State;
mbed_official 376:cb4d9db17537 4142 }
mbed_official 376:cb4d9db17537 4143
mbed_official 376:cb4d9db17537 4144 /**
mbed_official 376:cb4d9db17537 4145 * @brief Return the TIM One Pulse Mode state
mbed_official 376:cb4d9db17537 4146 * @param htim: TIM OPM handle
mbed_official 376:cb4d9db17537 4147 * @retval HAL state
mbed_official 376:cb4d9db17537 4148 */
mbed_official 376:cb4d9db17537 4149 HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4150 {
mbed_official 376:cb4d9db17537 4151 return htim->State;
mbed_official 376:cb4d9db17537 4152 }
mbed_official 376:cb4d9db17537 4153
mbed_official 376:cb4d9db17537 4154 /**
mbed_official 376:cb4d9db17537 4155 * @brief Return the TIM Encoder Mode state
mbed_official 489:119543c9f674 4156 * @param htim : TIM handle
mbed_official 376:cb4d9db17537 4157 * @retval HAL state
mbed_official 376:cb4d9db17537 4158 */
mbed_official 376:cb4d9db17537 4159 HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim)
mbed_official 376:cb4d9db17537 4160 {
mbed_official 376:cb4d9db17537 4161 return htim->State;
mbed_official 376:cb4d9db17537 4162 }
mbed_official 376:cb4d9db17537 4163
mbed_official 489:119543c9f674 4164
mbed_official 376:cb4d9db17537 4165
mbed_official 376:cb4d9db17537 4166 /**
mbed_official 376:cb4d9db17537 4167 * @brief TIM DMA error callback
mbed_official 376:cb4d9db17537 4168 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 4169 * the configuration information for the specified DMA module.
mbed_official 376:cb4d9db17537 4170 * @retval None
mbed_official 376:cb4d9db17537 4171 */
mbed_official 489:119543c9f674 4172 void TIM_DMAError(DMA_HandleTypeDef *hdma)
mbed_official 376:cb4d9db17537 4173 {
mbed_official 376:cb4d9db17537 4174 TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 376:cb4d9db17537 4175
mbed_official 376:cb4d9db17537 4176 htim->State= HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 4177
mbed_official 376:cb4d9db17537 4178 HAL_TIM_ErrorCallback(htim);
mbed_official 376:cb4d9db17537 4179 }
mbed_official 376:cb4d9db17537 4180
mbed_official 376:cb4d9db17537 4181 /**
mbed_official 376:cb4d9db17537 4182 * @brief TIM DMA Delay Pulse complete callback.
mbed_official 489:119543c9f674 4183 * @param hdma : pointer to a DMA_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 4184 * the configuration information for the specified DMA module.
mbed_official 376:cb4d9db17537 4185 * @retval None
mbed_official 376:cb4d9db17537 4186 */
mbed_official 489:119543c9f674 4187 void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma)
mbed_official 376:cb4d9db17537 4188 {
mbed_official 376:cb4d9db17537 4189 TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 376:cb4d9db17537 4190
mbed_official 376:cb4d9db17537 4191 htim->State= HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 4192
mbed_official 489:119543c9f674 4193 if (hdma == htim->hdma[TIM_DMA_ID_CC1])
mbed_official 489:119543c9f674 4194 {
mbed_official 489:119543c9f674 4195 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
mbed_official 489:119543c9f674 4196 }
mbed_official 489:119543c9f674 4197 else if (hdma == htim->hdma[TIM_DMA_ID_CC2])
mbed_official 489:119543c9f674 4198 {
mbed_official 489:119543c9f674 4199 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
mbed_official 489:119543c9f674 4200 }
mbed_official 489:119543c9f674 4201 else if (hdma == htim->hdma[TIM_DMA_ID_CC3])
mbed_official 489:119543c9f674 4202 {
mbed_official 489:119543c9f674 4203 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
mbed_official 489:119543c9f674 4204 }
mbed_official 489:119543c9f674 4205 else if (hdma == htim->hdma[TIM_DMA_ID_CC4])
mbed_official 489:119543c9f674 4206 {
mbed_official 489:119543c9f674 4207 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
mbed_official 489:119543c9f674 4208 }
mbed_official 376:cb4d9db17537 4209 HAL_TIM_PWM_PulseFinishedCallback(htim);
mbed_official 489:119543c9f674 4210
mbed_official 489:119543c9f674 4211 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
mbed_official 376:cb4d9db17537 4212 }
mbed_official 376:cb4d9db17537 4213 /**
mbed_official 376:cb4d9db17537 4214 * @brief TIM DMA Capture complete callback.
mbed_official 489:119543c9f674 4215 * @param hdma : pointer to a DMA_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 4216 * the configuration information for the specified DMA module.
mbed_official 376:cb4d9db17537 4217 * @retval None
mbed_official 376:cb4d9db17537 4218 */
mbed_official 489:119543c9f674 4219 void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma)
mbed_official 376:cb4d9db17537 4220 {
mbed_official 376:cb4d9db17537 4221 TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 489:119543c9f674 4222
mbed_official 489:119543c9f674 4223 htim->State= HAL_TIM_STATE_READY;
mbed_official 489:119543c9f674 4224
mbed_official 489:119543c9f674 4225 if (hdma == htim->hdma[TIM_DMA_ID_CC1])
mbed_official 489:119543c9f674 4226 {
mbed_official 489:119543c9f674 4227 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
mbed_official 489:119543c9f674 4228 }
mbed_official 489:119543c9f674 4229 else if (hdma == htim->hdma[TIM_DMA_ID_CC2])
mbed_official 489:119543c9f674 4230 {
mbed_official 489:119543c9f674 4231 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
mbed_official 489:119543c9f674 4232 }
mbed_official 489:119543c9f674 4233 else if (hdma == htim->hdma[TIM_DMA_ID_CC3])
mbed_official 489:119543c9f674 4234 {
mbed_official 489:119543c9f674 4235 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
mbed_official 489:119543c9f674 4236 }
mbed_official 489:119543c9f674 4237 else if (hdma == htim->hdma[TIM_DMA_ID_CC4])
mbed_official 489:119543c9f674 4238 {
mbed_official 489:119543c9f674 4239 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
mbed_official 489:119543c9f674 4240 }
mbed_official 489:119543c9f674 4241
mbed_official 489:119543c9f674 4242 HAL_TIM_IC_CaptureCallback(htim);
mbed_official 489:119543c9f674 4243
mbed_official 489:119543c9f674 4244 htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
mbed_official 376:cb4d9db17537 4245 }
mbed_official 376:cb4d9db17537 4246
mbed_official 489:119543c9f674 4247
mbed_official 376:cb4d9db17537 4248 /**
mbed_official 376:cb4d9db17537 4249 * @}
mbed_official 376:cb4d9db17537 4250 */
mbed_official 376:cb4d9db17537 4251
mbed_official 376:cb4d9db17537 4252 /**
mbed_official 489:119543c9f674 4253 * @}
mbed_official 489:119543c9f674 4254 */
mbed_official 489:119543c9f674 4255 /*************************************************************/
mbed_official 489:119543c9f674 4256 /* Private functions */
mbed_official 489:119543c9f674 4257 /*************************************************************/
mbed_official 489:119543c9f674 4258
mbed_official 489:119543c9f674 4259 /** @defgroup TIM_Private_Functions TIM Private Functions
mbed_official 489:119543c9f674 4260 * @{
mbed_official 489:119543c9f674 4261 */
mbed_official 489:119543c9f674 4262 /**
mbed_official 376:cb4d9db17537 4263 * @brief TIM DMA Period Elapse complete callback.
mbed_official 489:119543c9f674 4264 * @param hdma : pointer to DMA handle.
mbed_official 376:cb4d9db17537 4265 * @retval None
mbed_official 376:cb4d9db17537 4266 */
mbed_official 376:cb4d9db17537 4267 static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma)
mbed_official 376:cb4d9db17537 4268 {
mbed_official 376:cb4d9db17537 4269 TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 376:cb4d9db17537 4270
mbed_official 376:cb4d9db17537 4271 htim->State= HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 4272
mbed_official 376:cb4d9db17537 4273 HAL_TIM_PeriodElapsedCallback(htim);
mbed_official 376:cb4d9db17537 4274 }
mbed_official 376:cb4d9db17537 4275
mbed_official 376:cb4d9db17537 4276
mbed_official 376:cb4d9db17537 4277 /**
mbed_official 376:cb4d9db17537 4278 * @brief TIM DMA Trigger callback.
mbed_official 489:119543c9f674 4279 * @param hdma : pointer to DMA handle.
mbed_official 376:cb4d9db17537 4280 * @retval None
mbed_official 376:cb4d9db17537 4281 */
mbed_official 376:cb4d9db17537 4282 static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma)
mbed_official 376:cb4d9db17537 4283 {
mbed_official 376:cb4d9db17537 4284 TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 376:cb4d9db17537 4285
mbed_official 376:cb4d9db17537 4286 htim->State= HAL_TIM_STATE_READY;
mbed_official 376:cb4d9db17537 4287
mbed_official 376:cb4d9db17537 4288 HAL_TIM_TriggerCallback(htim);
mbed_official 376:cb4d9db17537 4289 }
mbed_official 376:cb4d9db17537 4290
mbed_official 376:cb4d9db17537 4291 /**
mbed_official 376:cb4d9db17537 4292 * @brief Time Base configuration
mbed_official 489:119543c9f674 4293 * @param TIMx : TIM peripheral
mbed_official 489:119543c9f674 4294 * @param Structure : TIM Base configuration structure
mbed_official 376:cb4d9db17537 4295 * @retval None
mbed_official 376:cb4d9db17537 4296 */
mbed_official 376:cb4d9db17537 4297 static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
mbed_official 376:cb4d9db17537 4298 {
mbed_official 376:cb4d9db17537 4299 uint32_t tmpcr1 = 0;
mbed_official 376:cb4d9db17537 4300 tmpcr1 = TIMx->CR1;
mbed_official 376:cb4d9db17537 4301
mbed_official 376:cb4d9db17537 4302 /* Set TIM Time Base Unit parameters ---------------------------------------*/
mbed_official 489:119543c9f674 4303 if(IS_TIM_CC1_INSTANCE(TIMx) != RESET)
mbed_official 376:cb4d9db17537 4304 {
mbed_official 376:cb4d9db17537 4305 /* Select the Counter Mode */
mbed_official 376:cb4d9db17537 4306 tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
mbed_official 376:cb4d9db17537 4307 tmpcr1 |= Structure->CounterMode;
mbed_official 376:cb4d9db17537 4308 }
mbed_official 376:cb4d9db17537 4309
mbed_official 376:cb4d9db17537 4310 if(IS_TIM_CC1_INSTANCE(TIMx) != RESET)
mbed_official 376:cb4d9db17537 4311 {
mbed_official 376:cb4d9db17537 4312 /* Set the clock division */
mbed_official 376:cb4d9db17537 4313 tmpcr1 &= ~TIM_CR1_CKD;
mbed_official 376:cb4d9db17537 4314 tmpcr1 |= (uint32_t)Structure->ClockDivision;
mbed_official 376:cb4d9db17537 4315 }
mbed_official 376:cb4d9db17537 4316
mbed_official 376:cb4d9db17537 4317 TIMx->CR1 = tmpcr1;
mbed_official 376:cb4d9db17537 4318
mbed_official 376:cb4d9db17537 4319 /* Set the Autoreload value */
mbed_official 376:cb4d9db17537 4320 TIMx->ARR = (uint32_t)Structure->Period ;
mbed_official 376:cb4d9db17537 4321
mbed_official 376:cb4d9db17537 4322 /* Set the Prescaler value */
mbed_official 376:cb4d9db17537 4323 TIMx->PSC = (uint32_t)Structure->Prescaler;
mbed_official 376:cb4d9db17537 4324
mbed_official 376:cb4d9db17537 4325 /* Generate an update event to reload the Prescaler value immediatly */
mbed_official 376:cb4d9db17537 4326 TIMx->EGR = TIM_EGR_UG;
mbed_official 376:cb4d9db17537 4327 }
mbed_official 376:cb4d9db17537 4328
mbed_official 376:cb4d9db17537 4329 /**
mbed_official 376:cb4d9db17537 4330 * @brief Time Ouput Compare 1 configuration
mbed_official 376:cb4d9db17537 4331 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4332 * @param OC_Config: The ouput configuration structure
mbed_official 376:cb4d9db17537 4333 * @retval None
mbed_official 376:cb4d9db17537 4334 */
mbed_official 376:cb4d9db17537 4335 static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
mbed_official 376:cb4d9db17537 4336 {
mbed_official 376:cb4d9db17537 4337 uint32_t tmpccmrx = 0;
mbed_official 376:cb4d9db17537 4338 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4339 uint32_t tmpcr2 = 0;
mbed_official 376:cb4d9db17537 4340
mbed_official 376:cb4d9db17537 4341 /* Disable the Channel 1: Reset the CC1E Bit */
mbed_official 376:cb4d9db17537 4342 TIMx->CCER &= ~TIM_CCER_CC1E;
mbed_official 376:cb4d9db17537 4343
mbed_official 376:cb4d9db17537 4344 /* Get the TIMx CCER register value */
mbed_official 376:cb4d9db17537 4345 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4346 /* Get the TIMx CR2 register value */
mbed_official 376:cb4d9db17537 4347 tmpcr2 = TIMx->CR2;
mbed_official 376:cb4d9db17537 4348
mbed_official 376:cb4d9db17537 4349 /* Get the TIMx CCMR1 register value */
mbed_official 376:cb4d9db17537 4350 tmpccmrx = TIMx->CCMR1;
mbed_official 376:cb4d9db17537 4351
mbed_official 376:cb4d9db17537 4352 /* Reset the Output Compare Mode Bits */
mbed_official 376:cb4d9db17537 4353 tmpccmrx &= ~TIM_CCMR1_OC1M;
mbed_official 376:cb4d9db17537 4354 tmpccmrx &= ~TIM_CCMR1_CC1S;
mbed_official 376:cb4d9db17537 4355 /* Select the Output Compare Mode */
mbed_official 376:cb4d9db17537 4356 tmpccmrx |= OC_Config->OCMode;
mbed_official 376:cb4d9db17537 4357
mbed_official 376:cb4d9db17537 4358 /* Reset the Output Polarity level */
mbed_official 376:cb4d9db17537 4359 tmpccer &= ~TIM_CCER_CC1P;
mbed_official 376:cb4d9db17537 4360 /* Set the Output Compare Polarity */
mbed_official 376:cb4d9db17537 4361 tmpccer |= OC_Config->OCPolarity;
mbed_official 376:cb4d9db17537 4362
mbed_official 376:cb4d9db17537 4363 /* Write to TIMx CR2 */
mbed_official 376:cb4d9db17537 4364 TIMx->CR2 = tmpcr2;
mbed_official 376:cb4d9db17537 4365
mbed_official 376:cb4d9db17537 4366 /* Write to TIMx CCMR1 */
mbed_official 376:cb4d9db17537 4367 TIMx->CCMR1 = tmpccmrx;
mbed_official 376:cb4d9db17537 4368
mbed_official 376:cb4d9db17537 4369 /* Set the Capture Compare Register value */
mbed_official 376:cb4d9db17537 4370 TIMx->CCR1 = OC_Config->Pulse;
mbed_official 376:cb4d9db17537 4371
mbed_official 376:cb4d9db17537 4372 /* Write to TIMx CCER */
mbed_official 376:cb4d9db17537 4373 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4374 }
mbed_official 376:cb4d9db17537 4375
mbed_official 376:cb4d9db17537 4376 /**
mbed_official 376:cb4d9db17537 4377 * @brief Time Ouput Compare 2 configuration
mbed_official 376:cb4d9db17537 4378 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4379 * @param OC_Config: The ouput configuration structure
mbed_official 376:cb4d9db17537 4380 * @retval None
mbed_official 376:cb4d9db17537 4381 */
mbed_official 376:cb4d9db17537 4382 static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
mbed_official 376:cb4d9db17537 4383 {
mbed_official 376:cb4d9db17537 4384 uint32_t tmpccmrx = 0;
mbed_official 376:cb4d9db17537 4385 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4386 uint32_t tmpcr2 = 0;
mbed_official 376:cb4d9db17537 4387
mbed_official 376:cb4d9db17537 4388 /* Disable the Channel 2: Reset the CC2E Bit */
mbed_official 376:cb4d9db17537 4389 TIMx->CCER &= ~TIM_CCER_CC2E;
mbed_official 376:cb4d9db17537 4390
mbed_official 376:cb4d9db17537 4391 /* Get the TIMx CCER register value */
mbed_official 376:cb4d9db17537 4392 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4393 /* Get the TIMx CR2 register value */
mbed_official 376:cb4d9db17537 4394 tmpcr2 = TIMx->CR2;
mbed_official 376:cb4d9db17537 4395
mbed_official 376:cb4d9db17537 4396 /* Get the TIMx CCMR1 register value */
mbed_official 376:cb4d9db17537 4397 tmpccmrx = TIMx->CCMR1;
mbed_official 376:cb4d9db17537 4398
mbed_official 376:cb4d9db17537 4399 /* Reset the Output Compare mode and Capture/Compare selection Bits */
mbed_official 376:cb4d9db17537 4400 tmpccmrx &= ~TIM_CCMR1_OC2M;
mbed_official 376:cb4d9db17537 4401 tmpccmrx &= ~TIM_CCMR1_CC2S;
mbed_official 376:cb4d9db17537 4402
mbed_official 376:cb4d9db17537 4403 /* Select the Output Compare Mode */
mbed_official 376:cb4d9db17537 4404 tmpccmrx |= (OC_Config->OCMode << 8);
mbed_official 376:cb4d9db17537 4405
mbed_official 376:cb4d9db17537 4406 /* Reset the Output Polarity level */
mbed_official 376:cb4d9db17537 4407 tmpccer &= ~TIM_CCER_CC2P;
mbed_official 376:cb4d9db17537 4408 /* Set the Output Compare Polarity */
mbed_official 376:cb4d9db17537 4409 tmpccer |= (OC_Config->OCPolarity << 4);
mbed_official 376:cb4d9db17537 4410
mbed_official 376:cb4d9db17537 4411 /* Write to TIMx CR2 */
mbed_official 376:cb4d9db17537 4412 TIMx->CR2 = tmpcr2;
mbed_official 376:cb4d9db17537 4413
mbed_official 376:cb4d9db17537 4414 /* Write to TIMx CCMR1 */
mbed_official 376:cb4d9db17537 4415 TIMx->CCMR1 = tmpccmrx;
mbed_official 376:cb4d9db17537 4416
mbed_official 376:cb4d9db17537 4417 /* Set the Capture Compare Register value */
mbed_official 376:cb4d9db17537 4418 TIMx->CCR2 = OC_Config->Pulse;
mbed_official 376:cb4d9db17537 4419
mbed_official 376:cb4d9db17537 4420 /* Write to TIMx CCER */
mbed_official 376:cb4d9db17537 4421 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4422 }
mbed_official 376:cb4d9db17537 4423
mbed_official 376:cb4d9db17537 4424 /**
mbed_official 376:cb4d9db17537 4425 * @brief Time Ouput Compare 3 configuration
mbed_official 376:cb4d9db17537 4426 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4427 * @param OC_Config: The ouput configuration structure
mbed_official 376:cb4d9db17537 4428 * @retval None
mbed_official 376:cb4d9db17537 4429 */
mbed_official 376:cb4d9db17537 4430 static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
mbed_official 376:cb4d9db17537 4431 {
mbed_official 376:cb4d9db17537 4432 uint32_t tmpccmrx = 0;
mbed_official 376:cb4d9db17537 4433 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4434 uint32_t tmpcr2 = 0;
mbed_official 376:cb4d9db17537 4435
mbed_official 376:cb4d9db17537 4436 /* Disable the Channel 3: Reset the CC2E Bit */
mbed_official 376:cb4d9db17537 4437 TIMx->CCER &= ~TIM_CCER_CC3E;
mbed_official 376:cb4d9db17537 4438
mbed_official 376:cb4d9db17537 4439 /* Get the TIMx CCER register value */
mbed_official 376:cb4d9db17537 4440 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4441 /* Get the TIMx CR2 register value */
mbed_official 376:cb4d9db17537 4442 tmpcr2 = TIMx->CR2;
mbed_official 376:cb4d9db17537 4443
mbed_official 376:cb4d9db17537 4444 /* Get the TIMx CCMR2 register value */
mbed_official 376:cb4d9db17537 4445 tmpccmrx = TIMx->CCMR2;
mbed_official 376:cb4d9db17537 4446
mbed_official 376:cb4d9db17537 4447 /* Reset the Output Compare mode and Capture/Compare selection Bits */
mbed_official 376:cb4d9db17537 4448 tmpccmrx &= ~TIM_CCMR2_OC3M;
mbed_official 376:cb4d9db17537 4449 tmpccmrx &= ~TIM_CCMR2_CC3S;
mbed_official 376:cb4d9db17537 4450 /* Select the Output Compare Mode */
mbed_official 376:cb4d9db17537 4451 tmpccmrx |= OC_Config->OCMode;
mbed_official 376:cb4d9db17537 4452
mbed_official 376:cb4d9db17537 4453 /* Reset the Output Polarity level */
mbed_official 376:cb4d9db17537 4454 tmpccer &= ~TIM_CCER_CC3P;
mbed_official 376:cb4d9db17537 4455 /* Set the Output Compare Polarity */
mbed_official 376:cb4d9db17537 4456 tmpccer |= (OC_Config->OCPolarity << 8);
mbed_official 376:cb4d9db17537 4457
mbed_official 376:cb4d9db17537 4458 /* Write to TIMx CR2 */
mbed_official 376:cb4d9db17537 4459 TIMx->CR2 = tmpcr2;
mbed_official 376:cb4d9db17537 4460
mbed_official 376:cb4d9db17537 4461 /* Write to TIMx CCMR2 */
mbed_official 376:cb4d9db17537 4462 TIMx->CCMR2 = tmpccmrx;
mbed_official 376:cb4d9db17537 4463
mbed_official 376:cb4d9db17537 4464 /* Set the Capture Compare Register value */
mbed_official 376:cb4d9db17537 4465 TIMx->CCR3 = OC_Config->Pulse;
mbed_official 376:cb4d9db17537 4466
mbed_official 376:cb4d9db17537 4467 /* Write to TIMx CCER */
mbed_official 376:cb4d9db17537 4468 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4469 }
mbed_official 376:cb4d9db17537 4470
mbed_official 376:cb4d9db17537 4471 /**
mbed_official 376:cb4d9db17537 4472 * @brief Time Ouput Compare 4 configuration
mbed_official 376:cb4d9db17537 4473 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4474 * @param OC_Config: The ouput configuration structure
mbed_official 376:cb4d9db17537 4475 * @retval None
mbed_official 376:cb4d9db17537 4476 */
mbed_official 376:cb4d9db17537 4477 static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
mbed_official 376:cb4d9db17537 4478 {
mbed_official 376:cb4d9db17537 4479 uint32_t tmpccmrx = 0;
mbed_official 376:cb4d9db17537 4480 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4481 uint32_t tmpcr2 = 0;
mbed_official 376:cb4d9db17537 4482
mbed_official 376:cb4d9db17537 4483 /* Disable the Channel 4: Reset the CC4E Bit */
mbed_official 376:cb4d9db17537 4484 TIMx->CCER &= ~TIM_CCER_CC4E;
mbed_official 376:cb4d9db17537 4485
mbed_official 376:cb4d9db17537 4486 /* Get the TIMx CCER register value */
mbed_official 376:cb4d9db17537 4487 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4488 /* Get the TIMx CR2 register value */
mbed_official 376:cb4d9db17537 4489 tmpcr2 = TIMx->CR2;
mbed_official 376:cb4d9db17537 4490
mbed_official 376:cb4d9db17537 4491 /* Get the TIMx CCMR2 register value */
mbed_official 376:cb4d9db17537 4492 tmpccmrx = TIMx->CCMR2;
mbed_official 376:cb4d9db17537 4493
mbed_official 376:cb4d9db17537 4494 /* Reset the Output Compare mode and Capture/Compare selection Bits */
mbed_official 376:cb4d9db17537 4495 tmpccmrx &= ~TIM_CCMR2_OC4M;
mbed_official 376:cb4d9db17537 4496 tmpccmrx &= ~TIM_CCMR2_CC4S;
mbed_official 376:cb4d9db17537 4497
mbed_official 376:cb4d9db17537 4498 /* Select the Output Compare Mode */
mbed_official 376:cb4d9db17537 4499 tmpccmrx |= (OC_Config->OCMode << 8);
mbed_official 376:cb4d9db17537 4500
mbed_official 376:cb4d9db17537 4501 /* Reset the Output Polarity level */
mbed_official 376:cb4d9db17537 4502 tmpccer &= ~TIM_CCER_CC4P;
mbed_official 376:cb4d9db17537 4503 /* Set the Output Compare Polarity */
mbed_official 376:cb4d9db17537 4504 tmpccer |= (OC_Config->OCPolarity << 12);
mbed_official 376:cb4d9db17537 4505
mbed_official 376:cb4d9db17537 4506 /* Write to TIMx CR2 */
mbed_official 376:cb4d9db17537 4507 TIMx->CR2 = tmpcr2;
mbed_official 376:cb4d9db17537 4508
mbed_official 376:cb4d9db17537 4509 /* Write to TIMx CCMR2 */
mbed_official 376:cb4d9db17537 4510 TIMx->CCMR2 = tmpccmrx;
mbed_official 376:cb4d9db17537 4511
mbed_official 376:cb4d9db17537 4512 /* Set the Capture Compare Register value */
mbed_official 376:cb4d9db17537 4513 TIMx->CCR4 = OC_Config->Pulse;
mbed_official 376:cb4d9db17537 4514
mbed_official 376:cb4d9db17537 4515 /* Write to TIMx CCER */
mbed_official 376:cb4d9db17537 4516 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4517 }
mbed_official 376:cb4d9db17537 4518
mbed_official 376:cb4d9db17537 4519 /**
mbed_official 376:cb4d9db17537 4520 * @brief Configure the TI1 as Input.
mbed_official 376:cb4d9db17537 4521 * @param TIMx to select the TIM peripheral.
mbed_official 376:cb4d9db17537 4522 * @param TIM_ICPolarity : The Input Polarity.
mbed_official 376:cb4d9db17537 4523 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4524 * @arg TIM_ICPolarity_Rising
mbed_official 376:cb4d9db17537 4525 * @arg TIM_ICPolarity_Falling
mbed_official 376:cb4d9db17537 4526 * @arg TIM_ICPolarity_BothEdge
mbed_official 376:cb4d9db17537 4527 * @param TIM_ICSelection: specifies the input to be used.
mbed_official 376:cb4d9db17537 4528 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4529 * @arg TIM_ICSelection_DirectTI: TIM Input 1 is selected to be connected to IC1.
mbed_official 376:cb4d9db17537 4530 * @arg TIM_ICSelection_IndirectTI: TIM Input 1 is selected to be connected to IC2.
mbed_official 376:cb4d9db17537 4531 * @arg TIM_ICSelection_TRC: TIM Input 1 is selected to be connected to TRC.
mbed_official 376:cb4d9db17537 4532 * @param TIM_ICFilter: Specifies the Input Capture Filter.
mbed_official 376:cb4d9db17537 4533 * This parameter must be a value between 0x00 and 0x0F.
mbed_official 376:cb4d9db17537 4534 * @retval None
mbed_official 376:cb4d9db17537 4535 */
mbed_official 376:cb4d9db17537 4536 static void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
mbed_official 376:cb4d9db17537 4537 uint32_t TIM_ICFilter)
mbed_official 376:cb4d9db17537 4538 {
mbed_official 376:cb4d9db17537 4539 uint32_t tmpccmr1 = 0;
mbed_official 376:cb4d9db17537 4540 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4541
mbed_official 376:cb4d9db17537 4542 /* Disable the Channel 1: Reset the CC1E Bit */
mbed_official 376:cb4d9db17537 4543 TIMx->CCER &= ~TIM_CCER_CC1E;
mbed_official 376:cb4d9db17537 4544 tmpccmr1 = TIMx->CCMR1;
mbed_official 376:cb4d9db17537 4545 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4546
mbed_official 376:cb4d9db17537 4547 /* Select the Input */
mbed_official 376:cb4d9db17537 4548 if(IS_TIM_CC2_INSTANCE(TIMx) != RESET)
mbed_official 376:cb4d9db17537 4549 {
mbed_official 376:cb4d9db17537 4550 tmpccmr1 &= ~TIM_CCMR1_CC1S;
mbed_official 376:cb4d9db17537 4551 tmpccmr1 |= TIM_ICSelection;
mbed_official 376:cb4d9db17537 4552 }
mbed_official 376:cb4d9db17537 4553 else
mbed_official 376:cb4d9db17537 4554 {
mbed_official 376:cb4d9db17537 4555 tmpccmr1 &= ~TIM_CCMR1_CC1S;
mbed_official 376:cb4d9db17537 4556 tmpccmr1 |= TIM_CCMR1_CC1S_0;
mbed_official 376:cb4d9db17537 4557 }
mbed_official 376:cb4d9db17537 4558
mbed_official 376:cb4d9db17537 4559 /* Set the filter */
mbed_official 376:cb4d9db17537 4560 tmpccmr1 &= ~TIM_CCMR1_IC1F;
mbed_official 489:119543c9f674 4561 tmpccmr1 |= ((TIM_ICFilter << 4) & TIM_CCMR1_IC1F);
mbed_official 376:cb4d9db17537 4562
mbed_official 376:cb4d9db17537 4563 /* Select the Polarity and set the CC1E Bit */
mbed_official 376:cb4d9db17537 4564 tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);
mbed_official 489:119543c9f674 4565 tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP));
mbed_official 376:cb4d9db17537 4566
mbed_official 376:cb4d9db17537 4567 /* Write to TIMx CCMR1 and CCER registers */
mbed_official 376:cb4d9db17537 4568 TIMx->CCMR1 = tmpccmr1;
mbed_official 376:cb4d9db17537 4569 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4570 }
mbed_official 376:cb4d9db17537 4571
mbed_official 376:cb4d9db17537 4572 /**
mbed_official 376:cb4d9db17537 4573 * @brief Configure the Polarity and Filter for TI1.
mbed_official 376:cb4d9db17537 4574 * @param TIMx to select the TIM peripheral.
mbed_official 376:cb4d9db17537 4575 * @param TIM_ICPolarity : The Input Polarity.
mbed_official 376:cb4d9db17537 4576 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4577 * @arg TIM_ICPolarity_Rising
mbed_official 376:cb4d9db17537 4578 * @arg TIM_ICPolarity_Falling
mbed_official 376:cb4d9db17537 4579 * @arg TIM_ICPolarity_BothEdge
mbed_official 376:cb4d9db17537 4580 * @param TIM_ICFilter: Specifies the Input Capture Filter.
mbed_official 376:cb4d9db17537 4581 * This parameter must be a value between 0x00 and 0x0F.
mbed_official 376:cb4d9db17537 4582 * @retval None
mbed_official 376:cb4d9db17537 4583 */
mbed_official 376:cb4d9db17537 4584 static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)
mbed_official 376:cb4d9db17537 4585 {
mbed_official 376:cb4d9db17537 4586 uint32_t tmpccmr1 = 0;
mbed_official 376:cb4d9db17537 4587 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4588
mbed_official 376:cb4d9db17537 4589 /* Disable the Channel 1: Reset the CC1E Bit */
mbed_official 376:cb4d9db17537 4590 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4591 TIMx->CCER &= ~TIM_CCER_CC1E;
mbed_official 376:cb4d9db17537 4592 tmpccmr1 = TIMx->CCMR1;
mbed_official 376:cb4d9db17537 4593
mbed_official 376:cb4d9db17537 4594 /* Set the filter */
mbed_official 376:cb4d9db17537 4595 tmpccmr1 &= ~TIM_CCMR1_IC1F;
mbed_official 376:cb4d9db17537 4596 tmpccmr1 |= (TIM_ICFilter << 4);
mbed_official 376:cb4d9db17537 4597
mbed_official 376:cb4d9db17537 4598 /* Select the Polarity and set the CC1E Bit */
mbed_official 376:cb4d9db17537 4599 tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP);
mbed_official 376:cb4d9db17537 4600 tmpccer |= TIM_ICPolarity;
mbed_official 376:cb4d9db17537 4601
mbed_official 376:cb4d9db17537 4602 /* Write to TIMx CCMR1 and CCER registers */
mbed_official 376:cb4d9db17537 4603 TIMx->CCMR1 = tmpccmr1;
mbed_official 376:cb4d9db17537 4604 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4605 }
mbed_official 376:cb4d9db17537 4606
mbed_official 376:cb4d9db17537 4607 /**
mbed_official 376:cb4d9db17537 4608 * @brief Configure the TI2 as Input.
mbed_official 376:cb4d9db17537 4609 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4610 * @param TIM_ICPolarity : The Input Polarity.
mbed_official 376:cb4d9db17537 4611 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4612 * @arg TIM_ICPolarity_Rising
mbed_official 376:cb4d9db17537 4613 * @arg TIM_ICPolarity_Falling
mbed_official 376:cb4d9db17537 4614 * @arg TIM_ICPolarity_BothEdge
mbed_official 376:cb4d9db17537 4615 * @param TIM_ICSelection: specifies the input to be used.
mbed_official 376:cb4d9db17537 4616 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4617 * @arg TIM_ICSelection_DirectTI: TIM Input 2 is selected to be connected to IC2.
mbed_official 376:cb4d9db17537 4618 * @arg TIM_ICSelection_IndirectTI: TIM Input 2 is selected to be connected to IC1.
mbed_official 376:cb4d9db17537 4619 * @arg TIM_ICSelection_TRC: TIM Input 2 is selected to be connected to TRC.
mbed_official 376:cb4d9db17537 4620 * @param TIM_ICFilter: Specifies the Input Capture Filter.
mbed_official 376:cb4d9db17537 4621 * This parameter must be a value between 0x00 and 0x0F.
mbed_official 376:cb4d9db17537 4622 * @retval None
mbed_official 376:cb4d9db17537 4623 */
mbed_official 376:cb4d9db17537 4624 static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
mbed_official 376:cb4d9db17537 4625 uint32_t TIM_ICFilter)
mbed_official 376:cb4d9db17537 4626 {
mbed_official 376:cb4d9db17537 4627 uint32_t tmpccmr1 = 0;
mbed_official 376:cb4d9db17537 4628 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4629
mbed_official 376:cb4d9db17537 4630 /* Disable the Channel 2: Reset the CC2E Bit */
mbed_official 376:cb4d9db17537 4631 TIMx->CCER &= ~TIM_CCER_CC2E;
mbed_official 376:cb4d9db17537 4632 tmpccmr1 = TIMx->CCMR1;
mbed_official 376:cb4d9db17537 4633 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4634
mbed_official 376:cb4d9db17537 4635 /* Select the Input */
mbed_official 376:cb4d9db17537 4636 tmpccmr1 &= ~TIM_CCMR1_CC2S;
mbed_official 376:cb4d9db17537 4637 tmpccmr1 |= (TIM_ICSelection << 8);
mbed_official 376:cb4d9db17537 4638
mbed_official 376:cb4d9db17537 4639 /* Set the filter */
mbed_official 376:cb4d9db17537 4640 tmpccmr1 &= ~TIM_CCMR1_IC2F;
mbed_official 489:119543c9f674 4641 tmpccmr1 |= ((TIM_ICFilter << 12) & TIM_CCMR1_IC2F);
mbed_official 376:cb4d9db17537 4642
mbed_official 376:cb4d9db17537 4643 /* Select the Polarity and set the CC2E Bit */
mbed_official 376:cb4d9db17537 4644 tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);
mbed_official 489:119543c9f674 4645 tmpccer |= ((TIM_ICPolarity << 4) & (TIM_CCER_CC2P | TIM_CCER_CC2NP));
mbed_official 376:cb4d9db17537 4646
mbed_official 376:cb4d9db17537 4647 /* Write to TIMx CCMR1 and CCER registers */
mbed_official 376:cb4d9db17537 4648 TIMx->CCMR1 = tmpccmr1 ;
mbed_official 376:cb4d9db17537 4649 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4650 }
mbed_official 376:cb4d9db17537 4651
mbed_official 376:cb4d9db17537 4652 /**
mbed_official 376:cb4d9db17537 4653 * @brief Configure the Polarity and Filter for TI2.
mbed_official 376:cb4d9db17537 4654 * @param TIMx to select the TIM peripheral.
mbed_official 376:cb4d9db17537 4655 * @param TIM_ICPolarity : The Input Polarity.
mbed_official 376:cb4d9db17537 4656 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4657 * @arg TIM_ICPolarity_Rising
mbed_official 376:cb4d9db17537 4658 * @arg TIM_ICPolarity_Falling
mbed_official 376:cb4d9db17537 4659 * @arg TIM_ICPolarity_BothEdge
mbed_official 376:cb4d9db17537 4660 * @param TIM_ICFilter: Specifies the Input Capture Filter.
mbed_official 376:cb4d9db17537 4661 * This parameter must be a value between 0x00 and 0x0F.
mbed_official 376:cb4d9db17537 4662 * @retval None
mbed_official 376:cb4d9db17537 4663 */
mbed_official 376:cb4d9db17537 4664 static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter)
mbed_official 376:cb4d9db17537 4665 {
mbed_official 376:cb4d9db17537 4666 uint32_t tmpccmr1 = 0;
mbed_official 376:cb4d9db17537 4667 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4668
mbed_official 376:cb4d9db17537 4669 /* Disable the Channel 2: Reset the CC2E Bit */
mbed_official 376:cb4d9db17537 4670 TIMx->CCER &= ~TIM_CCER_CC2E;
mbed_official 376:cb4d9db17537 4671 tmpccmr1 = TIMx->CCMR1;
mbed_official 376:cb4d9db17537 4672 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4673
mbed_official 376:cb4d9db17537 4674 /* Set the filter */
mbed_official 376:cb4d9db17537 4675 tmpccmr1 &= ~TIM_CCMR1_IC2F;
mbed_official 376:cb4d9db17537 4676 tmpccmr1 |= (TIM_ICFilter << 12);
mbed_official 376:cb4d9db17537 4677
mbed_official 376:cb4d9db17537 4678 /* Select the Polarity and set the CC2E Bit */
mbed_official 376:cb4d9db17537 4679 tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);
mbed_official 376:cb4d9db17537 4680 tmpccer |= (TIM_ICPolarity << 4);
mbed_official 376:cb4d9db17537 4681
mbed_official 376:cb4d9db17537 4682 /* Write to TIMx CCMR1 and CCER registers */
mbed_official 376:cb4d9db17537 4683 TIMx->CCMR1 = tmpccmr1 ;
mbed_official 376:cb4d9db17537 4684 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4685 }
mbed_official 376:cb4d9db17537 4686
mbed_official 376:cb4d9db17537 4687 /**
mbed_official 376:cb4d9db17537 4688 * @brief Configure the TI3 as Input.
mbed_official 376:cb4d9db17537 4689 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4690 * @param TIM_ICPolarity : The Input Polarity.
mbed_official 376:cb4d9db17537 4691 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4692 * @arg TIM_ICPolarity_Rising
mbed_official 376:cb4d9db17537 4693 * @arg TIM_ICPolarity_Falling
mbed_official 376:cb4d9db17537 4694 * @arg TIM_ICPolarity_BothEdge
mbed_official 376:cb4d9db17537 4695 * @param TIM_ICSelection: specifies the input to be used.
mbed_official 376:cb4d9db17537 4696 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4697 * @arg TIM_ICSelection_DirectTI: TIM Input 3 is selected to be connected to IC3.
mbed_official 376:cb4d9db17537 4698 * @arg TIM_ICSelection_IndirectTI: TIM Input 3 is selected to be connected to IC4.
mbed_official 376:cb4d9db17537 4699 * @arg TIM_ICSelection_TRC: TIM Input 3 is selected to be connected to TRC.
mbed_official 376:cb4d9db17537 4700 * @param TIM_ICFilter: Specifies the Input Capture Filter.
mbed_official 376:cb4d9db17537 4701 * This parameter must be a value between 0x00 and 0x0F.
mbed_official 376:cb4d9db17537 4702 * @retval None
mbed_official 376:cb4d9db17537 4703 */
mbed_official 376:cb4d9db17537 4704 static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
mbed_official 376:cb4d9db17537 4705 uint32_t TIM_ICFilter)
mbed_official 376:cb4d9db17537 4706 {
mbed_official 376:cb4d9db17537 4707 uint32_t tmpccmr2 = 0;
mbed_official 376:cb4d9db17537 4708 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4709
mbed_official 376:cb4d9db17537 4710 /* Disable the Channel 3: Reset the CC3E Bit */
mbed_official 376:cb4d9db17537 4711 TIMx->CCER &= ~TIM_CCER_CC3E;
mbed_official 376:cb4d9db17537 4712 tmpccmr2 = TIMx->CCMR2;
mbed_official 376:cb4d9db17537 4713 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4714
mbed_official 376:cb4d9db17537 4715 /* Select the Input */
mbed_official 376:cb4d9db17537 4716 tmpccmr2 &= ~TIM_CCMR2_CC3S;
mbed_official 376:cb4d9db17537 4717 tmpccmr2 |= TIM_ICSelection;
mbed_official 376:cb4d9db17537 4718
mbed_official 376:cb4d9db17537 4719 /* Set the filter */
mbed_official 376:cb4d9db17537 4720 tmpccmr2 &= ~TIM_CCMR2_IC3F;
mbed_official 489:119543c9f674 4721 tmpccmr2 |= ((TIM_ICFilter << 4) & TIM_CCMR2_IC3F);
mbed_official 376:cb4d9db17537 4722
mbed_official 376:cb4d9db17537 4723 /* Select the Polarity and set the CC3E Bit */
mbed_official 376:cb4d9db17537 4724 tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP);
mbed_official 489:119543c9f674 4725 tmpccer |= ((TIM_ICPolarity << 8) & (TIM_CCER_CC3P | TIM_CCER_CC3NP));
mbed_official 376:cb4d9db17537 4726
mbed_official 376:cb4d9db17537 4727 /* Write to TIMx CCMR2 and CCER registers */
mbed_official 376:cb4d9db17537 4728 TIMx->CCMR2 = tmpccmr2;
mbed_official 376:cb4d9db17537 4729 TIMx->CCER = tmpccer;
mbed_official 376:cb4d9db17537 4730 }
mbed_official 376:cb4d9db17537 4731
mbed_official 376:cb4d9db17537 4732 /**
mbed_official 376:cb4d9db17537 4733 * @brief Configure the TI4 as Input.
mbed_official 376:cb4d9db17537 4734 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4735 * @param TIM_ICPolarity : The Input Polarity.
mbed_official 376:cb4d9db17537 4736 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4737 * @arg TIM_ICPolarity_Rising
mbed_official 376:cb4d9db17537 4738 * @arg TIM_ICPolarity_Falling
mbed_official 376:cb4d9db17537 4739 * @arg TIM_ICPolarity_BothEdge
mbed_official 376:cb4d9db17537 4740 * @param TIM_ICSelection: specifies the input to be used.
mbed_official 376:cb4d9db17537 4741 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4742 * @arg TIM_ICSelection_DirectTI: TIM Input 4 is selected to be connected to IC4.
mbed_official 376:cb4d9db17537 4743 * @arg TIM_ICSelection_IndirectTI: TIM Input 4 is selected to be connected to IC3.
mbed_official 376:cb4d9db17537 4744 * @arg TIM_ICSelection_TRC: TIM Input 4 is selected to be connected to TRC.
mbed_official 376:cb4d9db17537 4745 * @param TIM_ICFilter: Specifies the Input Capture Filter.
mbed_official 376:cb4d9db17537 4746 * This parameter must be a value between 0x00 and 0x0F.
mbed_official 376:cb4d9db17537 4747 * @retval None
mbed_official 376:cb4d9db17537 4748 */
mbed_official 376:cb4d9db17537 4749 static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection,
mbed_official 376:cb4d9db17537 4750 uint32_t TIM_ICFilter)
mbed_official 376:cb4d9db17537 4751 {
mbed_official 376:cb4d9db17537 4752 uint32_t tmpccmr2 = 0;
mbed_official 376:cb4d9db17537 4753 uint32_t tmpccer = 0;
mbed_official 376:cb4d9db17537 4754
mbed_official 376:cb4d9db17537 4755 /* Disable the Channel 4: Reset the CC4E Bit */
mbed_official 376:cb4d9db17537 4756 TIMx->CCER &= ~TIM_CCER_CC4E;
mbed_official 376:cb4d9db17537 4757 tmpccmr2 = TIMx->CCMR2;
mbed_official 376:cb4d9db17537 4758 tmpccer = TIMx->CCER;
mbed_official 376:cb4d9db17537 4759
mbed_official 376:cb4d9db17537 4760 /* Select the Input */
mbed_official 376:cb4d9db17537 4761 tmpccmr2 &= ~TIM_CCMR2_CC4S;
mbed_official 376:cb4d9db17537 4762 tmpccmr2 |= (TIM_ICSelection << 8);
mbed_official 376:cb4d9db17537 4763
mbed_official 376:cb4d9db17537 4764 /* Set the filter */
mbed_official 376:cb4d9db17537 4765 tmpccmr2 &= ~TIM_CCMR2_IC4F;
mbed_official 489:119543c9f674 4766 tmpccmr2 |= ((TIM_ICFilter << 12) & TIM_CCMR2_IC4F);
mbed_official 376:cb4d9db17537 4767
mbed_official 376:cb4d9db17537 4768 /* Select the Polarity and set the CC4E Bit */
mbed_official 376:cb4d9db17537 4769 tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP);
mbed_official 489:119543c9f674 4770 tmpccer |= ((TIM_ICPolarity << 12) & (TIM_CCER_CC4P | TIM_CCER_CC4NP));
mbed_official 376:cb4d9db17537 4771
mbed_official 376:cb4d9db17537 4772 /* Write to TIMx CCMR2 and CCER registers */
mbed_official 376:cb4d9db17537 4773 TIMx->CCMR2 = tmpccmr2;
mbed_official 376:cb4d9db17537 4774 TIMx->CCER = tmpccer ;
mbed_official 376:cb4d9db17537 4775 }
mbed_official 376:cb4d9db17537 4776
mbed_official 376:cb4d9db17537 4777 /**
mbed_official 376:cb4d9db17537 4778 * @brief Selects the Input Trigger source
mbed_official 376:cb4d9db17537 4779 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4780 * @param InputTriggerSource: The Input Trigger source.
mbed_official 376:cb4d9db17537 4781 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4782 * @arg TIM_TS_ITR0: Internal Trigger 0
mbed_official 376:cb4d9db17537 4783 * @arg TIM_TS_ITR1: Internal Trigger 1
mbed_official 376:cb4d9db17537 4784 * @arg TIM_TS_ITR2: Internal Trigger 2
mbed_official 376:cb4d9db17537 4785 * @arg TIM_TS_ITR3: Internal Trigger 3
mbed_official 376:cb4d9db17537 4786 * @arg TIM_TS_TI1F_ED: TI1 Edge Detector
mbed_official 376:cb4d9db17537 4787 * @arg TIM_TS_TI1FP1: Filtered Timer Input 1
mbed_official 376:cb4d9db17537 4788 * @arg TIM_TS_TI2FP2: Filtered Timer Input 2
mbed_official 376:cb4d9db17537 4789 * @arg TIM_TS_ETRF: External Trigger input
mbed_official 376:cb4d9db17537 4790 * @retval None
mbed_official 376:cb4d9db17537 4791 */
mbed_official 489:119543c9f674 4792 static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint16_t InputTriggerSource)
mbed_official 376:cb4d9db17537 4793 {
mbed_official 376:cb4d9db17537 4794 uint32_t tmpsmcr = 0;
mbed_official 376:cb4d9db17537 4795
mbed_official 376:cb4d9db17537 4796 /* Get the TIMx SMCR register value */
mbed_official 376:cb4d9db17537 4797 tmpsmcr = TIMx->SMCR;
mbed_official 376:cb4d9db17537 4798 /* Reset the TS Bits */
mbed_official 376:cb4d9db17537 4799 tmpsmcr &= ~TIM_SMCR_TS;
mbed_official 376:cb4d9db17537 4800 /* Set the Input Trigger source and the slave mode*/
mbed_official 489:119543c9f674 4801 tmpsmcr |= InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1;
mbed_official 376:cb4d9db17537 4802 /* Write to TIMx SMCR */
mbed_official 376:cb4d9db17537 4803 TIMx->SMCR = tmpsmcr;
mbed_official 376:cb4d9db17537 4804 }
mbed_official 376:cb4d9db17537 4805 /**
mbed_official 376:cb4d9db17537 4806 * @brief Configures the TIMx External Trigger (ETR).
mbed_official 376:cb4d9db17537 4807 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4808 * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler.
mbed_official 376:cb4d9db17537 4809 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4810 * @arg TIM_ExtTRGPSC_DIV1: ETRP Prescaler OFF.
mbed_official 376:cb4d9db17537 4811 * @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2.
mbed_official 376:cb4d9db17537 4812 * @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4.
mbed_official 376:cb4d9db17537 4813 * @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8.
mbed_official 376:cb4d9db17537 4814 * @param TIM_ExtTRGPolarity: The external Trigger Polarity.
mbed_official 376:cb4d9db17537 4815 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4816 * @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active.
mbed_official 376:cb4d9db17537 4817 * @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active.
mbed_official 376:cb4d9db17537 4818 * @param ExtTRGFilter: External Trigger Filter.
mbed_official 376:cb4d9db17537 4819 * This parameter must be a value between 0x00 and 0x0F
mbed_official 376:cb4d9db17537 4820 * @retval None
mbed_official 376:cb4d9db17537 4821 */
mbed_official 376:cb4d9db17537 4822 static void TIM_ETR_SetConfig(TIM_TypeDef* TIMx, uint32_t TIM_ExtTRGPrescaler,
mbed_official 376:cb4d9db17537 4823 uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter)
mbed_official 376:cb4d9db17537 4824 {
mbed_official 376:cb4d9db17537 4825 uint32_t tmpsmcr = 0;
mbed_official 376:cb4d9db17537 4826
mbed_official 376:cb4d9db17537 4827 tmpsmcr = TIMx->SMCR;
mbed_official 376:cb4d9db17537 4828
mbed_official 376:cb4d9db17537 4829 /* Reset the ETR Bits */
mbed_official 376:cb4d9db17537 4830 tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
mbed_official 376:cb4d9db17537 4831
mbed_official 376:cb4d9db17537 4832 /* Set the Prescaler, the Filter value and the Polarity */
mbed_official 376:cb4d9db17537 4833 tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8)));
mbed_official 376:cb4d9db17537 4834
mbed_official 376:cb4d9db17537 4835 /* Write to TIMx SMCR */
mbed_official 376:cb4d9db17537 4836 TIMx->SMCR = tmpsmcr;
mbed_official 376:cb4d9db17537 4837 }
mbed_official 376:cb4d9db17537 4838
mbed_official 376:cb4d9db17537 4839 /**
mbed_official 376:cb4d9db17537 4840 * @brief Enables or disables the TIM Capture Compare Channel x.
mbed_official 376:cb4d9db17537 4841 * @param TIMx to select the TIM peripheral
mbed_official 376:cb4d9db17537 4842 * @param Channel: specifies the TIM Channel
mbed_official 376:cb4d9db17537 4843 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 4844 * @arg TIM_Channel_1: TIM Channel 1
mbed_official 376:cb4d9db17537 4845 * @arg TIM_Channel_2: TIM Channel 2
mbed_official 376:cb4d9db17537 4846 * @arg TIM_Channel_3: TIM Channel 3
mbed_official 376:cb4d9db17537 4847 * @arg TIM_Channel_4: TIM Channel 4
mbed_official 376:cb4d9db17537 4848 * @param ChannelState: specifies the TIM Channel CCxE bit new state.
mbed_official 376:cb4d9db17537 4849 * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_Disable.
mbed_official 376:cb4d9db17537 4850 * @retval None
mbed_official 376:cb4d9db17537 4851 */
mbed_official 376:cb4d9db17537 4852 static void TIM_CCxChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelState)
mbed_official 376:cb4d9db17537 4853 {
mbed_official 376:cb4d9db17537 4854 uint32_t tmp = 0;
mbed_official 376:cb4d9db17537 4855
mbed_official 376:cb4d9db17537 4856 /* Check the parameters */
mbed_official 489:119543c9f674 4857 assert_param(IS_TIM_CCX_INSTANCE(TIMx,Channel));
mbed_official 376:cb4d9db17537 4858
mbed_official 376:cb4d9db17537 4859 tmp = TIM_CCER_CC1E << Channel;
mbed_official 376:cb4d9db17537 4860
mbed_official 376:cb4d9db17537 4861 /* Reset the CCxE Bit */
mbed_official 376:cb4d9db17537 4862 TIMx->CCER &= ~tmp;
mbed_official 376:cb4d9db17537 4863
mbed_official 376:cb4d9db17537 4864 /* Set or reset the CCxE Bit */
mbed_official 376:cb4d9db17537 4865 TIMx->CCER |= (uint32_t)(ChannelState << Channel);
mbed_official 376:cb4d9db17537 4866 }
mbed_official 489:119543c9f674 4867 /**
mbed_official 489:119543c9f674 4868 * @brief Set the slave timer configuration.
mbed_official 489:119543c9f674 4869 * @param htim : TIM handle
mbed_official 489:119543c9f674 4870 * @param sSlaveConfig: pointer to a TIM_SlaveConfigTypeDef structure that
mbed_official 489:119543c9f674 4871 * contains the selected trigger (internal trigger input, filtered
mbed_official 489:119543c9f674 4872 * timer input or external trigger input) and the ) and the Slave
mbed_official 489:119543c9f674 4873 * mode (Disable, Reset, Gated, Trigger, External clock mode 1).
mbed_official 489:119543c9f674 4874 * @retval None
mbed_official 489:119543c9f674 4875 */
mbed_official 489:119543c9f674 4876 static void TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
mbed_official 489:119543c9f674 4877 TIM_SlaveConfigTypeDef * sSlaveConfig)
mbed_official 489:119543c9f674 4878 {
mbed_official 489:119543c9f674 4879 uint32_t tmpsmcr = 0;
mbed_official 489:119543c9f674 4880 uint32_t tmpccmr1 = 0;
mbed_official 489:119543c9f674 4881 uint32_t tmpccer = 0;
mbed_official 489:119543c9f674 4882
mbed_official 489:119543c9f674 4883 /* Get the TIMx SMCR register value */
mbed_official 489:119543c9f674 4884 tmpsmcr = htim->Instance->SMCR;
mbed_official 489:119543c9f674 4885
mbed_official 489:119543c9f674 4886 /* Reset the Trigger Selection Bits */
mbed_official 489:119543c9f674 4887 tmpsmcr &= ~TIM_SMCR_TS;
mbed_official 489:119543c9f674 4888 /* Set the Input Trigger source */
mbed_official 489:119543c9f674 4889 tmpsmcr |= sSlaveConfig->InputTrigger;
mbed_official 489:119543c9f674 4890
mbed_official 489:119543c9f674 4891 /* Reset the slave mode Bits */
mbed_official 489:119543c9f674 4892 tmpsmcr &= ~TIM_SMCR_SMS;
mbed_official 489:119543c9f674 4893 /* Set the slave mode */
mbed_official 489:119543c9f674 4894 tmpsmcr |= sSlaveConfig->SlaveMode;
mbed_official 489:119543c9f674 4895
mbed_official 489:119543c9f674 4896 /* Write to TIMx SMCR */
mbed_official 489:119543c9f674 4897 htim->Instance->SMCR = tmpsmcr;
mbed_official 489:119543c9f674 4898
mbed_official 489:119543c9f674 4899 /* Configure the trigger prescaler, filter, and polarity */
mbed_official 489:119543c9f674 4900 switch (sSlaveConfig->InputTrigger)
mbed_official 489:119543c9f674 4901 {
mbed_official 489:119543c9f674 4902 case TIM_TS_ETRF:
mbed_official 489:119543c9f674 4903 {
mbed_official 489:119543c9f674 4904 /* Check the parameters */
mbed_official 489:119543c9f674 4905 assert_param(IS_TIM_ETR_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4906 assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler));
mbed_official 489:119543c9f674 4907 assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));
mbed_official 489:119543c9f674 4908 assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
mbed_official 489:119543c9f674 4909 /* Configure the ETR Trigger source */
mbed_official 489:119543c9f674 4910 TIM_ETR_SetConfig(htim->Instance,
mbed_official 489:119543c9f674 4911 sSlaveConfig->TriggerPrescaler,
mbed_official 489:119543c9f674 4912 sSlaveConfig->TriggerPolarity,
mbed_official 489:119543c9f674 4913 sSlaveConfig->TriggerFilter);
mbed_official 489:119543c9f674 4914 }
mbed_official 489:119543c9f674 4915 break;
mbed_official 489:119543c9f674 4916
mbed_official 489:119543c9f674 4917 case TIM_TS_TI1F_ED:
mbed_official 489:119543c9f674 4918 {
mbed_official 489:119543c9f674 4919 /* Check the parameters */
mbed_official 489:119543c9f674 4920 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4921 assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
mbed_official 489:119543c9f674 4922
mbed_official 489:119543c9f674 4923 /* Disable the Channel 1: Reset the CC1E Bit */
mbed_official 489:119543c9f674 4924 tmpccer = htim->Instance->CCER;
mbed_official 489:119543c9f674 4925 htim->Instance->CCER &= ~TIM_CCER_CC1E;
mbed_official 489:119543c9f674 4926 tmpccmr1 = htim->Instance->CCMR1;
mbed_official 489:119543c9f674 4927
mbed_official 489:119543c9f674 4928 /* Set the filter */
mbed_official 489:119543c9f674 4929 tmpccmr1 &= ~TIM_CCMR1_IC1F;
mbed_official 489:119543c9f674 4930 tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4);
mbed_official 489:119543c9f674 4931
mbed_official 489:119543c9f674 4932 /* Write to TIMx CCMR1 and CCER registers */
mbed_official 489:119543c9f674 4933 htim->Instance->CCMR1 = tmpccmr1;
mbed_official 489:119543c9f674 4934 htim->Instance->CCER = tmpccer;
mbed_official 489:119543c9f674 4935
mbed_official 489:119543c9f674 4936 }
mbed_official 489:119543c9f674 4937 break;
mbed_official 489:119543c9f674 4938
mbed_official 489:119543c9f674 4939 case TIM_TS_TI1FP1:
mbed_official 489:119543c9f674 4940 {
mbed_official 489:119543c9f674 4941 /* Check the parameters */
mbed_official 489:119543c9f674 4942 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4943 assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));
mbed_official 489:119543c9f674 4944 assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
mbed_official 489:119543c9f674 4945
mbed_official 489:119543c9f674 4946 /* Configure TI1 Filter and Polarity */
mbed_official 489:119543c9f674 4947 TIM_TI1_ConfigInputStage(htim->Instance,
mbed_official 489:119543c9f674 4948 sSlaveConfig->TriggerPolarity,
mbed_official 489:119543c9f674 4949 sSlaveConfig->TriggerFilter);
mbed_official 489:119543c9f674 4950 }
mbed_official 489:119543c9f674 4951 break;
mbed_official 489:119543c9f674 4952
mbed_official 489:119543c9f674 4953 case TIM_TS_TI2FP2:
mbed_official 489:119543c9f674 4954 {
mbed_official 489:119543c9f674 4955 /* Check the parameters */
mbed_official 489:119543c9f674 4956 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4957 assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity));
mbed_official 489:119543c9f674 4958 assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter));
mbed_official 489:119543c9f674 4959
mbed_official 489:119543c9f674 4960 /* Configure TI2 Filter and Polarity */
mbed_official 489:119543c9f674 4961 TIM_TI2_ConfigInputStage(htim->Instance,
mbed_official 489:119543c9f674 4962 sSlaveConfig->TriggerPolarity,
mbed_official 489:119543c9f674 4963 sSlaveConfig->TriggerFilter);
mbed_official 489:119543c9f674 4964 }
mbed_official 489:119543c9f674 4965 break;
mbed_official 489:119543c9f674 4966
mbed_official 489:119543c9f674 4967 case TIM_TS_ITR0:
mbed_official 489:119543c9f674 4968 {
mbed_official 489:119543c9f674 4969 /* Check the parameter */
mbed_official 489:119543c9f674 4970 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4971 }
mbed_official 489:119543c9f674 4972 break;
mbed_official 489:119543c9f674 4973
mbed_official 489:119543c9f674 4974 case TIM_TS_ITR1:
mbed_official 489:119543c9f674 4975 {
mbed_official 489:119543c9f674 4976 /* Check the parameter */
mbed_official 489:119543c9f674 4977 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4978 }
mbed_official 489:119543c9f674 4979 break;
mbed_official 489:119543c9f674 4980
mbed_official 489:119543c9f674 4981 case TIM_TS_ITR2:
mbed_official 489:119543c9f674 4982 {
mbed_official 489:119543c9f674 4983 /* Check the parameter */
mbed_official 489:119543c9f674 4984 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4985 }
mbed_official 489:119543c9f674 4986 break;
mbed_official 489:119543c9f674 4987
mbed_official 489:119543c9f674 4988 case TIM_TS_ITR3:
mbed_official 489:119543c9f674 4989 {
mbed_official 489:119543c9f674 4990 /* Check the parameter */
mbed_official 489:119543c9f674 4991 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 489:119543c9f674 4992 }
mbed_official 489:119543c9f674 4993 break;
mbed_official 489:119543c9f674 4994
mbed_official 489:119543c9f674 4995 default:
mbed_official 489:119543c9f674 4996 break;
mbed_official 489:119543c9f674 4997 }
mbed_official 489:119543c9f674 4998 }
mbed_official 489:119543c9f674 4999
mbed_official 489:119543c9f674 5000 /**
mbed_official 489:119543c9f674 5001 * @}
mbed_official 489:119543c9f674 5002 */
mbed_official 489:119543c9f674 5003
mbed_official 489:119543c9f674 5004 /**
mbed_official 489:119543c9f674 5005 * @}
mbed_official 489:119543c9f674 5006 */
mbed_official 376:cb4d9db17537 5007
mbed_official 376:cb4d9db17537 5008 /**
mbed_official 376:cb4d9db17537 5009 * @}
mbed_official 376:cb4d9db17537 5010 */
mbed_official 376:cb4d9db17537 5011
mbed_official 376:cb4d9db17537 5012 #endif /* HAL_TIM_MODULE_ENABLED */
mbed_official 376:cb4d9db17537 5013 /**
mbed_official 376:cb4d9db17537 5014 * @}
mbed_official 376:cb4d9db17537 5015 */
mbed_official 376:cb4d9db17537 5016
mbed_official 376:cb4d9db17537 5017 /**
mbed_official 376:cb4d9db17537 5018 * @}
mbed_official 376:cb4d9db17537 5019 */
mbed_official 376:cb4d9db17537 5020 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 489:119543c9f674 5021