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:
441:d2c15dda23c1
Child:
630:825f75ca301e
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 340:28d1f895c6fe 1 /**
mbed_official 340:28d1f895c6fe 2 ******************************************************************************
mbed_official 340:28d1f895c6fe 3 * @file stm32f0xx_hal_tim_ex.c
mbed_official 340:28d1f895c6fe 4 * @author MCD Application Team
mbed_official 441:d2c15dda23c1 5 * @version V1.2.0
mbed_official 441:d2c15dda23c1 6 * @date 11-December-2014
mbed_official 340:28d1f895c6fe 7 * @brief TIM HAL module driver.
mbed_official 340:28d1f895c6fe 8 * This file provides firmware functions to manage the following
mbed_official 340:28d1f895c6fe 9 * functionalities of the Timer Extended peripheral:
mbed_official 340:28d1f895c6fe 10 * + Time Hall Sensor Interface Initialization
mbed_official 340:28d1f895c6fe 11 * + Time Hall Sensor Interface Start
mbed_official 340:28d1f895c6fe 12 * + Time Complementary signal bread and dead time configuration
mbed_official 340:28d1f895c6fe 13 * + Time Master and Slave synchronization configuration
mbed_official 340:28d1f895c6fe 14 * + Timer remapping capabilities configuration
mbed_official 340:28d1f895c6fe 15 @verbatim
mbed_official 340:28d1f895c6fe 16 ==============================================================================
mbed_official 340:28d1f895c6fe 17 ##### TIMER Extended features #####
mbed_official 340:28d1f895c6fe 18 ==============================================================================
mbed_official 340:28d1f895c6fe 19 [..]
mbed_official 340:28d1f895c6fe 20 The Timer Extended features include:
mbed_official 340:28d1f895c6fe 21 (#) Complementary outputs with programmable dead-time for :
mbed_official 340:28d1f895c6fe 22 (++) Output Compare
mbed_official 340:28d1f895c6fe 23 (++) PWM generation (Edge and Center-aligned Mode)
mbed_official 340:28d1f895c6fe 24 (++) One-pulse mode output
mbed_official 340:28d1f895c6fe 25 (#) Synchronization circuit to control the timer with external signals and to
mbed_official 340:28d1f895c6fe 26 interconnect several timers together.
mbed_official 340:28d1f895c6fe 27 (#) Break input to put the timer output signals in reset state or in a known state.
mbed_official 340:28d1f895c6fe 28 (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for
mbed_official 340:28d1f895c6fe 29 positioning purposes
mbed_official 340:28d1f895c6fe 30
mbed_official 340:28d1f895c6fe 31 ##### How to use this driver #####
mbed_official 340:28d1f895c6fe 32 ==============================================================================
mbed_official 340:28d1f895c6fe 33 [..]
mbed_official 340:28d1f895c6fe 34 (#) Initialize the TIM low level resources by implementing the following functions
mbed_official 340:28d1f895c6fe 35 depending from feature used :
mbed_official 340:28d1f895c6fe 36 (++) Complementary Output Compare : HAL_TIM_OC_MspInit()
mbed_official 340:28d1f895c6fe 37 (++) Complementary PWM generation : HAL_TIM_PWM_MspInit()
mbed_official 340:28d1f895c6fe 38 (++) Complementary One-pulse mode output : HAL_TIM_OnePulse_MspInit()
mbed_official 340:28d1f895c6fe 39 (++) Hall Sensor output : HAL_TIM_HallSensor_MspInit()
mbed_official 340:28d1f895c6fe 40
mbed_official 340:28d1f895c6fe 41 (#) Initialize the TIM low level resources :
mbed_official 340:28d1f895c6fe 42 (##) Enable the TIM interface clock using __TIMx_CLK_ENABLE();
mbed_official 340:28d1f895c6fe 43 (##) TIM pins configuration
mbed_official 340:28d1f895c6fe 44 (+++) Enable the clock for the TIM GPIOs using the following function:
mbed_official 340:28d1f895c6fe 45 __GPIOx_CLK_ENABLE();
mbed_official 340:28d1f895c6fe 46 (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();
mbed_official 340:28d1f895c6fe 47
mbed_official 340:28d1f895c6fe 48 (#) The external Clock can be configured, if needed (the default clock is the
mbed_official 340:28d1f895c6fe 49 internal clock from the APBx), using the following function:
mbed_official 340:28d1f895c6fe 50 HAL_TIM_ConfigClockSource, the clock configuration should be done before
mbed_official 340:28d1f895c6fe 51 any start function.
mbed_official 340:28d1f895c6fe 52
mbed_official 340:28d1f895c6fe 53 (#) Configure the TIM in the desired functioning mode using one of the
mbed_official 340:28d1f895c6fe 54 initialization function of this driver:
mbed_official 340:28d1f895c6fe 55 (++) HAL_TIMEx_HallSensor_Init and HAL_TIMEx_ConfigCommutationEvent: to use the
mbed_official 340:28d1f895c6fe 56 Timer Hall Sensor Interface and the commutation event with the corresponding
mbed_official 340:28d1f895c6fe 57 Interrupt and DMA request if needed (Note that One Timer is used to interface
mbed_official 340:28d1f895c6fe 58 with the Hall sensor Interface and another Timer should be used to use
mbed_official 340:28d1f895c6fe 59 the commutation event).
mbed_official 340:28d1f895c6fe 60
mbed_official 340:28d1f895c6fe 61 (#) Activate the TIM peripheral using one of the start functions:
mbed_official 340:28d1f895c6fe 62 (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), HAL_TIMEx_OCN_Start_IT()
mbed_official 340:28d1f895c6fe 63 (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), HAL_TIMEx_PWMN_Start_IT()
mbed_official 340:28d1f895c6fe 64 (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT()
mbed_official 340:28d1f895c6fe 65 (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(), HAL_TIMEx_HallSensor_Start_IT().
mbed_official 340:28d1f895c6fe 66
mbed_official 340:28d1f895c6fe 67
mbed_official 340:28d1f895c6fe 68 @endverbatim
mbed_official 340:28d1f895c6fe 69 ******************************************************************************
mbed_official 340:28d1f895c6fe 70 * @attention
mbed_official 340:28d1f895c6fe 71 *
mbed_official 340:28d1f895c6fe 72 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 340:28d1f895c6fe 73 *
mbed_official 340:28d1f895c6fe 74 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 340:28d1f895c6fe 75 * are permitted provided that the following conditions are met:
mbed_official 340:28d1f895c6fe 76 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 340:28d1f895c6fe 77 * this list of conditions and the following disclaimer.
mbed_official 340:28d1f895c6fe 78 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 340:28d1f895c6fe 79 * this list of conditions and the following disclaimer in the documentation
mbed_official 340:28d1f895c6fe 80 * and/or other materials provided with the distribution.
mbed_official 340:28d1f895c6fe 81 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 340:28d1f895c6fe 82 * may be used to endorse or promote products derived from this software
mbed_official 340:28d1f895c6fe 83 * without specific prior written permission.
mbed_official 340:28d1f895c6fe 84 *
mbed_official 340:28d1f895c6fe 85 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 340:28d1f895c6fe 86 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 340:28d1f895c6fe 87 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 340:28d1f895c6fe 88 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 340:28d1f895c6fe 89 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 340:28d1f895c6fe 90 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 340:28d1f895c6fe 91 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 340:28d1f895c6fe 92 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 340:28d1f895c6fe 93 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 340:28d1f895c6fe 94 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 340:28d1f895c6fe 95 *
mbed_official 340:28d1f895c6fe 96 ******************************************************************************
mbed_official 340:28d1f895c6fe 97 */
mbed_official 340:28d1f895c6fe 98
mbed_official 340:28d1f895c6fe 99 /* Includes ------------------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 100 #include "stm32f0xx_hal.h"
mbed_official 340:28d1f895c6fe 101
mbed_official 340:28d1f895c6fe 102 /** @addtogroup STM32F0xx_HAL_Driver
mbed_official 340:28d1f895c6fe 103 * @{
mbed_official 340:28d1f895c6fe 104 */
mbed_official 340:28d1f895c6fe 105
mbed_official 340:28d1f895c6fe 106 /** @defgroup TIMEx TIMEx Extended HAL module driver
mbed_official 340:28d1f895c6fe 107 * @brief TIM Extended HAL module driver
mbed_official 340:28d1f895c6fe 108 * @{
mbed_official 340:28d1f895c6fe 109 */
mbed_official 340:28d1f895c6fe 110
mbed_official 340:28d1f895c6fe 111 #ifdef HAL_TIM_MODULE_ENABLED
mbed_official 340:28d1f895c6fe 112
mbed_official 340:28d1f895c6fe 113 /* Private typedef -----------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 114 /* Private define ------------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 115 /* Private macro -------------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 116 /* Private variables ---------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 117 /* Private function prototypes -----------------------------------------------*/
mbed_official 340:28d1f895c6fe 118
mbed_official 340:28d1f895c6fe 119 /** @defgroup TIMEx_Private_Functions TIMEx Private Functions
mbed_official 340:28d1f895c6fe 120 * @{
mbed_official 340:28d1f895c6fe 121 */
mbed_official 340:28d1f895c6fe 122 static void TIM_CCxNChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelNState);
mbed_official 340:28d1f895c6fe 123 /**
mbed_official 340:28d1f895c6fe 124 * @}
mbed_official 340:28d1f895c6fe 125 */
mbed_official 340:28d1f895c6fe 126
mbed_official 340:28d1f895c6fe 127 /* Exported functions ---------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 128
mbed_official 340:28d1f895c6fe 129 /** @defgroup TIMEx_Exported_Functions TIMEx Exported Functions
mbed_official 340:28d1f895c6fe 130 * @{
mbed_official 340:28d1f895c6fe 131 */
mbed_official 340:28d1f895c6fe 132
mbed_official 340:28d1f895c6fe 133 /** @defgroup TIMEx_Exported_Functions_Group1 Timer Hall Sensor functions
mbed_official 340:28d1f895c6fe 134 * @brief Timer Hall Sensor functions
mbed_official 340:28d1f895c6fe 135 *
mbed_official 340:28d1f895c6fe 136 @verbatim
mbed_official 340:28d1f895c6fe 137 ==============================================================================
mbed_official 340:28d1f895c6fe 138 ##### Timer Hall Sensor functions #####
mbed_official 340:28d1f895c6fe 139 ==============================================================================
mbed_official 340:28d1f895c6fe 140 [..]
mbed_official 340:28d1f895c6fe 141 This section provides functions allowing to:
mbed_official 340:28d1f895c6fe 142 (+) Initialize and configure TIM HAL Sensor.
mbed_official 340:28d1f895c6fe 143 (+) De-initialize TIM HAL Sensor.
mbed_official 340:28d1f895c6fe 144 (+) Start the Hall Sensor Interface.
mbed_official 340:28d1f895c6fe 145 (+) Stop the Hall Sensor Interface.
mbed_official 340:28d1f895c6fe 146 (+) Start the Hall Sensor Interface and enable interrupts.
mbed_official 340:28d1f895c6fe 147 (+) Stop the Hall Sensor Interface and disable interrupts.
mbed_official 340:28d1f895c6fe 148 (+) Start the Hall Sensor Interface and enable DMA transfers.
mbed_official 340:28d1f895c6fe 149 (+) Stop the Hall Sensor Interface and disable DMA transfers.
mbed_official 340:28d1f895c6fe 150
mbed_official 340:28d1f895c6fe 151 @endverbatim
mbed_official 340:28d1f895c6fe 152 * @{
mbed_official 340:28d1f895c6fe 153 */
mbed_official 340:28d1f895c6fe 154 /**
mbed_official 340:28d1f895c6fe 155 * @brief Initializes the TIM Hall Sensor Interface and create the associated handle.
mbed_official 340:28d1f895c6fe 156 * @param htim : TIM Encoder Interface handle
mbed_official 340:28d1f895c6fe 157 * @param sConfig : TIM Hall Sensor configuration structure
mbed_official 340:28d1f895c6fe 158 * @retval HAL status
mbed_official 340:28d1f895c6fe 159 */
mbed_official 340:28d1f895c6fe 160 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef* sConfig)
mbed_official 340:28d1f895c6fe 161 {
mbed_official 340:28d1f895c6fe 162 TIM_OC_InitTypeDef OC_Config;
mbed_official 340:28d1f895c6fe 163
mbed_official 340:28d1f895c6fe 164 /* Check the TIM handle allocation */
mbed_official 441:d2c15dda23c1 165 if(htim == NULL)
mbed_official 340:28d1f895c6fe 166 {
mbed_official 340:28d1f895c6fe 167 return HAL_ERROR;
mbed_official 340:28d1f895c6fe 168 }
mbed_official 340:28d1f895c6fe 169
mbed_official 340:28d1f895c6fe 170 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 171 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
mbed_official 340:28d1f895c6fe 172 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
mbed_official 340:28d1f895c6fe 173 assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
mbed_official 340:28d1f895c6fe 174 assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
mbed_official 340:28d1f895c6fe 175 assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
mbed_official 340:28d1f895c6fe 176
mbed_official 340:28d1f895c6fe 177 /* Set the TIM state */
mbed_official 340:28d1f895c6fe 178 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 340:28d1f895c6fe 179
mbed_official 340:28d1f895c6fe 180 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
mbed_official 340:28d1f895c6fe 181 HAL_TIMEx_HallSensor_MspInit(htim);
mbed_official 340:28d1f895c6fe 182
mbed_official 340:28d1f895c6fe 183 /* Configure the Time base in the Encoder Mode */
mbed_official 340:28d1f895c6fe 184 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 340:28d1f895c6fe 185
mbed_official 340:28d1f895c6fe 186 /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the Hall sensor */
mbed_official 340:28d1f895c6fe 187 TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter);
mbed_official 340:28d1f895c6fe 188
mbed_official 340:28d1f895c6fe 189 /* Reset the IC1PSC Bits */
mbed_official 340:28d1f895c6fe 190 htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
mbed_official 340:28d1f895c6fe 191 /* Set the IC1PSC value */
mbed_official 340:28d1f895c6fe 192 htim->Instance->CCMR1 |= sConfig->IC1Prescaler;
mbed_official 340:28d1f895c6fe 193
mbed_official 340:28d1f895c6fe 194 /* Enable the Hall sensor interface (XOR function of the three inputs) */
mbed_official 340:28d1f895c6fe 195 htim->Instance->CR2 |= TIM_CR2_TI1S;
mbed_official 340:28d1f895c6fe 196
mbed_official 340:28d1f895c6fe 197 /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */
mbed_official 340:28d1f895c6fe 198 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 340:28d1f895c6fe 199 htim->Instance->SMCR |= TIM_TS_TI1F_ED;
mbed_official 340:28d1f895c6fe 200
mbed_official 340:28d1f895c6fe 201 /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */
mbed_official 340:28d1f895c6fe 202 htim->Instance->SMCR &= ~TIM_SMCR_SMS;
mbed_official 340:28d1f895c6fe 203 htim->Instance->SMCR |= TIM_SLAVEMODE_RESET;
mbed_official 340:28d1f895c6fe 204
mbed_official 340:28d1f895c6fe 205 /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/
mbed_official 340:28d1f895c6fe 206 OC_Config.OCFastMode = TIM_OCFAST_DISABLE;
mbed_official 340:28d1f895c6fe 207 OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET;
mbed_official 340:28d1f895c6fe 208 OC_Config.OCMode = TIM_OCMODE_PWM2;
mbed_official 340:28d1f895c6fe 209 OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET;
mbed_official 340:28d1f895c6fe 210 OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH;
mbed_official 340:28d1f895c6fe 211 OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH;
mbed_official 340:28d1f895c6fe 212 OC_Config.Pulse = sConfig->Commutation_Delay;
mbed_official 340:28d1f895c6fe 213
mbed_official 340:28d1f895c6fe 214 TIM_OC2_SetConfig(htim->Instance, &OC_Config);
mbed_official 340:28d1f895c6fe 215
mbed_official 340:28d1f895c6fe 216 /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2
mbed_official 340:28d1f895c6fe 217 register to 101 */
mbed_official 340:28d1f895c6fe 218 htim->Instance->CR2 &= ~TIM_CR2_MMS;
mbed_official 340:28d1f895c6fe 219 htim->Instance->CR2 |= TIM_TRGO_OC2REF;
mbed_official 340:28d1f895c6fe 220
mbed_official 340:28d1f895c6fe 221 /* Initialize the TIM state*/
mbed_official 340:28d1f895c6fe 222 htim->State= HAL_TIM_STATE_READY;
mbed_official 340:28d1f895c6fe 223
mbed_official 340:28d1f895c6fe 224 return HAL_OK;
mbed_official 340:28d1f895c6fe 225 }
mbed_official 340:28d1f895c6fe 226
mbed_official 340:28d1f895c6fe 227 /**
mbed_official 340:28d1f895c6fe 228 * @brief DeInitializes the TIM Hall Sensor interface
mbed_official 340:28d1f895c6fe 229 * @param htim : TIM Hall Sensor handle
mbed_official 340:28d1f895c6fe 230 * @retval HAL status
mbed_official 340:28d1f895c6fe 231 */
mbed_official 340:28d1f895c6fe 232 HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 233 {
mbed_official 340:28d1f895c6fe 234 /* Check the parameters */
mbed_official 340:28d1f895c6fe 235 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 236
mbed_official 340:28d1f895c6fe 237 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 340:28d1f895c6fe 238
mbed_official 340:28d1f895c6fe 239 /* Disable the TIM Peripheral Clock */
mbed_official 340:28d1f895c6fe 240 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 241
mbed_official 340:28d1f895c6fe 242 /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
mbed_official 340:28d1f895c6fe 243 HAL_TIMEx_HallSensor_MspDeInit(htim);
mbed_official 340:28d1f895c6fe 244
mbed_official 340:28d1f895c6fe 245 /* Change TIM state */
mbed_official 340:28d1f895c6fe 246 htim->State = HAL_TIM_STATE_RESET;
mbed_official 340:28d1f895c6fe 247
mbed_official 340:28d1f895c6fe 248 /* Release Lock */
mbed_official 340:28d1f895c6fe 249 __HAL_UNLOCK(htim);
mbed_official 340:28d1f895c6fe 250
mbed_official 340:28d1f895c6fe 251 return HAL_OK;
mbed_official 340:28d1f895c6fe 252 }
mbed_official 340:28d1f895c6fe 253
mbed_official 340:28d1f895c6fe 254 /**
mbed_official 340:28d1f895c6fe 255 * @brief Initializes the TIM Hall Sensor MSP.
mbed_official 340:28d1f895c6fe 256 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 257 * @retval None
mbed_official 340:28d1f895c6fe 258 */
mbed_official 340:28d1f895c6fe 259 __weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 260 {
mbed_official 340:28d1f895c6fe 261 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 340:28d1f895c6fe 262 the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file
mbed_official 340:28d1f895c6fe 263 */
mbed_official 340:28d1f895c6fe 264 }
mbed_official 340:28d1f895c6fe 265
mbed_official 340:28d1f895c6fe 266 /**
mbed_official 340:28d1f895c6fe 267 * @brief DeInitializes TIM Hall Sensor MSP.
mbed_official 340:28d1f895c6fe 268 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 269 * @retval None
mbed_official 340:28d1f895c6fe 270 */
mbed_official 340:28d1f895c6fe 271 __weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 272 {
mbed_official 340:28d1f895c6fe 273 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 340:28d1f895c6fe 274 the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file
mbed_official 340:28d1f895c6fe 275 */
mbed_official 340:28d1f895c6fe 276 }
mbed_official 340:28d1f895c6fe 277
mbed_official 340:28d1f895c6fe 278 /**
mbed_official 340:28d1f895c6fe 279 * @brief Starts the TIM Hall Sensor Interface.
mbed_official 340:28d1f895c6fe 280 * @param htim : TIM Hall Sensor handle
mbed_official 340:28d1f895c6fe 281 * @retval HAL status
mbed_official 340:28d1f895c6fe 282 */
mbed_official 340:28d1f895c6fe 283 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 284 {
mbed_official 340:28d1f895c6fe 285 /* Check the parameters */
mbed_official 340:28d1f895c6fe 286 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 287
mbed_official 340:28d1f895c6fe 288 /* Enable the Input Capture channels 1
mbed_official 340:28d1f895c6fe 289 (in the Hall Sensor Interface the Three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
mbed_official 340:28d1f895c6fe 290 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 340:28d1f895c6fe 291
mbed_official 340:28d1f895c6fe 292 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 293 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 294
mbed_official 340:28d1f895c6fe 295 /* Return function status */
mbed_official 340:28d1f895c6fe 296 return HAL_OK;
mbed_official 340:28d1f895c6fe 297 }
mbed_official 340:28d1f895c6fe 298
mbed_official 340:28d1f895c6fe 299 /**
mbed_official 340:28d1f895c6fe 300 * @brief Stops the TIM Hall sensor Interface.
mbed_official 340:28d1f895c6fe 301 * @param htim : TIM Hall Sensor handle
mbed_official 340:28d1f895c6fe 302 * @retval HAL status
mbed_official 340:28d1f895c6fe 303 */
mbed_official 340:28d1f895c6fe 304 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 305 {
mbed_official 340:28d1f895c6fe 306 /* Check the parameters */
mbed_official 340:28d1f895c6fe 307 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 308
mbed_official 340:28d1f895c6fe 309 /* Disable the Input Capture channels 1, 2 and 3
mbed_official 340:28d1f895c6fe 310 (in the Hall Sensor Interface the Three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
mbed_official 340:28d1f895c6fe 311 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 340:28d1f895c6fe 312
mbed_official 340:28d1f895c6fe 313 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 314 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 315
mbed_official 340:28d1f895c6fe 316 /* Return function status */
mbed_official 340:28d1f895c6fe 317 return HAL_OK;
mbed_official 340:28d1f895c6fe 318 }
mbed_official 340:28d1f895c6fe 319
mbed_official 340:28d1f895c6fe 320 /**
mbed_official 340:28d1f895c6fe 321 * @brief Starts the TIM Hall Sensor Interface in interrupt mode.
mbed_official 340:28d1f895c6fe 322 * @param htim : TIM Hall Sensor handle
mbed_official 340:28d1f895c6fe 323 * @retval HAL status
mbed_official 340:28d1f895c6fe 324 */
mbed_official 340:28d1f895c6fe 325 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 326 {
mbed_official 340:28d1f895c6fe 327 /* Check the parameters */
mbed_official 340:28d1f895c6fe 328 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 329
mbed_official 340:28d1f895c6fe 330 /* Enable the capture compare Interrupts 1 event */
mbed_official 340:28d1f895c6fe 331 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 332
mbed_official 340:28d1f895c6fe 333 /* Enable the Input Capture channels 1
mbed_official 340:28d1f895c6fe 334 (in the Hall Sensor Interface the Three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
mbed_official 340:28d1f895c6fe 335 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 340:28d1f895c6fe 336
mbed_official 340:28d1f895c6fe 337 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 338 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 339
mbed_official 340:28d1f895c6fe 340 /* Return function status */
mbed_official 340:28d1f895c6fe 341 return HAL_OK;
mbed_official 340:28d1f895c6fe 342 }
mbed_official 340:28d1f895c6fe 343
mbed_official 340:28d1f895c6fe 344 /**
mbed_official 340:28d1f895c6fe 345 * @brief Stops the TIM Hall Sensor Interface in interrupt mode.
mbed_official 340:28d1f895c6fe 346 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 347 * @retval HAL status
mbed_official 340:28d1f895c6fe 348 */
mbed_official 340:28d1f895c6fe 349 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 350 {
mbed_official 340:28d1f895c6fe 351 /* Check the parameters */
mbed_official 340:28d1f895c6fe 352 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 353
mbed_official 340:28d1f895c6fe 354 /* Disable the Input Capture channels 1
mbed_official 340:28d1f895c6fe 355 (in the Hall Sensor Interface the Three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
mbed_official 340:28d1f895c6fe 356 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 340:28d1f895c6fe 357
mbed_official 340:28d1f895c6fe 358 /* Disable the capture compare Interrupts event */
mbed_official 340:28d1f895c6fe 359 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 360
mbed_official 340:28d1f895c6fe 361 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 362 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 363
mbed_official 340:28d1f895c6fe 364 /* Return function status */
mbed_official 340:28d1f895c6fe 365 return HAL_OK;
mbed_official 340:28d1f895c6fe 366 }
mbed_official 340:28d1f895c6fe 367
mbed_official 340:28d1f895c6fe 368 /**
mbed_official 340:28d1f895c6fe 369 * @brief Starts the TIM Hall Sensor Interface in DMA mode.
mbed_official 340:28d1f895c6fe 370 * @param htim : TIM Hall Sensor handle
mbed_official 340:28d1f895c6fe 371 * @param pData : The destination Buffer address.
mbed_official 340:28d1f895c6fe 372 * @param Length : The length of data to be transferred from TIM peripheral to memory.
mbed_official 340:28d1f895c6fe 373 * @retval HAL status
mbed_official 340:28d1f895c6fe 374 */
mbed_official 340:28d1f895c6fe 375 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)
mbed_official 340:28d1f895c6fe 376 {
mbed_official 340:28d1f895c6fe 377 /* Check the parameters */
mbed_official 340:28d1f895c6fe 378 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 379
mbed_official 340:28d1f895c6fe 380 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 340:28d1f895c6fe 381 {
mbed_official 340:28d1f895c6fe 382 return HAL_BUSY;
mbed_official 340:28d1f895c6fe 383 }
mbed_official 340:28d1f895c6fe 384 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 340:28d1f895c6fe 385 {
mbed_official 340:28d1f895c6fe 386 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 340:28d1f895c6fe 387 {
mbed_official 340:28d1f895c6fe 388 return HAL_ERROR;
mbed_official 340:28d1f895c6fe 389 }
mbed_official 340:28d1f895c6fe 390 else
mbed_official 340:28d1f895c6fe 391 {
mbed_official 340:28d1f895c6fe 392 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 340:28d1f895c6fe 393 }
mbed_official 340:28d1f895c6fe 394 }
mbed_official 340:28d1f895c6fe 395 /* Enable the Input Capture channels 1
mbed_official 340:28d1f895c6fe 396 (in the Hall Sensor Interface the Three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
mbed_official 340:28d1f895c6fe 397 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 340:28d1f895c6fe 398
mbed_official 340:28d1f895c6fe 399 /* Set the DMA Input Capture 1 Callback */
mbed_official 340:28d1f895c6fe 400 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = HAL_TIM_DMACaptureCplt;
mbed_official 340:28d1f895c6fe 401 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 402 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 403
mbed_official 340:28d1f895c6fe 404 /* Enable the DMA channel for Capture 1*/
mbed_official 340:28d1f895c6fe 405 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length);
mbed_official 340:28d1f895c6fe 406
mbed_official 340:28d1f895c6fe 407 /* Enable the capture compare 1 Interrupt */
mbed_official 340:28d1f895c6fe 408 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 340:28d1f895c6fe 409
mbed_official 340:28d1f895c6fe 410 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 411 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 412
mbed_official 340:28d1f895c6fe 413 /* Return function status */
mbed_official 340:28d1f895c6fe 414 return HAL_OK;
mbed_official 340:28d1f895c6fe 415 }
mbed_official 340:28d1f895c6fe 416
mbed_official 340:28d1f895c6fe 417 /**
mbed_official 340:28d1f895c6fe 418 * @brief Stops the TIM Hall Sensor Interface in DMA mode.
mbed_official 340:28d1f895c6fe 419 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 420 * @retval HAL status
mbed_official 340:28d1f895c6fe 421 */
mbed_official 340:28d1f895c6fe 422 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 423 {
mbed_official 340:28d1f895c6fe 424 /* Check the parameters */
mbed_official 340:28d1f895c6fe 425 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 426
mbed_official 340:28d1f895c6fe 427 /* Disable the Input Capture channels 1
mbed_official 340:28d1f895c6fe 428 (in the Hall Sensor Interface the Three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
mbed_official 340:28d1f895c6fe 429 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 340:28d1f895c6fe 430
mbed_official 340:28d1f895c6fe 431
mbed_official 340:28d1f895c6fe 432 /* Disable the capture compare Interrupts 1 event */
mbed_official 340:28d1f895c6fe 433 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 340:28d1f895c6fe 434
mbed_official 340:28d1f895c6fe 435 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 436 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 437
mbed_official 340:28d1f895c6fe 438 /* Return function status */
mbed_official 340:28d1f895c6fe 439 return HAL_OK;
mbed_official 340:28d1f895c6fe 440 }
mbed_official 340:28d1f895c6fe 441
mbed_official 340:28d1f895c6fe 442 /**
mbed_official 340:28d1f895c6fe 443 * @}
mbed_official 340:28d1f895c6fe 444 */
mbed_official 340:28d1f895c6fe 445
mbed_official 340:28d1f895c6fe 446 /** @defgroup TIMEx_Exported_Functions_Group2 Timer Complementary Output Compare functions
mbed_official 340:28d1f895c6fe 447 * @brief Timer Complementary Output Compare functions
mbed_official 340:28d1f895c6fe 448 *
mbed_official 340:28d1f895c6fe 449 @verbatim
mbed_official 340:28d1f895c6fe 450 ==============================================================================
mbed_official 340:28d1f895c6fe 451 ##### Timer Complementary Output Compare functions #####
mbed_official 340:28d1f895c6fe 452 ==============================================================================
mbed_official 340:28d1f895c6fe 453 [..]
mbed_official 340:28d1f895c6fe 454 This section provides functions allowing to:
mbed_official 340:28d1f895c6fe 455 (+) Start the Complementary Output Compare/PWM.
mbed_official 340:28d1f895c6fe 456 (+) Stop the Complementary Output Compare/PWM.
mbed_official 340:28d1f895c6fe 457 (+) Start the Complementary Output Compare/PWM and enable interrupts.
mbed_official 340:28d1f895c6fe 458 (+) Stop the Complementary Output Compare/PWM and disable interrupts.
mbed_official 340:28d1f895c6fe 459 (+) Start the Complementary Output Compare/PWM and enable DMA transfers.
mbed_official 340:28d1f895c6fe 460 (+) Stop the Complementary Output Compare/PWM and disable DMA transfers.
mbed_official 340:28d1f895c6fe 461
mbed_official 340:28d1f895c6fe 462 @endverbatim
mbed_official 340:28d1f895c6fe 463 * @{
mbed_official 340:28d1f895c6fe 464 */
mbed_official 340:28d1f895c6fe 465
mbed_official 340:28d1f895c6fe 466 /**
mbed_official 340:28d1f895c6fe 467 * @brief Starts the TIM Output Compare signal generation on the complementary
mbed_official 340:28d1f895c6fe 468 * output.
mbed_official 340:28d1f895c6fe 469 * @param htim : TIM Output Compare handle
mbed_official 340:28d1f895c6fe 470 * @param Channel : TIM Channel to be enabled
mbed_official 340:28d1f895c6fe 471 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 472 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 473 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 474 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 475 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 476 * @retval HAL status
mbed_official 340:28d1f895c6fe 477 */
mbed_official 340:28d1f895c6fe 478 HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 479 {
mbed_official 340:28d1f895c6fe 480 /* Check the parameters */
mbed_official 340:28d1f895c6fe 481 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 482
mbed_official 340:28d1f895c6fe 483 /* Enable the Capture compare channel N */
mbed_official 340:28d1f895c6fe 484 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 485
mbed_official 340:28d1f895c6fe 486 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 487 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 488
mbed_official 340:28d1f895c6fe 489 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 490 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 491
mbed_official 340:28d1f895c6fe 492 /* Return function status */
mbed_official 340:28d1f895c6fe 493 return HAL_OK;
mbed_official 340:28d1f895c6fe 494 }
mbed_official 340:28d1f895c6fe 495
mbed_official 340:28d1f895c6fe 496 /**
mbed_official 340:28d1f895c6fe 497 * @brief Stops the TIM Output Compare signal generation on the complementary
mbed_official 340:28d1f895c6fe 498 * output.
mbed_official 340:28d1f895c6fe 499 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 500 * @param Channel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 501 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 502 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 503 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 504 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 505 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 506 * @retval HAL status
mbed_official 340:28d1f895c6fe 507 */
mbed_official 340:28d1f895c6fe 508 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 509 {
mbed_official 340:28d1f895c6fe 510 /* Check the parameters */
mbed_official 340:28d1f895c6fe 511 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 512
mbed_official 340:28d1f895c6fe 513 /* Disable the Capture compare channel N */
mbed_official 340:28d1f895c6fe 514 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 515
mbed_official 340:28d1f895c6fe 516 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 517 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 518
mbed_official 340:28d1f895c6fe 519 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 520 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 521
mbed_official 340:28d1f895c6fe 522 /* Return function status */
mbed_official 340:28d1f895c6fe 523 return HAL_OK;
mbed_official 340:28d1f895c6fe 524 }
mbed_official 340:28d1f895c6fe 525
mbed_official 340:28d1f895c6fe 526 /**
mbed_official 340:28d1f895c6fe 527 * @brief Starts the TIM Output Compare signal generation in interrupt mode
mbed_official 340:28d1f895c6fe 528 * on the complementary output.
mbed_official 340:28d1f895c6fe 529 * @param htim : TIM OC handle
mbed_official 340:28d1f895c6fe 530 * @param Channel : TIM Channel to be enabled
mbed_official 340:28d1f895c6fe 531 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 532 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 533 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 534 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 535 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 536 * @retval HAL status
mbed_official 340:28d1f895c6fe 537 */
mbed_official 340:28d1f895c6fe 538 HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 539 {
mbed_official 340:28d1f895c6fe 540 /* Check the parameters */
mbed_official 340:28d1f895c6fe 541 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 542
mbed_official 340:28d1f895c6fe 543 switch (Channel)
mbed_official 340:28d1f895c6fe 544 {
mbed_official 340:28d1f895c6fe 545 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 546 {
mbed_official 340:28d1f895c6fe 547 /* Enable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 548 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 549 }
mbed_official 340:28d1f895c6fe 550 break;
mbed_official 340:28d1f895c6fe 551
mbed_official 340:28d1f895c6fe 552 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 553 {
mbed_official 340:28d1f895c6fe 554 /* Enable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 555 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 340:28d1f895c6fe 556 }
mbed_official 340:28d1f895c6fe 557 break;
mbed_official 340:28d1f895c6fe 558
mbed_official 340:28d1f895c6fe 559 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 560 {
mbed_official 340:28d1f895c6fe 561 /* Enable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 562 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
mbed_official 340:28d1f895c6fe 563 }
mbed_official 340:28d1f895c6fe 564 break;
mbed_official 340:28d1f895c6fe 565
mbed_official 340:28d1f895c6fe 566 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 567 {
mbed_official 340:28d1f895c6fe 568 /* Enable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 569 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
mbed_official 340:28d1f895c6fe 570 }
mbed_official 340:28d1f895c6fe 571 break;
mbed_official 340:28d1f895c6fe 572
mbed_official 340:28d1f895c6fe 573 default:
mbed_official 340:28d1f895c6fe 574 break;
mbed_official 340:28d1f895c6fe 575 }
mbed_official 340:28d1f895c6fe 576
mbed_official 340:28d1f895c6fe 577 /* Enable the TIM Break interrupt */
mbed_official 340:28d1f895c6fe 578 __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
mbed_official 340:28d1f895c6fe 579
mbed_official 340:28d1f895c6fe 580 /* Enable the Capture compare channel N */
mbed_official 340:28d1f895c6fe 581 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 582
mbed_official 340:28d1f895c6fe 583 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 584 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 585
mbed_official 340:28d1f895c6fe 586 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 587 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 588
mbed_official 340:28d1f895c6fe 589 /* Return function status */
mbed_official 340:28d1f895c6fe 590 return HAL_OK;
mbed_official 340:28d1f895c6fe 591 }
mbed_official 340:28d1f895c6fe 592
mbed_official 340:28d1f895c6fe 593 /**
mbed_official 340:28d1f895c6fe 594 * @brief Stops the TIM Output Compare signal generation in interrupt mode
mbed_official 340:28d1f895c6fe 595 * on the complementary output.
mbed_official 340:28d1f895c6fe 596 * @param htim : TIM Output Compare handle
mbed_official 340:28d1f895c6fe 597 * @param Channel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 598 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 599 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 600 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 601 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 602 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 603 * @retval HAL status
mbed_official 340:28d1f895c6fe 604 */
mbed_official 340:28d1f895c6fe 605 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 606 {
mbed_official 340:28d1f895c6fe 607 uint32_t tmpccer = 0;
mbed_official 340:28d1f895c6fe 608
mbed_official 340:28d1f895c6fe 609 /* Check the parameters */
mbed_official 340:28d1f895c6fe 610 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 611
mbed_official 340:28d1f895c6fe 612 switch (Channel)
mbed_official 340:28d1f895c6fe 613 {
mbed_official 340:28d1f895c6fe 614 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 615 {
mbed_official 340:28d1f895c6fe 616 /* Disable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 617 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 618 }
mbed_official 340:28d1f895c6fe 619 break;
mbed_official 340:28d1f895c6fe 620
mbed_official 340:28d1f895c6fe 621 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 622 {
mbed_official 340:28d1f895c6fe 623 /* Disable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 624 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 340:28d1f895c6fe 625 }
mbed_official 340:28d1f895c6fe 626 break;
mbed_official 340:28d1f895c6fe 627
mbed_official 340:28d1f895c6fe 628 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 629 {
mbed_official 340:28d1f895c6fe 630 /* Disable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 631 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
mbed_official 340:28d1f895c6fe 632 }
mbed_official 340:28d1f895c6fe 633 break;
mbed_official 340:28d1f895c6fe 634
mbed_official 340:28d1f895c6fe 635 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 636 {
mbed_official 340:28d1f895c6fe 637 /* Disable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 638 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
mbed_official 340:28d1f895c6fe 639 }
mbed_official 340:28d1f895c6fe 640 break;
mbed_official 340:28d1f895c6fe 641
mbed_official 340:28d1f895c6fe 642 default:
mbed_official 340:28d1f895c6fe 643 break;
mbed_official 340:28d1f895c6fe 644 }
mbed_official 340:28d1f895c6fe 645
mbed_official 340:28d1f895c6fe 646 /* Disable the Capture compare channel N */
mbed_official 340:28d1f895c6fe 647 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 648
mbed_official 340:28d1f895c6fe 649 /* Disable the TIM Break interrupt (only if no more channel is active) */
mbed_official 340:28d1f895c6fe 650 tmpccer = htim->Instance->CCER;
mbed_official 340:28d1f895c6fe 651 if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == RESET)
mbed_official 340:28d1f895c6fe 652 {
mbed_official 340:28d1f895c6fe 653 __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
mbed_official 340:28d1f895c6fe 654 }
mbed_official 340:28d1f895c6fe 655
mbed_official 340:28d1f895c6fe 656 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 657 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 658
mbed_official 340:28d1f895c6fe 659 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 660 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 661
mbed_official 340:28d1f895c6fe 662 /* Return function status */
mbed_official 340:28d1f895c6fe 663 return HAL_OK;
mbed_official 340:28d1f895c6fe 664 }
mbed_official 340:28d1f895c6fe 665
mbed_official 340:28d1f895c6fe 666 /**
mbed_official 340:28d1f895c6fe 667 * @brief Starts the TIM Output Compare signal generation in DMA mode
mbed_official 340:28d1f895c6fe 668 * on the complementary output.
mbed_official 340:28d1f895c6fe 669 * @param htim : TIM Output Compare handle
mbed_official 340:28d1f895c6fe 670 * @param Channel : TIM Channel to be enabled
mbed_official 340:28d1f895c6fe 671 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 672 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 673 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 674 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 675 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 676 * @param pData : The source Buffer address.
mbed_official 340:28d1f895c6fe 677 * @param Length : The length of data to be transferred from memory to TIM peripheral
mbed_official 340:28d1f895c6fe 678 * @retval HAL status
mbed_official 340:28d1f895c6fe 679 */
mbed_official 340:28d1f895c6fe 680 HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
mbed_official 340:28d1f895c6fe 681 {
mbed_official 340:28d1f895c6fe 682 /* Check the parameters */
mbed_official 340:28d1f895c6fe 683 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 684
mbed_official 340:28d1f895c6fe 685 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 340:28d1f895c6fe 686 {
mbed_official 340:28d1f895c6fe 687 return HAL_BUSY;
mbed_official 340:28d1f895c6fe 688 }
mbed_official 340:28d1f895c6fe 689 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 340:28d1f895c6fe 690 {
mbed_official 340:28d1f895c6fe 691 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 340:28d1f895c6fe 692 {
mbed_official 340:28d1f895c6fe 693 return HAL_ERROR;
mbed_official 340:28d1f895c6fe 694 }
mbed_official 340:28d1f895c6fe 695 else
mbed_official 340:28d1f895c6fe 696 {
mbed_official 340:28d1f895c6fe 697 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 340:28d1f895c6fe 698 }
mbed_official 340:28d1f895c6fe 699 }
mbed_official 340:28d1f895c6fe 700 switch (Channel)
mbed_official 340:28d1f895c6fe 701 {
mbed_official 340:28d1f895c6fe 702 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 703 {
mbed_official 340:28d1f895c6fe 704 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 705 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 706
mbed_official 340:28d1f895c6fe 707 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 708 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 709
mbed_official 340:28d1f895c6fe 710 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 711 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
mbed_official 340:28d1f895c6fe 712
mbed_official 340:28d1f895c6fe 713 /* Enable the TIM Output Compare DMA request */
mbed_official 340:28d1f895c6fe 714 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 340:28d1f895c6fe 715 }
mbed_official 340:28d1f895c6fe 716 break;
mbed_official 340:28d1f895c6fe 717
mbed_official 340:28d1f895c6fe 718 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 719 {
mbed_official 340:28d1f895c6fe 720 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 721 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 722
mbed_official 340:28d1f895c6fe 723 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 724 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 725
mbed_official 340:28d1f895c6fe 726 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 727 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
mbed_official 340:28d1f895c6fe 728
mbed_official 340:28d1f895c6fe 729 /* Enable the TIM Output Compare DMA request */
mbed_official 340:28d1f895c6fe 730 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 340:28d1f895c6fe 731 }
mbed_official 340:28d1f895c6fe 732 break;
mbed_official 340:28d1f895c6fe 733
mbed_official 340:28d1f895c6fe 734 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 735 {
mbed_official 340:28d1f895c6fe 736 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 737 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 738
mbed_official 340:28d1f895c6fe 739 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 740 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 741
mbed_official 340:28d1f895c6fe 742 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 743 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
mbed_official 340:28d1f895c6fe 744
mbed_official 340:28d1f895c6fe 745 /* Enable the TIM Output Compare DMA request */
mbed_official 340:28d1f895c6fe 746 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 340:28d1f895c6fe 747 }
mbed_official 340:28d1f895c6fe 748 break;
mbed_official 340:28d1f895c6fe 749
mbed_official 340:28d1f895c6fe 750 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 751 {
mbed_official 340:28d1f895c6fe 752 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 753 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 754
mbed_official 340:28d1f895c6fe 755 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 756 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 757
mbed_official 340:28d1f895c6fe 758 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 759 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
mbed_official 340:28d1f895c6fe 760
mbed_official 340:28d1f895c6fe 761 /* Enable the TIM Output Compare DMA request */
mbed_official 340:28d1f895c6fe 762 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 340:28d1f895c6fe 763 }
mbed_official 340:28d1f895c6fe 764 break;
mbed_official 340:28d1f895c6fe 765
mbed_official 340:28d1f895c6fe 766 default:
mbed_official 340:28d1f895c6fe 767 break;
mbed_official 340:28d1f895c6fe 768 }
mbed_official 340:28d1f895c6fe 769
mbed_official 340:28d1f895c6fe 770 /* Enable the Capture compare channel N */
mbed_official 340:28d1f895c6fe 771 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 772
mbed_official 340:28d1f895c6fe 773 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 774 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 775
mbed_official 340:28d1f895c6fe 776 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 777 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 778
mbed_official 340:28d1f895c6fe 779 /* Return function status */
mbed_official 340:28d1f895c6fe 780 return HAL_OK;
mbed_official 340:28d1f895c6fe 781 }
mbed_official 340:28d1f895c6fe 782
mbed_official 340:28d1f895c6fe 783 /**
mbed_official 340:28d1f895c6fe 784 * @brief Stops the TIM Output Compare signal generation in DMA mode
mbed_official 340:28d1f895c6fe 785 * on the complementary output.
mbed_official 340:28d1f895c6fe 786 * @param htim : TIM Output Compare handle
mbed_official 340:28d1f895c6fe 787 * @param Channel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 788 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 789 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 790 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 791 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 792 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 793 * @retval HAL status
mbed_official 340:28d1f895c6fe 794 */
mbed_official 340:28d1f895c6fe 795 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 796 {
mbed_official 340:28d1f895c6fe 797 /* Check the parameters */
mbed_official 340:28d1f895c6fe 798 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 799
mbed_official 340:28d1f895c6fe 800 switch (Channel)
mbed_official 340:28d1f895c6fe 801 {
mbed_official 340:28d1f895c6fe 802 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 803 {
mbed_official 340:28d1f895c6fe 804 /* Disable the TIM Output Compare DMA request */
mbed_official 340:28d1f895c6fe 805 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 340:28d1f895c6fe 806 }
mbed_official 340:28d1f895c6fe 807 break;
mbed_official 340:28d1f895c6fe 808
mbed_official 340:28d1f895c6fe 809 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 810 {
mbed_official 340:28d1f895c6fe 811 /* Disable the TIM Output Compare DMA request */
mbed_official 340:28d1f895c6fe 812 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 340:28d1f895c6fe 813 }
mbed_official 340:28d1f895c6fe 814 break;
mbed_official 340:28d1f895c6fe 815
mbed_official 340:28d1f895c6fe 816 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 817 {
mbed_official 340:28d1f895c6fe 818 /* Disable the TIM Output Compare DMA request */
mbed_official 340:28d1f895c6fe 819 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 340:28d1f895c6fe 820 }
mbed_official 340:28d1f895c6fe 821 break;
mbed_official 340:28d1f895c6fe 822
mbed_official 340:28d1f895c6fe 823 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 824 {
mbed_official 340:28d1f895c6fe 825 /* Disable the TIM Output Compare interrupt */
mbed_official 340:28d1f895c6fe 826 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 340:28d1f895c6fe 827 }
mbed_official 340:28d1f895c6fe 828 break;
mbed_official 340:28d1f895c6fe 829
mbed_official 340:28d1f895c6fe 830 default:
mbed_official 340:28d1f895c6fe 831 break;
mbed_official 340:28d1f895c6fe 832 }
mbed_official 340:28d1f895c6fe 833
mbed_official 340:28d1f895c6fe 834 /* Disable the Capture compare channel N */
mbed_official 340:28d1f895c6fe 835 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 836
mbed_official 340:28d1f895c6fe 837 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 838 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 839
mbed_official 340:28d1f895c6fe 840 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 841 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 842
mbed_official 340:28d1f895c6fe 843 /* Change the htim state */
mbed_official 340:28d1f895c6fe 844 htim->State = HAL_TIM_STATE_READY;
mbed_official 340:28d1f895c6fe 845
mbed_official 340:28d1f895c6fe 846 /* Return function status */
mbed_official 340:28d1f895c6fe 847 return HAL_OK;
mbed_official 340:28d1f895c6fe 848 }
mbed_official 340:28d1f895c6fe 849
mbed_official 340:28d1f895c6fe 850 /**
mbed_official 340:28d1f895c6fe 851 * @}
mbed_official 340:28d1f895c6fe 852 */
mbed_official 340:28d1f895c6fe 853
mbed_official 340:28d1f895c6fe 854 /** @defgroup TIMEx_Exported_Functions_Group3 Timer Complementary PWM functions
mbed_official 340:28d1f895c6fe 855 * @brief Timer Complementary PWM functions
mbed_official 340:28d1f895c6fe 856 *
mbed_official 340:28d1f895c6fe 857 @verbatim
mbed_official 340:28d1f895c6fe 858 ==============================================================================
mbed_official 340:28d1f895c6fe 859 ##### Timer Complementary PWM functions #####
mbed_official 340:28d1f895c6fe 860 ==============================================================================
mbed_official 340:28d1f895c6fe 861 [..]
mbed_official 340:28d1f895c6fe 862 This section provides functions allowing to:
mbed_official 340:28d1f895c6fe 863 (+) Start the Complementary PWM.
mbed_official 340:28d1f895c6fe 864 (+) Stop the Complementary PWM.
mbed_official 340:28d1f895c6fe 865 (+) Start the Complementary PWM and enable interrupts.
mbed_official 340:28d1f895c6fe 866 (+) Stop the Complementary PWM and disable interrupts.
mbed_official 340:28d1f895c6fe 867 (+) Start the Complementary PWM and enable DMA transfers.
mbed_official 340:28d1f895c6fe 868 (+) Stop the Complementary PWM and disable DMA transfers.
mbed_official 340:28d1f895c6fe 869 (+) Start the Complementary Input Capture measurement.
mbed_official 340:28d1f895c6fe 870 (+) Stop the Complementary Input Capture.
mbed_official 340:28d1f895c6fe 871 (+) Start the Complementary Input Capture and enable interrupts.
mbed_official 340:28d1f895c6fe 872 (+) Stop the Complementary Input Capture and disable interrupts.
mbed_official 340:28d1f895c6fe 873 (+) Start the Complementary Input Capture and enable DMA transfers.
mbed_official 340:28d1f895c6fe 874 (+) Stop the Complementary Input Capture and disable DMA transfers.
mbed_official 340:28d1f895c6fe 875 (+) Start the Complementary One Pulse generation.
mbed_official 340:28d1f895c6fe 876 (+) Stop the Complementary One Pulse.
mbed_official 340:28d1f895c6fe 877 (+) Start the Complementary One Pulse and enable interrupts.
mbed_official 340:28d1f895c6fe 878 (+) Stop the Complementary One Pulse and disable interrupts.
mbed_official 340:28d1f895c6fe 879
mbed_official 340:28d1f895c6fe 880 @endverbatim
mbed_official 340:28d1f895c6fe 881 * @{
mbed_official 340:28d1f895c6fe 882 */
mbed_official 340:28d1f895c6fe 883
mbed_official 340:28d1f895c6fe 884 /**
mbed_official 340:28d1f895c6fe 885 * @brief Starts the PWM signal generation on the complementary output.
mbed_official 340:28d1f895c6fe 886 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 887 * @param Channel : TIM Channel to be enabled
mbed_official 340:28d1f895c6fe 888 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 889 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 890 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 891 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 892 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 893 * @retval HAL status
mbed_official 340:28d1f895c6fe 894 */
mbed_official 340:28d1f895c6fe 895 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 896 {
mbed_official 340:28d1f895c6fe 897 /* Check the parameters */
mbed_official 340:28d1f895c6fe 898 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 899
mbed_official 340:28d1f895c6fe 900 /* Enable the complementary PWM output */
mbed_official 340:28d1f895c6fe 901 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 902
mbed_official 340:28d1f895c6fe 903 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 904 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 905
mbed_official 340:28d1f895c6fe 906 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 907 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 908
mbed_official 340:28d1f895c6fe 909 /* Return function status */
mbed_official 340:28d1f895c6fe 910 return HAL_OK;
mbed_official 340:28d1f895c6fe 911 }
mbed_official 340:28d1f895c6fe 912
mbed_official 340:28d1f895c6fe 913 /**
mbed_official 340:28d1f895c6fe 914 * @brief Stops the PWM signal generation on the complementary output.
mbed_official 340:28d1f895c6fe 915 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 916 * @param Channel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 917 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 918 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 919 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 920 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 921 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 922 * @retval HAL status
mbed_official 340:28d1f895c6fe 923 */
mbed_official 340:28d1f895c6fe 924 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 925 {
mbed_official 340:28d1f895c6fe 926 /* Check the parameters */
mbed_official 340:28d1f895c6fe 927 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 928
mbed_official 340:28d1f895c6fe 929 /* Disable the complementary PWM output */
mbed_official 340:28d1f895c6fe 930 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 931
mbed_official 340:28d1f895c6fe 932 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 933 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 934
mbed_official 340:28d1f895c6fe 935 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 936 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 937
mbed_official 340:28d1f895c6fe 938 /* Return function status */
mbed_official 340:28d1f895c6fe 939 return HAL_OK;
mbed_official 340:28d1f895c6fe 940 }
mbed_official 340:28d1f895c6fe 941
mbed_official 340:28d1f895c6fe 942 /**
mbed_official 340:28d1f895c6fe 943 * @brief Starts the PWM signal generation in interrupt mode on the
mbed_official 340:28d1f895c6fe 944 * complementary output.
mbed_official 340:28d1f895c6fe 945 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 946 * @param Channel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 947 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 948 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 949 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 950 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 951 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 952 * @retval HAL status
mbed_official 340:28d1f895c6fe 953 */
mbed_official 340:28d1f895c6fe 954 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 955 {
mbed_official 340:28d1f895c6fe 956 /* Check the parameters */
mbed_official 340:28d1f895c6fe 957 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 958
mbed_official 340:28d1f895c6fe 959 switch (Channel)
mbed_official 340:28d1f895c6fe 960 {
mbed_official 340:28d1f895c6fe 961 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 962 {
mbed_official 340:28d1f895c6fe 963 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 340:28d1f895c6fe 964 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 965 }
mbed_official 340:28d1f895c6fe 966 break;
mbed_official 340:28d1f895c6fe 967
mbed_official 340:28d1f895c6fe 968 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 969 {
mbed_official 340:28d1f895c6fe 970 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 340:28d1f895c6fe 971 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 340:28d1f895c6fe 972 }
mbed_official 340:28d1f895c6fe 973 break;
mbed_official 340:28d1f895c6fe 974
mbed_official 340:28d1f895c6fe 975 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 976 {
mbed_official 340:28d1f895c6fe 977 /* Enable the TIM Capture/Compare 3 interrupt */
mbed_official 340:28d1f895c6fe 978 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
mbed_official 340:28d1f895c6fe 979 }
mbed_official 340:28d1f895c6fe 980 break;
mbed_official 340:28d1f895c6fe 981
mbed_official 340:28d1f895c6fe 982 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 983 {
mbed_official 340:28d1f895c6fe 984 /* Enable the TIM Capture/Compare 4 interrupt */
mbed_official 340:28d1f895c6fe 985 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
mbed_official 340:28d1f895c6fe 986 }
mbed_official 340:28d1f895c6fe 987 break;
mbed_official 340:28d1f895c6fe 988
mbed_official 340:28d1f895c6fe 989 default:
mbed_official 340:28d1f895c6fe 990 break;
mbed_official 340:28d1f895c6fe 991 }
mbed_official 340:28d1f895c6fe 992
mbed_official 340:28d1f895c6fe 993 /* Enable the TIM Break interrupt */
mbed_official 340:28d1f895c6fe 994 __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
mbed_official 340:28d1f895c6fe 995
mbed_official 340:28d1f895c6fe 996 /* Enable the complementary PWM output */
mbed_official 340:28d1f895c6fe 997 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 998
mbed_official 340:28d1f895c6fe 999 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 1000 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 1001
mbed_official 340:28d1f895c6fe 1002 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 1003 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 1004
mbed_official 340:28d1f895c6fe 1005 /* Return function status */
mbed_official 340:28d1f895c6fe 1006 return HAL_OK;
mbed_official 340:28d1f895c6fe 1007 }
mbed_official 340:28d1f895c6fe 1008
mbed_official 340:28d1f895c6fe 1009 /**
mbed_official 340:28d1f895c6fe 1010 * @brief Stops the PWM signal generation in interrupt mode on the
mbed_official 340:28d1f895c6fe 1011 * complementary output.
mbed_official 340:28d1f895c6fe 1012 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1013 * @param Channel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 1014 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1015 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 1016 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 1017 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 1018 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 1019 * @retval HAL status
mbed_official 340:28d1f895c6fe 1020 */
mbed_official 340:28d1f895c6fe 1021 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT (TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 1022 {
mbed_official 340:28d1f895c6fe 1023 uint32_t tmpccer = 0;
mbed_official 340:28d1f895c6fe 1024
mbed_official 340:28d1f895c6fe 1025 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1026 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 1027
mbed_official 340:28d1f895c6fe 1028 switch (Channel)
mbed_official 340:28d1f895c6fe 1029 {
mbed_official 340:28d1f895c6fe 1030 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 1031 {
mbed_official 340:28d1f895c6fe 1032 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 340:28d1f895c6fe 1033 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 1034 }
mbed_official 340:28d1f895c6fe 1035 break;
mbed_official 340:28d1f895c6fe 1036
mbed_official 340:28d1f895c6fe 1037 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 1038 {
mbed_official 340:28d1f895c6fe 1039 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 340:28d1f895c6fe 1040 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 340:28d1f895c6fe 1041 }
mbed_official 340:28d1f895c6fe 1042 break;
mbed_official 340:28d1f895c6fe 1043
mbed_official 340:28d1f895c6fe 1044 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 1045 {
mbed_official 340:28d1f895c6fe 1046 /* Disable the TIM Capture/Compare 3 interrupt */
mbed_official 340:28d1f895c6fe 1047 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
mbed_official 340:28d1f895c6fe 1048 }
mbed_official 340:28d1f895c6fe 1049 break;
mbed_official 340:28d1f895c6fe 1050
mbed_official 340:28d1f895c6fe 1051 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 1052 {
mbed_official 340:28d1f895c6fe 1053 /* Disable the TIM Capture/Compare 3 interrupt */
mbed_official 340:28d1f895c6fe 1054 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
mbed_official 340:28d1f895c6fe 1055 }
mbed_official 340:28d1f895c6fe 1056 break;
mbed_official 340:28d1f895c6fe 1057
mbed_official 340:28d1f895c6fe 1058 default:
mbed_official 340:28d1f895c6fe 1059 break;
mbed_official 340:28d1f895c6fe 1060 }
mbed_official 340:28d1f895c6fe 1061
mbed_official 340:28d1f895c6fe 1062 /* Disable the complementary PWM output */
mbed_official 340:28d1f895c6fe 1063 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 1064
mbed_official 340:28d1f895c6fe 1065 /* Disable the TIM Break interrupt (only if no more channel is active) */
mbed_official 340:28d1f895c6fe 1066 tmpccer = htim->Instance->CCER;
mbed_official 340:28d1f895c6fe 1067 if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == RESET)
mbed_official 340:28d1f895c6fe 1068 {
mbed_official 340:28d1f895c6fe 1069 __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
mbed_official 340:28d1f895c6fe 1070 }
mbed_official 340:28d1f895c6fe 1071
mbed_official 340:28d1f895c6fe 1072 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 1073 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1074
mbed_official 340:28d1f895c6fe 1075 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 1076 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1077
mbed_official 340:28d1f895c6fe 1078 /* Return function status */
mbed_official 340:28d1f895c6fe 1079 return HAL_OK;
mbed_official 340:28d1f895c6fe 1080 }
mbed_official 340:28d1f895c6fe 1081
mbed_official 340:28d1f895c6fe 1082 /**
mbed_official 340:28d1f895c6fe 1083 * @brief Starts the TIM PWM signal generation in DMA mode on the
mbed_official 340:28d1f895c6fe 1084 * complementary output
mbed_official 340:28d1f895c6fe 1085 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1086 * @param Channel : TIM Channel to be enabled
mbed_official 340:28d1f895c6fe 1087 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1088 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 1089 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 1090 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 1091 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 1092 * @param pData : The source Buffer address.
mbed_official 340:28d1f895c6fe 1093 * @param Length : The length of data to be transferred from memory to TIM peripheral
mbed_official 340:28d1f895c6fe 1094 * @retval HAL status
mbed_official 340:28d1f895c6fe 1095 */
mbed_official 340:28d1f895c6fe 1096 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
mbed_official 340:28d1f895c6fe 1097 {
mbed_official 340:28d1f895c6fe 1098 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1099 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 1100
mbed_official 340:28d1f895c6fe 1101 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 340:28d1f895c6fe 1102 {
mbed_official 340:28d1f895c6fe 1103 return HAL_BUSY;
mbed_official 340:28d1f895c6fe 1104 }
mbed_official 340:28d1f895c6fe 1105 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 340:28d1f895c6fe 1106 {
mbed_official 340:28d1f895c6fe 1107 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 340:28d1f895c6fe 1108 {
mbed_official 340:28d1f895c6fe 1109 return HAL_ERROR;
mbed_official 340:28d1f895c6fe 1110 }
mbed_official 340:28d1f895c6fe 1111 else
mbed_official 340:28d1f895c6fe 1112 {
mbed_official 340:28d1f895c6fe 1113 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 340:28d1f895c6fe 1114 }
mbed_official 340:28d1f895c6fe 1115 }
mbed_official 340:28d1f895c6fe 1116 switch (Channel)
mbed_official 340:28d1f895c6fe 1117 {
mbed_official 340:28d1f895c6fe 1118 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 1119 {
mbed_official 340:28d1f895c6fe 1120 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 1121 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 1122
mbed_official 340:28d1f895c6fe 1123 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 1124 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 1125
mbed_official 340:28d1f895c6fe 1126 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 1127 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
mbed_official 340:28d1f895c6fe 1128
mbed_official 340:28d1f895c6fe 1129 /* Enable the TIM Capture/Compare 1 DMA request */
mbed_official 340:28d1f895c6fe 1130 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 340:28d1f895c6fe 1131 }
mbed_official 340:28d1f895c6fe 1132 break;
mbed_official 340:28d1f895c6fe 1133
mbed_official 340:28d1f895c6fe 1134 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 1135 {
mbed_official 340:28d1f895c6fe 1136 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 1137 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 1138
mbed_official 340:28d1f895c6fe 1139 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 1140 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 1141
mbed_official 340:28d1f895c6fe 1142 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 1143 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
mbed_official 340:28d1f895c6fe 1144
mbed_official 340:28d1f895c6fe 1145 /* Enable the TIM Capture/Compare 2 DMA request */
mbed_official 340:28d1f895c6fe 1146 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 340:28d1f895c6fe 1147 }
mbed_official 340:28d1f895c6fe 1148 break;
mbed_official 340:28d1f895c6fe 1149
mbed_official 340:28d1f895c6fe 1150 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 1151 {
mbed_official 340:28d1f895c6fe 1152 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 1153 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 1154
mbed_official 340:28d1f895c6fe 1155 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 1156 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 1157
mbed_official 340:28d1f895c6fe 1158 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 1159 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
mbed_official 340:28d1f895c6fe 1160
mbed_official 340:28d1f895c6fe 1161 /* Enable the TIM Capture/Compare 3 DMA request */
mbed_official 340:28d1f895c6fe 1162 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 340:28d1f895c6fe 1163 }
mbed_official 340:28d1f895c6fe 1164 break;
mbed_official 340:28d1f895c6fe 1165
mbed_official 340:28d1f895c6fe 1166 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 1167 {
mbed_official 340:28d1f895c6fe 1168 /* Set the DMA Period elapsed callback */
mbed_official 340:28d1f895c6fe 1169 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 340:28d1f895c6fe 1170
mbed_official 340:28d1f895c6fe 1171 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 1172 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 340:28d1f895c6fe 1173
mbed_official 340:28d1f895c6fe 1174 /* Enable the DMA channel */
mbed_official 340:28d1f895c6fe 1175 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
mbed_official 340:28d1f895c6fe 1176
mbed_official 340:28d1f895c6fe 1177 /* Enable the TIM Capture/Compare 4 DMA request */
mbed_official 340:28d1f895c6fe 1178 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 340:28d1f895c6fe 1179 }
mbed_official 340:28d1f895c6fe 1180 break;
mbed_official 340:28d1f895c6fe 1181
mbed_official 340:28d1f895c6fe 1182 default:
mbed_official 340:28d1f895c6fe 1183 break;
mbed_official 340:28d1f895c6fe 1184 }
mbed_official 340:28d1f895c6fe 1185
mbed_official 340:28d1f895c6fe 1186 /* Enable the complementary PWM output */
mbed_official 340:28d1f895c6fe 1187 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 1188
mbed_official 340:28d1f895c6fe 1189 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 1190 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 1191
mbed_official 340:28d1f895c6fe 1192 /* Enable the Peripheral */
mbed_official 340:28d1f895c6fe 1193 __HAL_TIM_ENABLE(htim);
mbed_official 340:28d1f895c6fe 1194
mbed_official 340:28d1f895c6fe 1195 /* Return function status */
mbed_official 340:28d1f895c6fe 1196 return HAL_OK;
mbed_official 340:28d1f895c6fe 1197 }
mbed_official 340:28d1f895c6fe 1198
mbed_official 340:28d1f895c6fe 1199 /**
mbed_official 340:28d1f895c6fe 1200 * @brief Stops the TIM PWM signal generation in DMA mode on the complementary
mbed_official 340:28d1f895c6fe 1201 * output
mbed_official 340:28d1f895c6fe 1202 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1203 * @param Channel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 1204 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1205 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 1206 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 1207 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 340:28d1f895c6fe 1208 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 340:28d1f895c6fe 1209 * @retval HAL status
mbed_official 340:28d1f895c6fe 1210 */
mbed_official 340:28d1f895c6fe 1211 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 340:28d1f895c6fe 1212 {
mbed_official 340:28d1f895c6fe 1213 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1214 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 340:28d1f895c6fe 1215
mbed_official 340:28d1f895c6fe 1216 switch (Channel)
mbed_official 340:28d1f895c6fe 1217 {
mbed_official 340:28d1f895c6fe 1218 case TIM_CHANNEL_1:
mbed_official 340:28d1f895c6fe 1219 {
mbed_official 340:28d1f895c6fe 1220 /* Disable the TIM Capture/Compare 1 DMA request */
mbed_official 340:28d1f895c6fe 1221 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 340:28d1f895c6fe 1222 }
mbed_official 340:28d1f895c6fe 1223 break;
mbed_official 340:28d1f895c6fe 1224
mbed_official 340:28d1f895c6fe 1225 case TIM_CHANNEL_2:
mbed_official 340:28d1f895c6fe 1226 {
mbed_official 340:28d1f895c6fe 1227 /* Disable the TIM Capture/Compare 2 DMA request */
mbed_official 340:28d1f895c6fe 1228 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 340:28d1f895c6fe 1229 }
mbed_official 340:28d1f895c6fe 1230 break;
mbed_official 340:28d1f895c6fe 1231
mbed_official 340:28d1f895c6fe 1232 case TIM_CHANNEL_3:
mbed_official 340:28d1f895c6fe 1233 {
mbed_official 340:28d1f895c6fe 1234 /* Disable the TIM Capture/Compare 3 DMA request */
mbed_official 340:28d1f895c6fe 1235 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 340:28d1f895c6fe 1236 }
mbed_official 340:28d1f895c6fe 1237 break;
mbed_official 340:28d1f895c6fe 1238
mbed_official 340:28d1f895c6fe 1239 case TIM_CHANNEL_4:
mbed_official 340:28d1f895c6fe 1240 {
mbed_official 340:28d1f895c6fe 1241 /* Disable the TIM Capture/Compare 4 DMA request */
mbed_official 340:28d1f895c6fe 1242 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 340:28d1f895c6fe 1243 }
mbed_official 340:28d1f895c6fe 1244 break;
mbed_official 340:28d1f895c6fe 1245
mbed_official 340:28d1f895c6fe 1246 default:
mbed_official 340:28d1f895c6fe 1247 break;
mbed_official 340:28d1f895c6fe 1248 }
mbed_official 340:28d1f895c6fe 1249
mbed_official 340:28d1f895c6fe 1250 /* Disable the complementary PWM output */
mbed_official 340:28d1f895c6fe 1251 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 1252
mbed_official 340:28d1f895c6fe 1253 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 1254 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1255
mbed_official 340:28d1f895c6fe 1256 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 1257 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1258
mbed_official 340:28d1f895c6fe 1259 /* Change the htim state */
mbed_official 340:28d1f895c6fe 1260 htim->State = HAL_TIM_STATE_READY;
mbed_official 340:28d1f895c6fe 1261
mbed_official 340:28d1f895c6fe 1262 /* Return function status */
mbed_official 340:28d1f895c6fe 1263 return HAL_OK;
mbed_official 340:28d1f895c6fe 1264 }
mbed_official 340:28d1f895c6fe 1265
mbed_official 340:28d1f895c6fe 1266 /**
mbed_official 340:28d1f895c6fe 1267 * @}
mbed_official 340:28d1f895c6fe 1268 */
mbed_official 340:28d1f895c6fe 1269
mbed_official 340:28d1f895c6fe 1270 /** @defgroup TIMEx_Exported_Functions_Group4 Timer Complementary One Pulse functions
mbed_official 340:28d1f895c6fe 1271 * @brief Timer Complementary One Pulse functions
mbed_official 340:28d1f895c6fe 1272 *
mbed_official 340:28d1f895c6fe 1273 @verbatim
mbed_official 340:28d1f895c6fe 1274 ==============================================================================
mbed_official 340:28d1f895c6fe 1275 ##### Timer Complementary One Pulse functions #####
mbed_official 340:28d1f895c6fe 1276 ==============================================================================
mbed_official 340:28d1f895c6fe 1277 [..]
mbed_official 340:28d1f895c6fe 1278 This section provides functions allowing to:
mbed_official 340:28d1f895c6fe 1279 (+) Start the Complementary One Pulse generation.
mbed_official 340:28d1f895c6fe 1280 (+) Stop the Complementary One Pulse.
mbed_official 340:28d1f895c6fe 1281 (+) Start the Complementary One Pulse and enable interrupts.
mbed_official 340:28d1f895c6fe 1282 (+) Stop the Complementary One Pulse and disable interrupts.
mbed_official 340:28d1f895c6fe 1283
mbed_official 340:28d1f895c6fe 1284 @endverbatim
mbed_official 340:28d1f895c6fe 1285 * @{
mbed_official 340:28d1f895c6fe 1286 */
mbed_official 340:28d1f895c6fe 1287
mbed_official 340:28d1f895c6fe 1288 /**
mbed_official 340:28d1f895c6fe 1289 * @brief Starts the TIM One Pulse signal generation on the complemetary
mbed_official 340:28d1f895c6fe 1290 * output.
mbed_official 340:28d1f895c6fe 1291 * @param htim : TIM One Pulse handle
mbed_official 340:28d1f895c6fe 1292 * @param OutputChannel : TIM Channel to be enabled
mbed_official 340:28d1f895c6fe 1293 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1294 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 1295 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 1296 * @retval HAL status
mbed_official 340:28d1f895c6fe 1297 */
mbed_official 340:28d1f895c6fe 1298 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 340:28d1f895c6fe 1299 {
mbed_official 340:28d1f895c6fe 1300 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1301 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 340:28d1f895c6fe 1302
mbed_official 340:28d1f895c6fe 1303 /* Enable the complementary One Pulse output */
mbed_official 340:28d1f895c6fe 1304 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 1305
mbed_official 340:28d1f895c6fe 1306 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 1307 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 1308
mbed_official 340:28d1f895c6fe 1309 /* Return function status */
mbed_official 340:28d1f895c6fe 1310 return HAL_OK;
mbed_official 340:28d1f895c6fe 1311 }
mbed_official 340:28d1f895c6fe 1312
mbed_official 340:28d1f895c6fe 1313 /**
mbed_official 340:28d1f895c6fe 1314 * @brief Stops the TIM One Pulse signal generation on the complementary
mbed_official 340:28d1f895c6fe 1315 * output.
mbed_official 340:28d1f895c6fe 1316 * @param htim : TIM One Pulse handle
mbed_official 340:28d1f895c6fe 1317 * @param OutputChannel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 1318 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1319 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 1320 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 1321 * @retval HAL status
mbed_official 340:28d1f895c6fe 1322 */
mbed_official 340:28d1f895c6fe 1323 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 340:28d1f895c6fe 1324 {
mbed_official 340:28d1f895c6fe 1325
mbed_official 340:28d1f895c6fe 1326 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1327 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 340:28d1f895c6fe 1328
mbed_official 340:28d1f895c6fe 1329 /* Disable the complementary One Pulse output */
mbed_official 340:28d1f895c6fe 1330 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 1331
mbed_official 340:28d1f895c6fe 1332 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 1333 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1334
mbed_official 340:28d1f895c6fe 1335 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 1336 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1337
mbed_official 340:28d1f895c6fe 1338 /* Return function status */
mbed_official 340:28d1f895c6fe 1339 return HAL_OK;
mbed_official 340:28d1f895c6fe 1340 }
mbed_official 340:28d1f895c6fe 1341
mbed_official 340:28d1f895c6fe 1342 /**
mbed_official 340:28d1f895c6fe 1343 * @brief Starts the TIM One Pulse signal generation in interrupt mode on the
mbed_official 340:28d1f895c6fe 1344 * complementary channel.
mbed_official 340:28d1f895c6fe 1345 * @param htim : TIM One Pulse handle
mbed_official 340:28d1f895c6fe 1346 * @param OutputChannel : TIM Channel to be enabled
mbed_official 340:28d1f895c6fe 1347 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1348 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 1349 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 1350 * @retval HAL status
mbed_official 340:28d1f895c6fe 1351 */
mbed_official 340:28d1f895c6fe 1352 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 340:28d1f895c6fe 1353 {
mbed_official 340:28d1f895c6fe 1354 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1355 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 340:28d1f895c6fe 1356
mbed_official 340:28d1f895c6fe 1357 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 340:28d1f895c6fe 1358 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 1359
mbed_official 340:28d1f895c6fe 1360 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 340:28d1f895c6fe 1361 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 340:28d1f895c6fe 1362
mbed_official 340:28d1f895c6fe 1363 /* Enable the complementary One Pulse output */
mbed_official 340:28d1f895c6fe 1364 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);
mbed_official 340:28d1f895c6fe 1365
mbed_official 340:28d1f895c6fe 1366 /* Enable the Main Ouput */
mbed_official 340:28d1f895c6fe 1367 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 340:28d1f895c6fe 1368
mbed_official 340:28d1f895c6fe 1369 /* Return function status */
mbed_official 340:28d1f895c6fe 1370 return HAL_OK;
mbed_official 340:28d1f895c6fe 1371 }
mbed_official 340:28d1f895c6fe 1372
mbed_official 340:28d1f895c6fe 1373 /**
mbed_official 340:28d1f895c6fe 1374 * @brief Stops the TIM One Pulse signal generation in interrupt mode on the
mbed_official 340:28d1f895c6fe 1375 * complementary channel.
mbed_official 340:28d1f895c6fe 1376 * @param htim : TIM One Pulse handle
mbed_official 340:28d1f895c6fe 1377 * @param OutputChannel : TIM Channel to be disabled
mbed_official 340:28d1f895c6fe 1378 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1379 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 340:28d1f895c6fe 1380 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 340:28d1f895c6fe 1381 * @retval HAL status
mbed_official 340:28d1f895c6fe 1382 */
mbed_official 340:28d1f895c6fe 1383 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 340:28d1f895c6fe 1384 {
mbed_official 340:28d1f895c6fe 1385 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1386 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 340:28d1f895c6fe 1387
mbed_official 340:28d1f895c6fe 1388 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 340:28d1f895c6fe 1389 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 340:28d1f895c6fe 1390
mbed_official 340:28d1f895c6fe 1391 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 340:28d1f895c6fe 1392 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 340:28d1f895c6fe 1393
mbed_official 340:28d1f895c6fe 1394 /* Disable the complementary One Pulse output */
mbed_official 340:28d1f895c6fe 1395 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);
mbed_official 340:28d1f895c6fe 1396
mbed_official 340:28d1f895c6fe 1397 /* Disable the Main Ouput */
mbed_official 340:28d1f895c6fe 1398 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1399
mbed_official 340:28d1f895c6fe 1400 /* Disable the Peripheral */
mbed_official 340:28d1f895c6fe 1401 __HAL_TIM_DISABLE(htim);
mbed_official 340:28d1f895c6fe 1402
mbed_official 340:28d1f895c6fe 1403 /* Return function status */
mbed_official 340:28d1f895c6fe 1404 return HAL_OK;
mbed_official 340:28d1f895c6fe 1405 }
mbed_official 340:28d1f895c6fe 1406
mbed_official 340:28d1f895c6fe 1407
mbed_official 340:28d1f895c6fe 1408
mbed_official 340:28d1f895c6fe 1409 /**
mbed_official 340:28d1f895c6fe 1410 * @}
mbed_official 340:28d1f895c6fe 1411 */
mbed_official 340:28d1f895c6fe 1412 /** @defgroup TIMEx_Exported_Functions_Group5 Peripheral Control functions
mbed_official 340:28d1f895c6fe 1413 * @brief Peripheral Control functions
mbed_official 340:28d1f895c6fe 1414 *
mbed_official 340:28d1f895c6fe 1415 @verbatim
mbed_official 340:28d1f895c6fe 1416 ==============================================================================
mbed_official 340:28d1f895c6fe 1417 ##### Peripheral Control functions #####
mbed_official 340:28d1f895c6fe 1418 ==============================================================================
mbed_official 340:28d1f895c6fe 1419 [..]
mbed_official 340:28d1f895c6fe 1420 This section provides functions allowing to:
mbed_official 340:28d1f895c6fe 1421 (+) Configure the commutation event in case of use of the Hall sensor interface.
mbed_official 340:28d1f895c6fe 1422 (+) Configure Complementary channels, break features and dead time.
mbed_official 340:28d1f895c6fe 1423 (+) Configure Master synchronization.
mbed_official 340:28d1f895c6fe 1424 (+) Configure timer remapping capabilities.
mbed_official 340:28d1f895c6fe 1425
mbed_official 340:28d1f895c6fe 1426 @endverbatim
mbed_official 340:28d1f895c6fe 1427 * @{
mbed_official 340:28d1f895c6fe 1428 */
mbed_official 340:28d1f895c6fe 1429 /**
mbed_official 340:28d1f895c6fe 1430 * @brief Configure the TIM commutation event sequence.
mbed_official 340:28d1f895c6fe 1431 * @note: this function is mandatory to use the commutation event in order to
mbed_official 340:28d1f895c6fe 1432 * update the configuration at each commutation detection on the TRGI input of the Timer,
mbed_official 340:28d1f895c6fe 1433 * the typical use of this feature is with the use of another Timer(interface Timer)
mbed_official 340:28d1f895c6fe 1434 * configured in Hall sensor interface, this interface Timer will generate the
mbed_official 340:28d1f895c6fe 1435 * commutation at its TRGO output (connected to Timer used in this function) each time
mbed_official 340:28d1f895c6fe 1436 * the TI1 of the Interface Timer detect a commutation at its input TI1.
mbed_official 340:28d1f895c6fe 1437 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1438 * @param InputTrigger : the Internal trigger corresponding to the Timer Interfacing with the Hall sensor
mbed_official 340:28d1f895c6fe 1439 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1440 * @arg TIM_TS_ITR0: Internal trigger 0 selected
mbed_official 340:28d1f895c6fe 1441 * @arg TIM_TS_ITR1: Internal trigger 1 selected
mbed_official 340:28d1f895c6fe 1442 * @arg TIM_TS_ITR2: Internal trigger 2 selected
mbed_official 340:28d1f895c6fe 1443 * @arg TIM_TS_ITR3: Internal trigger 3 selected
mbed_official 340:28d1f895c6fe 1444 * @arg TIM_TS_NONE: No trigger is needed
mbed_official 340:28d1f895c6fe 1445 * @param CommutationSource : the Commutation Event source
mbed_official 340:28d1f895c6fe 1446 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1447 * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
mbed_official 340:28d1f895c6fe 1448 * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
mbed_official 340:28d1f895c6fe 1449 * @retval HAL status
mbed_official 340:28d1f895c6fe 1450 */
mbed_official 340:28d1f895c6fe 1451 HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
mbed_official 340:28d1f895c6fe 1452 {
mbed_official 340:28d1f895c6fe 1453 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1454 assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 1455 assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
mbed_official 340:28d1f895c6fe 1456
mbed_official 340:28d1f895c6fe 1457 __HAL_LOCK(htim);
mbed_official 340:28d1f895c6fe 1458
mbed_official 340:28d1f895c6fe 1459 if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
mbed_official 340:28d1f895c6fe 1460 (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
mbed_official 340:28d1f895c6fe 1461 {
mbed_official 340:28d1f895c6fe 1462 /* Select the Input trigger */
mbed_official 340:28d1f895c6fe 1463 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 340:28d1f895c6fe 1464 htim->Instance->SMCR |= InputTrigger;
mbed_official 340:28d1f895c6fe 1465 }
mbed_official 340:28d1f895c6fe 1466
mbed_official 340:28d1f895c6fe 1467 /* Select the Capture Compare preload feature */
mbed_official 340:28d1f895c6fe 1468 htim->Instance->CR2 |= TIM_CR2_CCPC;
mbed_official 340:28d1f895c6fe 1469 /* Select the Commutation event source */
mbed_official 340:28d1f895c6fe 1470 htim->Instance->CR2 &= ~TIM_CR2_CCUS;
mbed_official 340:28d1f895c6fe 1471 htim->Instance->CR2 |= CommutationSource;
mbed_official 340:28d1f895c6fe 1472
mbed_official 340:28d1f895c6fe 1473 __HAL_UNLOCK(htim);
mbed_official 340:28d1f895c6fe 1474
mbed_official 340:28d1f895c6fe 1475 return HAL_OK;
mbed_official 340:28d1f895c6fe 1476 }
mbed_official 340:28d1f895c6fe 1477
mbed_official 340:28d1f895c6fe 1478 /**
mbed_official 340:28d1f895c6fe 1479 * @brief Configure the TIM commutation event sequence with interrupt.
mbed_official 340:28d1f895c6fe 1480 * @note: this function is mandatory to use the commutation event in order to
mbed_official 340:28d1f895c6fe 1481 * update the configuration at each commutation detection on the TRGI input of the Timer,
mbed_official 340:28d1f895c6fe 1482 * the typical use of this feature is with the use of another Timer(interface Timer)
mbed_official 340:28d1f895c6fe 1483 * configured in Hall sensor interface, this interface Timer will generate the
mbed_official 340:28d1f895c6fe 1484 * commutation at its TRGO output (connected to Timer used in this function) each time
mbed_official 340:28d1f895c6fe 1485 * the TI1 of the Interface Timer detect a commutation at its input TI1.
mbed_official 340:28d1f895c6fe 1486 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1487 * @param InputTrigger : the Internal trigger corresponding to the Timer Interfacing with the Hall sensor
mbed_official 340:28d1f895c6fe 1488 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1489 * @arg TIM_TS_ITR0: Internal trigger 0 selected
mbed_official 340:28d1f895c6fe 1490 * @arg TIM_TS_ITR1: Internal trigger 1 selected
mbed_official 340:28d1f895c6fe 1491 * @arg TIM_TS_ITR2: Internal trigger 2 selected
mbed_official 340:28d1f895c6fe 1492 * @arg TIM_TS_ITR3: Internal trigger 3 selected
mbed_official 340:28d1f895c6fe 1493 * @arg TIM_TS_NONE: No trigger is needed
mbed_official 340:28d1f895c6fe 1494 * @param CommutationSource : the Commutation Event source
mbed_official 340:28d1f895c6fe 1495 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1496 * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
mbed_official 340:28d1f895c6fe 1497 * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
mbed_official 340:28d1f895c6fe 1498 * @retval HAL status
mbed_official 340:28d1f895c6fe 1499 */
mbed_official 340:28d1f895c6fe 1500 HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
mbed_official 340:28d1f895c6fe 1501 {
mbed_official 340:28d1f895c6fe 1502 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1503 assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 1504 assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
mbed_official 340:28d1f895c6fe 1505
mbed_official 340:28d1f895c6fe 1506 __HAL_LOCK(htim);
mbed_official 340:28d1f895c6fe 1507
mbed_official 340:28d1f895c6fe 1508 if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
mbed_official 340:28d1f895c6fe 1509 (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
mbed_official 340:28d1f895c6fe 1510 {
mbed_official 340:28d1f895c6fe 1511 /* Select the Input trigger */
mbed_official 340:28d1f895c6fe 1512 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 340:28d1f895c6fe 1513 htim->Instance->SMCR |= InputTrigger;
mbed_official 340:28d1f895c6fe 1514 }
mbed_official 340:28d1f895c6fe 1515
mbed_official 340:28d1f895c6fe 1516 /* Select the Capture Compare preload feature */
mbed_official 340:28d1f895c6fe 1517 htim->Instance->CR2 |= TIM_CR2_CCPC;
mbed_official 340:28d1f895c6fe 1518 /* Select the Commutation event source */
mbed_official 340:28d1f895c6fe 1519 htim->Instance->CR2 &= ~TIM_CR2_CCUS;
mbed_official 340:28d1f895c6fe 1520 htim->Instance->CR2 |= CommutationSource;
mbed_official 340:28d1f895c6fe 1521
mbed_official 340:28d1f895c6fe 1522 /* Enable the Commutation Interrupt Request */
mbed_official 340:28d1f895c6fe 1523 __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM);
mbed_official 340:28d1f895c6fe 1524
mbed_official 340:28d1f895c6fe 1525 __HAL_UNLOCK(htim);
mbed_official 340:28d1f895c6fe 1526
mbed_official 340:28d1f895c6fe 1527 return HAL_OK;
mbed_official 340:28d1f895c6fe 1528 }
mbed_official 340:28d1f895c6fe 1529
mbed_official 340:28d1f895c6fe 1530 /**
mbed_official 340:28d1f895c6fe 1531 * @brief Configure the TIM commutation event sequence with DMA.
mbed_official 340:28d1f895c6fe 1532 * @note: this function is mandatory to use the commutation event in order to
mbed_official 340:28d1f895c6fe 1533 * update the configuration at each commutation detection on the TRGI input of the Timer,
mbed_official 340:28d1f895c6fe 1534 * the typical use of this feature is with the use of another Timer(interface Timer)
mbed_official 340:28d1f895c6fe 1535 * configured in Hall sensor interface, this interface Timer will generate the
mbed_official 340:28d1f895c6fe 1536 * commutation at its TRGO output (connected to Timer used in this function) each time
mbed_official 340:28d1f895c6fe 1537 * the TI1 of the Interface Timer detect a commutation at its input TI1.
mbed_official 340:28d1f895c6fe 1538 * @note: The user should configure the DMA in his own software, in This function only the COMDE bit is set
mbed_official 340:28d1f895c6fe 1539 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1540 * @param InputTrigger : the Internal trigger corresponding to the Timer Interfacing with the Hall sensor
mbed_official 340:28d1f895c6fe 1541 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1542 * @arg TIM_TS_ITR0: Internal trigger 0 selected
mbed_official 340:28d1f895c6fe 1543 * @arg TIM_TS_ITR1: Internal trigger 1 selected
mbed_official 340:28d1f895c6fe 1544 * @arg TIM_TS_ITR2: Internal trigger 2 selected
mbed_official 340:28d1f895c6fe 1545 * @arg TIM_TS_ITR3: Internal trigger 3 selected
mbed_official 340:28d1f895c6fe 1546 * @arg TIM_TS_NONE: No trigger is needed
mbed_official 340:28d1f895c6fe 1547 * @param CommutationSource : the Commutation Event source
mbed_official 340:28d1f895c6fe 1548 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1549 * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
mbed_official 340:28d1f895c6fe 1550 * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
mbed_official 340:28d1f895c6fe 1551 * @retval HAL status
mbed_official 340:28d1f895c6fe 1552 */
mbed_official 340:28d1f895c6fe 1553 HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
mbed_official 340:28d1f895c6fe 1554 {
mbed_official 340:28d1f895c6fe 1555 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1556 assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 1557 assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
mbed_official 340:28d1f895c6fe 1558
mbed_official 340:28d1f895c6fe 1559 __HAL_LOCK(htim);
mbed_official 340:28d1f895c6fe 1560
mbed_official 340:28d1f895c6fe 1561 if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
mbed_official 340:28d1f895c6fe 1562 (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
mbed_official 340:28d1f895c6fe 1563 {
mbed_official 340:28d1f895c6fe 1564 /* Select the Input trigger */
mbed_official 340:28d1f895c6fe 1565 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 340:28d1f895c6fe 1566 htim->Instance->SMCR |= InputTrigger;
mbed_official 340:28d1f895c6fe 1567 }
mbed_official 340:28d1f895c6fe 1568
mbed_official 340:28d1f895c6fe 1569 /* Select the Capture Compare preload feature */
mbed_official 340:28d1f895c6fe 1570 htim->Instance->CR2 |= TIM_CR2_CCPC;
mbed_official 340:28d1f895c6fe 1571 /* Select the Commutation event source */
mbed_official 340:28d1f895c6fe 1572 htim->Instance->CR2 &= ~TIM_CR2_CCUS;
mbed_official 340:28d1f895c6fe 1573 htim->Instance->CR2 |= CommutationSource;
mbed_official 340:28d1f895c6fe 1574
mbed_official 340:28d1f895c6fe 1575 /* Enable the Commutation DMA Request */
mbed_official 340:28d1f895c6fe 1576 /* Set the DMA Commutation Callback */
mbed_official 340:28d1f895c6fe 1577 htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = HAL_TIMEx_DMACommutationCplt;
mbed_official 340:28d1f895c6fe 1578 /* Set the DMA error callback */
mbed_official 340:28d1f895c6fe 1579 htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = HAL_TIM_DMAError;
mbed_official 340:28d1f895c6fe 1580
mbed_official 340:28d1f895c6fe 1581 /* Enable the Commutation DMA Request */
mbed_official 340:28d1f895c6fe 1582 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM);
mbed_official 340:28d1f895c6fe 1583
mbed_official 340:28d1f895c6fe 1584 __HAL_UNLOCK(htim);
mbed_official 340:28d1f895c6fe 1585
mbed_official 340:28d1f895c6fe 1586 return HAL_OK;
mbed_official 340:28d1f895c6fe 1587 }
mbed_official 340:28d1f895c6fe 1588
mbed_official 340:28d1f895c6fe 1589 /**
mbed_official 340:28d1f895c6fe 1590 * @brief Configures the TIM in master mode.
mbed_official 340:28d1f895c6fe 1591 * @param htim : TIM handle.
mbed_official 340:28d1f895c6fe 1592 * @param sMasterConfig : pointer to a TIM_MasterConfigTypeDef structure that
mbed_official 340:28d1f895c6fe 1593 * contains the selected trigger output (TRGO) and the Master/Slave
mbed_official 340:28d1f895c6fe 1594 * mode.
mbed_official 340:28d1f895c6fe 1595 * @retval HAL status
mbed_official 340:28d1f895c6fe 1596 */
mbed_official 340:28d1f895c6fe 1597 HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig)
mbed_official 340:28d1f895c6fe 1598 {
mbed_official 340:28d1f895c6fe 1599 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1600 assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 1601 assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
mbed_official 340:28d1f895c6fe 1602 assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
mbed_official 340:28d1f895c6fe 1603
mbed_official 340:28d1f895c6fe 1604 __HAL_LOCK(htim);
mbed_official 340:28d1f895c6fe 1605
mbed_official 340:28d1f895c6fe 1606 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 340:28d1f895c6fe 1607
mbed_official 340:28d1f895c6fe 1608 /* Reset the MMS Bits */
mbed_official 340:28d1f895c6fe 1609 htim->Instance->CR2 &= ~TIM_CR2_MMS;
mbed_official 340:28d1f895c6fe 1610 /* Select the TRGO source */
mbed_official 340:28d1f895c6fe 1611 htim->Instance->CR2 |= sMasterConfig->MasterOutputTrigger;
mbed_official 340:28d1f895c6fe 1612
mbed_official 340:28d1f895c6fe 1613 /* Reset the MSM Bit */
mbed_official 340:28d1f895c6fe 1614 htim->Instance->SMCR &= ~TIM_SMCR_MSM;
mbed_official 340:28d1f895c6fe 1615 /* Set or Reset the MSM Bit */
mbed_official 340:28d1f895c6fe 1616 htim->Instance->SMCR |= sMasterConfig->MasterSlaveMode;
mbed_official 340:28d1f895c6fe 1617
mbed_official 340:28d1f895c6fe 1618 htim->State = HAL_TIM_STATE_READY;
mbed_official 340:28d1f895c6fe 1619
mbed_official 340:28d1f895c6fe 1620 __HAL_UNLOCK(htim);
mbed_official 340:28d1f895c6fe 1621
mbed_official 340:28d1f895c6fe 1622 return HAL_OK;
mbed_official 340:28d1f895c6fe 1623 }
mbed_official 340:28d1f895c6fe 1624
mbed_official 340:28d1f895c6fe 1625 /**
mbed_official 340:28d1f895c6fe 1626 * @brief Configures the Break feature, dead time, Lock level, OSSI/OSSR State
mbed_official 340:28d1f895c6fe 1627 * and the AOE(automatic output enable).
mbed_official 340:28d1f895c6fe 1628 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1629 * @param sBreakDeadTimeConfig : pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
mbed_official 340:28d1f895c6fe 1630 * contains the BDTR Register configuration information for the TIM peripheral.
mbed_official 340:28d1f895c6fe 1631 * @retval HAL status
mbed_official 340:28d1f895c6fe 1632 */
mbed_official 340:28d1f895c6fe 1633 HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
mbed_official 340:28d1f895c6fe 1634 TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig)
mbed_official 340:28d1f895c6fe 1635 {
mbed_official 340:28d1f895c6fe 1636 /* Check the parameters */
mbed_official 340:28d1f895c6fe 1637 assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 1638 assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode));
mbed_official 340:28d1f895c6fe 1639 assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode));
mbed_official 340:28d1f895c6fe 1640 assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel));
mbed_official 340:28d1f895c6fe 1641 assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime));
mbed_official 340:28d1f895c6fe 1642 assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState));
mbed_official 340:28d1f895c6fe 1643 assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity));
mbed_official 340:28d1f895c6fe 1644 assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput));
mbed_official 340:28d1f895c6fe 1645
mbed_official 340:28d1f895c6fe 1646 /* Process Locked */
mbed_official 340:28d1f895c6fe 1647 __HAL_LOCK(htim);
mbed_official 340:28d1f895c6fe 1648
mbed_official 340:28d1f895c6fe 1649 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 340:28d1f895c6fe 1650
mbed_official 340:28d1f895c6fe 1651 /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State,
mbed_official 340:28d1f895c6fe 1652 the OSSI State, the dead time value and the Automatic Output Enable Bit */
mbed_official 340:28d1f895c6fe 1653 htim->Instance->BDTR = (uint32_t)sBreakDeadTimeConfig->OffStateRunMode |
mbed_official 340:28d1f895c6fe 1654 sBreakDeadTimeConfig->OffStateIDLEMode |
mbed_official 340:28d1f895c6fe 1655 sBreakDeadTimeConfig->LockLevel |
mbed_official 340:28d1f895c6fe 1656 sBreakDeadTimeConfig->DeadTime |
mbed_official 340:28d1f895c6fe 1657 sBreakDeadTimeConfig->BreakState |
mbed_official 340:28d1f895c6fe 1658 sBreakDeadTimeConfig->BreakPolarity |
mbed_official 340:28d1f895c6fe 1659 sBreakDeadTimeConfig->AutomaticOutput;
mbed_official 340:28d1f895c6fe 1660
mbed_official 340:28d1f895c6fe 1661
mbed_official 340:28d1f895c6fe 1662 htim->State = HAL_TIM_STATE_READY;
mbed_official 340:28d1f895c6fe 1663
mbed_official 340:28d1f895c6fe 1664 __HAL_UNLOCK(htim);
mbed_official 340:28d1f895c6fe 1665
mbed_official 340:28d1f895c6fe 1666 return HAL_OK;
mbed_official 340:28d1f895c6fe 1667 }
mbed_official 340:28d1f895c6fe 1668
mbed_official 340:28d1f895c6fe 1669 /**
mbed_official 340:28d1f895c6fe 1670 * @brief Configures the TIM14 Remapping input capabilities.
mbed_official 340:28d1f895c6fe 1671 * @param htim : TIM handle.
mbed_official 340:28d1f895c6fe 1672 * @param Remap : specifies the TIM remapping source.
mbed_official 340:28d1f895c6fe 1673 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1674 * @arg TIM_TIM14_GPIO: TIM14 TI1 is connected to GPIO
mbed_official 340:28d1f895c6fe 1675 * @arg TIM_TIM14_RTC: TIM14 TI1 is connected to RTC_clock
mbed_official 340:28d1f895c6fe 1676 * @arg TIM_TIM14_HSE: TIM14 TI1 is connected to HSE/32
mbed_official 340:28d1f895c6fe 1677 * @arg TIM_TIM14_MCO: TIM14 TI1 is connected to MCO
mbed_official 340:28d1f895c6fe 1678 * @retval HAL status
mbed_official 340:28d1f895c6fe 1679 */
mbed_official 340:28d1f895c6fe 1680 HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)
mbed_official 340:28d1f895c6fe 1681 {
mbed_official 340:28d1f895c6fe 1682 __HAL_LOCK(htim);
mbed_official 340:28d1f895c6fe 1683
mbed_official 340:28d1f895c6fe 1684 /* Check parameters */
mbed_official 340:28d1f895c6fe 1685 assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));
mbed_official 340:28d1f895c6fe 1686 assert_param(IS_TIM_REMAP(Remap));
mbed_official 340:28d1f895c6fe 1687
mbed_official 340:28d1f895c6fe 1688 /* Set the Timer remapping configuration */
mbed_official 340:28d1f895c6fe 1689 htim->Instance->OR = Remap;
mbed_official 340:28d1f895c6fe 1690
mbed_official 340:28d1f895c6fe 1691 htim->State = HAL_TIM_STATE_READY;
mbed_official 340:28d1f895c6fe 1692
mbed_official 340:28d1f895c6fe 1693 __HAL_UNLOCK(htim);
mbed_official 340:28d1f895c6fe 1694
mbed_official 340:28d1f895c6fe 1695 return HAL_OK;
mbed_official 340:28d1f895c6fe 1696 }
mbed_official 340:28d1f895c6fe 1697
mbed_official 340:28d1f895c6fe 1698 /**
mbed_official 340:28d1f895c6fe 1699 * @}
mbed_official 340:28d1f895c6fe 1700 */
mbed_official 340:28d1f895c6fe 1701
mbed_official 340:28d1f895c6fe 1702 /** @defgroup TIMEx_Exported_Functions_Group6 Extension Callbacks functions
mbed_official 340:28d1f895c6fe 1703 * @brief Extension Callbacks functions
mbed_official 340:28d1f895c6fe 1704 *
mbed_official 340:28d1f895c6fe 1705 @verbatim
mbed_official 340:28d1f895c6fe 1706 ==============================================================================
mbed_official 340:28d1f895c6fe 1707 ##### Extension Callbacks functions #####
mbed_official 340:28d1f895c6fe 1708 ==============================================================================
mbed_official 340:28d1f895c6fe 1709 [..]
mbed_official 340:28d1f895c6fe 1710 This section provides Extension TIM callback functions:
mbed_official 340:28d1f895c6fe 1711 (+) Timer Commutation callback
mbed_official 340:28d1f895c6fe 1712 (+) Timer Break callback
mbed_official 340:28d1f895c6fe 1713
mbed_official 340:28d1f895c6fe 1714 @endverbatim
mbed_official 340:28d1f895c6fe 1715 * @{
mbed_official 340:28d1f895c6fe 1716 */
mbed_official 340:28d1f895c6fe 1717
mbed_official 340:28d1f895c6fe 1718 /**
mbed_official 340:28d1f895c6fe 1719 * @brief Hall commutation changed callback in non blocking mode
mbed_official 340:28d1f895c6fe 1720 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1721 * @retval None
mbed_official 340:28d1f895c6fe 1722 */
mbed_official 340:28d1f895c6fe 1723 __weak void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 1724 {
mbed_official 340:28d1f895c6fe 1725 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 340:28d1f895c6fe 1726 the HAL_TIMEx_CommutationCallback could be implemented in the user file
mbed_official 340:28d1f895c6fe 1727 */
mbed_official 340:28d1f895c6fe 1728 }
mbed_official 340:28d1f895c6fe 1729
mbed_official 340:28d1f895c6fe 1730 /**
mbed_official 340:28d1f895c6fe 1731 * @brief Hall Break detection callback in non blocking mode
mbed_official 340:28d1f895c6fe 1732 * @param htim : TIM handle
mbed_official 340:28d1f895c6fe 1733 * @retval None
mbed_official 340:28d1f895c6fe 1734 */
mbed_official 340:28d1f895c6fe 1735 __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 1736 {
mbed_official 340:28d1f895c6fe 1737 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 340:28d1f895c6fe 1738 the HAL_TIMEx_BreakCallback could be implemented in the user file
mbed_official 340:28d1f895c6fe 1739 */
mbed_official 340:28d1f895c6fe 1740 }
mbed_official 340:28d1f895c6fe 1741
mbed_official 340:28d1f895c6fe 1742 /**
mbed_official 340:28d1f895c6fe 1743 * @brief TIM DMA Commutation callback.
mbed_official 340:28d1f895c6fe 1744 * @param hdma : pointer to DMA handle.
mbed_official 340:28d1f895c6fe 1745 * @retval None
mbed_official 340:28d1f895c6fe 1746 */
mbed_official 340:28d1f895c6fe 1747 void HAL_TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma)
mbed_official 340:28d1f895c6fe 1748 {
mbed_official 340:28d1f895c6fe 1749 TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 340:28d1f895c6fe 1750
mbed_official 340:28d1f895c6fe 1751 htim->State= HAL_TIM_STATE_READY;
mbed_official 340:28d1f895c6fe 1752
mbed_official 340:28d1f895c6fe 1753 HAL_TIMEx_CommutationCallback(htim);
mbed_official 340:28d1f895c6fe 1754 }
mbed_official 340:28d1f895c6fe 1755
mbed_official 340:28d1f895c6fe 1756 /**
mbed_official 340:28d1f895c6fe 1757 * @}
mbed_official 340:28d1f895c6fe 1758 */
mbed_official 340:28d1f895c6fe 1759
mbed_official 340:28d1f895c6fe 1760 /** @defgroup TIMEx_Exported_Functions_Group7 Extension Peripheral State functions
mbed_official 340:28d1f895c6fe 1761 * @brief Extension Peripheral State functions
mbed_official 340:28d1f895c6fe 1762 *
mbed_official 340:28d1f895c6fe 1763 @verbatim
mbed_official 340:28d1f895c6fe 1764 ==============================================================================
mbed_official 340:28d1f895c6fe 1765 ##### Extension Peripheral State functions #####
mbed_official 340:28d1f895c6fe 1766 ==============================================================================
mbed_official 340:28d1f895c6fe 1767 [..]
mbed_official 340:28d1f895c6fe 1768 This subsection permit to get in run-time the status of the peripheral
mbed_official 340:28d1f895c6fe 1769 and the data flow.
mbed_official 340:28d1f895c6fe 1770
mbed_official 340:28d1f895c6fe 1771 @endverbatim
mbed_official 340:28d1f895c6fe 1772 * @{
mbed_official 340:28d1f895c6fe 1773 */
mbed_official 340:28d1f895c6fe 1774
mbed_official 340:28d1f895c6fe 1775 /**
mbed_official 340:28d1f895c6fe 1776 * @brief Return the TIM Hall Sensor interface state
mbed_official 340:28d1f895c6fe 1777 * @param htim : TIM Hall Sensor handle
mbed_official 340:28d1f895c6fe 1778 * @retval HAL state
mbed_official 340:28d1f895c6fe 1779 */
mbed_official 340:28d1f895c6fe 1780 HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)
mbed_official 340:28d1f895c6fe 1781 {
mbed_official 340:28d1f895c6fe 1782 return htim->State;
mbed_official 340:28d1f895c6fe 1783 }
mbed_official 340:28d1f895c6fe 1784
mbed_official 340:28d1f895c6fe 1785 /**
mbed_official 340:28d1f895c6fe 1786 * @}
mbed_official 340:28d1f895c6fe 1787 */
mbed_official 340:28d1f895c6fe 1788
mbed_official 340:28d1f895c6fe 1789 /**
mbed_official 340:28d1f895c6fe 1790 * @}
mbed_official 340:28d1f895c6fe 1791 */
mbed_official 340:28d1f895c6fe 1792
mbed_official 340:28d1f895c6fe 1793 /** @addtogroup TIMEx_Private_Functions
mbed_official 340:28d1f895c6fe 1794 * @{
mbed_official 340:28d1f895c6fe 1795 */
mbed_official 340:28d1f895c6fe 1796
mbed_official 340:28d1f895c6fe 1797 /**
mbed_official 340:28d1f895c6fe 1798 * @brief Enables or disables the TIM Capture Compare Channel xN.
mbed_official 340:28d1f895c6fe 1799 * @param TIMx to select the TIM peripheral
mbed_official 340:28d1f895c6fe 1800 * @param Channel : specifies the TIM Channel
mbed_official 340:28d1f895c6fe 1801 * This parameter can be one of the following values:
mbed_official 340:28d1f895c6fe 1802 * @arg TIM_Channel_1: TIM Channel 1
mbed_official 340:28d1f895c6fe 1803 * @arg TIM_Channel_2: TIM Channel 2
mbed_official 340:28d1f895c6fe 1804 * @arg TIM_Channel_3: TIM Channel 3
mbed_official 340:28d1f895c6fe 1805 * @param ChannelNState : specifies the TIM Channel CCxNE bit new state.
mbed_official 340:28d1f895c6fe 1806 * This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable.
mbed_official 340:28d1f895c6fe 1807 * @retval None
mbed_official 340:28d1f895c6fe 1808 */
mbed_official 340:28d1f895c6fe 1809 static void TIM_CCxNChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelNState)
mbed_official 340:28d1f895c6fe 1810 {
mbed_official 340:28d1f895c6fe 1811 uint32_t tmp = 0;
mbed_official 340:28d1f895c6fe 1812
mbed_official 340:28d1f895c6fe 1813 tmp = TIM_CCER_CC1NE << Channel;
mbed_official 340:28d1f895c6fe 1814
mbed_official 340:28d1f895c6fe 1815 /* Reset the CCxNE Bit */
mbed_official 340:28d1f895c6fe 1816 TIMx->CCER &= ~tmp;
mbed_official 340:28d1f895c6fe 1817
mbed_official 340:28d1f895c6fe 1818 /* Set or reset the CCxNE Bit */
mbed_official 340:28d1f895c6fe 1819 TIMx->CCER |= (uint32_t)(ChannelNState << Channel);
mbed_official 340:28d1f895c6fe 1820 }
mbed_official 340:28d1f895c6fe 1821
mbed_official 340:28d1f895c6fe 1822 /**
mbed_official 340:28d1f895c6fe 1823 * @}
mbed_official 340:28d1f895c6fe 1824 */
mbed_official 340:28d1f895c6fe 1825
mbed_official 340:28d1f895c6fe 1826 #endif /* HAL_TIM_MODULE_ENABLED */
mbed_official 340:28d1f895c6fe 1827 /**
mbed_official 340:28d1f895c6fe 1828 * @}
mbed_official 340:28d1f895c6fe 1829 */
mbed_official 340:28d1f895c6fe 1830
mbed_official 340:28d1f895c6fe 1831 /**
mbed_official 340:28d1f895c6fe 1832 * @}
mbed_official 340:28d1f895c6fe 1833 */
mbed_official 340:28d1f895c6fe 1834
mbed_official 340:28d1f895c6fe 1835 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/