mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

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

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

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

Import librarymbed

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

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
394:83f921546702
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

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

Initial version of drivers for SAMR21

Who changed what in which revision?

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