mbed library sources, include can_api for nucleo-f091rc

Dependents:   CanNucleoF0_example

Fork of mbed-src by mbed official

Committer:
ptpaterson
Date:
Thu Jan 07 05:49:05 2016 +0000
Revision:
645:13c87cbecd54
Parent:
610:813dcc80987e
corrected freeze on CAN_RECEIVE_IT

Who changed what in which revision?

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