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:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Parent:
573:ad23fe03a082
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 573:ad23fe03a082 1 /**
mbed_official 573:ad23fe03a082 2 ******************************************************************************
mbed_official 573:ad23fe03a082 3 * @file stm32f7xx_hal_tim_ex.c
mbed_official 573:ad23fe03a082 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.1
mbed_official 610:813dcc80987e 6 * @date 25-June-2015
mbed_official 573:ad23fe03a082 7 * @brief TIM HAL module driver.
mbed_official 573:ad23fe03a082 8 * This file provides firmware functions to manage the following
mbed_official 573:ad23fe03a082 9 * functionalities of the Timer extension peripheral:
mbed_official 573:ad23fe03a082 10 * + Time Hall Sensor Interface Initialization
mbed_official 573:ad23fe03a082 11 * + Time Hall Sensor Interface Start
mbed_official 573:ad23fe03a082 12 * + Time Complementary signal bread and dead time configuration
mbed_official 573:ad23fe03a082 13 * + Time Master and Slave synchronization configuration
mbed_official 573:ad23fe03a082 14 * + Time Output Compare/PWM Channel Configuration (for channels 5 and 6)
mbed_official 573:ad23fe03a082 15 * + Time OCRef clear configuration
mbed_official 573:ad23fe03a082 16 * + Timer remapping capabilities configuration
mbed_official 573:ad23fe03a082 17 @verbatim
mbed_official 573:ad23fe03a082 18 ==============================================================================
mbed_official 573:ad23fe03a082 19 ##### TIMER Extended features #####
mbed_official 573:ad23fe03a082 20 ==============================================================================
mbed_official 573:ad23fe03a082 21 [..]
mbed_official 573:ad23fe03a082 22 The Timer Extension features include:
mbed_official 573:ad23fe03a082 23 (#) Complementary outputs with programmable dead-time for :
mbed_official 573:ad23fe03a082 24 (++) Input Capture
mbed_official 573:ad23fe03a082 25 (++) Output Compare
mbed_official 573:ad23fe03a082 26 (++) PWM generation (Edge and Center-aligned Mode)
mbed_official 573:ad23fe03a082 27 (++) One-pulse mode output
mbed_official 573:ad23fe03a082 28 (#) Synchronization circuit to control the timer with external signals and to
mbed_official 573:ad23fe03a082 29 interconnect several timers together.
mbed_official 573:ad23fe03a082 30 (#) Break input to put the timer output signals in reset state or in a known state.
mbed_official 573:ad23fe03a082 31 (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for
mbed_official 573:ad23fe03a082 32 positioning purposes
mbed_official 573:ad23fe03a082 33
mbed_official 573:ad23fe03a082 34 ##### How to use this driver #####
mbed_official 573:ad23fe03a082 35 ==============================================================================
mbed_official 573:ad23fe03a082 36 [..]
mbed_official 573:ad23fe03a082 37 (#) Initialize the TIM low level resources by implementing the following functions
mbed_official 573:ad23fe03a082 38 depending from feature used :
mbed_official 573:ad23fe03a082 39 (++) Complementary Output Compare : HAL_TIM_OC_MspInit()
mbed_official 573:ad23fe03a082 40 (++) Complementary PWM generation : HAL_TIM_PWM_MspInit()
mbed_official 573:ad23fe03a082 41 (++) Complementary One-pulse mode output : HAL_TIM_OnePulse_MspInit()
mbed_official 573:ad23fe03a082 42 (++) Hall Sensor output : HAL_TIM_HallSensor_MspInit()
mbed_official 573:ad23fe03a082 43
mbed_official 573:ad23fe03a082 44 (#) Initialize the TIM low level resources :
mbed_official 573:ad23fe03a082 45 (##) Enable the TIM interface clock using __TIMx_CLK_ENABLE();
mbed_official 573:ad23fe03a082 46 (##) TIM pins configuration
mbed_official 573:ad23fe03a082 47 (+++) Enable the clock for the TIM GPIOs using the following function:
mbed_official 573:ad23fe03a082 48 __GPIOx_CLK_ENABLE();
mbed_official 573:ad23fe03a082 49 (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init();
mbed_official 573:ad23fe03a082 50
mbed_official 573:ad23fe03a082 51 (#) The external Clock can be configured, if needed (the default clock is the
mbed_official 573:ad23fe03a082 52 internal clock from the APBx), using the following function:
mbed_official 573:ad23fe03a082 53 HAL_TIM_ConfigClockSource, the clock configuration should be done before
mbed_official 573:ad23fe03a082 54 any start function.
mbed_official 573:ad23fe03a082 55
mbed_official 573:ad23fe03a082 56 (#) Configure the TIM in the desired functioning mode using one of the
mbed_official 573:ad23fe03a082 57 initialization function of this driver:
mbed_official 573:ad23fe03a082 58 (++) HAL_TIMEx_HallSensor_Init and HAL_TIMEx_ConfigCommutationEvent: to use the
mbed_official 573:ad23fe03a082 59 Timer Hall Sensor Interface and the commutation event with the corresponding
mbed_official 573:ad23fe03a082 60 Interrupt and DMA request if needed (Note that One Timer is used to interface
mbed_official 573:ad23fe03a082 61 with the Hall sensor Interface and another Timer should be used to use
mbed_official 573:ad23fe03a082 62 the commutation event).
mbed_official 573:ad23fe03a082 63
mbed_official 573:ad23fe03a082 64 (#) Activate the TIM peripheral using one of the start functions:
mbed_official 573:ad23fe03a082 65 (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), HAL_TIMEx_OC_Start_IT()
mbed_official 573:ad23fe03a082 66 (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), HAL_TIMEx_PWMN_Start_IT()
mbed_official 573:ad23fe03a082 67 (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT()
mbed_official 573:ad23fe03a082 68 (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(), HAL_TIMEx_HallSensor_Start_IT().
mbed_official 573:ad23fe03a082 69
mbed_official 573:ad23fe03a082 70
mbed_official 573:ad23fe03a082 71 @endverbatim
mbed_official 573:ad23fe03a082 72 ******************************************************************************
mbed_official 573:ad23fe03a082 73 * @attention
mbed_official 573:ad23fe03a082 74 *
mbed_official 573:ad23fe03a082 75 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 573:ad23fe03a082 76 *
mbed_official 573:ad23fe03a082 77 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 573:ad23fe03a082 78 * are permitted provided that the following conditions are met:
mbed_official 573:ad23fe03a082 79 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 573:ad23fe03a082 80 * this list of conditions and the following disclaimer.
mbed_official 573:ad23fe03a082 81 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 573:ad23fe03a082 82 * this list of conditions and the following disclaimer in the documentation
mbed_official 573:ad23fe03a082 83 * and/or other materials provided with the distribution.
mbed_official 573:ad23fe03a082 84 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 573:ad23fe03a082 85 * may be used to endorse or promote products derived from this software
mbed_official 573:ad23fe03a082 86 * without specific prior written permission.
mbed_official 573:ad23fe03a082 87 *
mbed_official 573:ad23fe03a082 88 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 573:ad23fe03a082 89 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 573:ad23fe03a082 90 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 573:ad23fe03a082 91 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 573:ad23fe03a082 92 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 573:ad23fe03a082 93 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 573:ad23fe03a082 94 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 573:ad23fe03a082 95 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 573:ad23fe03a082 96 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 573:ad23fe03a082 97 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 573:ad23fe03a082 98 *
mbed_official 573:ad23fe03a082 99 ******************************************************************************
mbed_official 573:ad23fe03a082 100 */
mbed_official 573:ad23fe03a082 101
mbed_official 573:ad23fe03a082 102 /* Includes ------------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 103 #include "stm32f7xx_hal.h"
mbed_official 573:ad23fe03a082 104
mbed_official 573:ad23fe03a082 105 /** @addtogroup STM32F7xx_HAL_Driver
mbed_official 573:ad23fe03a082 106 * @{
mbed_official 573:ad23fe03a082 107 */
mbed_official 573:ad23fe03a082 108
mbed_official 573:ad23fe03a082 109 /** @defgroup TIMEx TIMEx
mbed_official 573:ad23fe03a082 110 * @brief TIM Extended HAL module driver
mbed_official 573:ad23fe03a082 111 * @{
mbed_official 573:ad23fe03a082 112 */
mbed_official 573:ad23fe03a082 113
mbed_official 573:ad23fe03a082 114 #ifdef HAL_TIM_MODULE_ENABLED
mbed_official 573:ad23fe03a082 115
mbed_official 573:ad23fe03a082 116 /* Private typedef -----------------------------------------------------------*/
mbed_official 573:ad23fe03a082 117 /* Private define ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 118 #define BDTR_BKF_SHIFT (16)
mbed_official 573:ad23fe03a082 119 #define BDTR_BK2F_SHIFT (20)
mbed_official 573:ad23fe03a082 120 /* Private macro -------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 121 /* Private variables ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 122 /* Private function prototypes -----------------------------------------------*/
mbed_official 573:ad23fe03a082 123 /** @addtogroup TIMEx_Private_Functions
mbed_official 573:ad23fe03a082 124 * @{
mbed_official 573:ad23fe03a082 125 */
mbed_official 573:ad23fe03a082 126 static void TIM_CCxNChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelNState);
mbed_official 573:ad23fe03a082 127 static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
mbed_official 573:ad23fe03a082 128 static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
mbed_official 573:ad23fe03a082 129 /**
mbed_official 573:ad23fe03a082 130 * @}
mbed_official 573:ad23fe03a082 131 */
mbed_official 573:ad23fe03a082 132 /* Private functions ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 133
mbed_official 573:ad23fe03a082 134 /** @defgroup TIMEx_Exported_Functions TIMEx Exported Functions
mbed_official 573:ad23fe03a082 135 * @{
mbed_official 573:ad23fe03a082 136 */
mbed_official 573:ad23fe03a082 137
mbed_official 573:ad23fe03a082 138 /** @defgroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions
mbed_official 573:ad23fe03a082 139 * @brief Timer Hall Sensor functions
mbed_official 573:ad23fe03a082 140 *
mbed_official 573:ad23fe03a082 141 @verbatim
mbed_official 573:ad23fe03a082 142 ==============================================================================
mbed_official 573:ad23fe03a082 143 ##### Timer Hall Sensor functions #####
mbed_official 573:ad23fe03a082 144 ==============================================================================
mbed_official 573:ad23fe03a082 145 [..]
mbed_official 573:ad23fe03a082 146 This section provides functions allowing to:
mbed_official 573:ad23fe03a082 147 (+) Initialize and configure TIM HAL Sensor.
mbed_official 573:ad23fe03a082 148 (+) De-initialize TIM HAL Sensor.
mbed_official 573:ad23fe03a082 149 (+) Start the Hall Sensor Interface.
mbed_official 573:ad23fe03a082 150 (+) Stop the Hall Sensor Interface.
mbed_official 573:ad23fe03a082 151 (+) Start the Hall Sensor Interface and enable interrupts.
mbed_official 573:ad23fe03a082 152 (+) Stop the Hall Sensor Interface and disable interrupts.
mbed_official 573:ad23fe03a082 153 (+) Start the Hall Sensor Interface and enable DMA transfers.
mbed_official 573:ad23fe03a082 154 (+) Stop the Hall Sensor Interface and disable DMA transfers.
mbed_official 573:ad23fe03a082 155
mbed_official 573:ad23fe03a082 156 @endverbatim
mbed_official 573:ad23fe03a082 157 * @{
mbed_official 573:ad23fe03a082 158 */
mbed_official 573:ad23fe03a082 159 /**
mbed_official 573:ad23fe03a082 160 * @brief Initializes the TIM Hall Sensor Interface and create the associated handle.
mbed_official 573:ad23fe03a082 161 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 162 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 163 * @param sConfig: TIM Hall Sensor configuration structure
mbed_official 573:ad23fe03a082 164 * @retval HAL status
mbed_official 573:ad23fe03a082 165 */
mbed_official 573:ad23fe03a082 166 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef* sConfig)
mbed_official 573:ad23fe03a082 167 {
mbed_official 573:ad23fe03a082 168 TIM_OC_InitTypeDef OC_Config;
mbed_official 573:ad23fe03a082 169
mbed_official 573:ad23fe03a082 170 /* Check the TIM handle allocation */
mbed_official 573:ad23fe03a082 171 if(htim == NULL)
mbed_official 573:ad23fe03a082 172 {
mbed_official 573:ad23fe03a082 173 return HAL_ERROR;
mbed_official 573:ad23fe03a082 174 }
mbed_official 573:ad23fe03a082 175
mbed_official 573:ad23fe03a082 176 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 177 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
mbed_official 573:ad23fe03a082 178 assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
mbed_official 573:ad23fe03a082 179 assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
mbed_official 573:ad23fe03a082 180 assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
mbed_official 573:ad23fe03a082 181 assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
mbed_official 573:ad23fe03a082 182
mbed_official 573:ad23fe03a082 183 /* Set the TIM state */
mbed_official 573:ad23fe03a082 184 htim->State= HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 185
mbed_official 573:ad23fe03a082 186 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
mbed_official 573:ad23fe03a082 187 HAL_TIMEx_HallSensor_MspInit(htim);
mbed_official 573:ad23fe03a082 188
mbed_official 573:ad23fe03a082 189 /* Configure the Time base in the Encoder Mode */
mbed_official 573:ad23fe03a082 190 TIM_Base_SetConfig(htim->Instance, &htim->Init);
mbed_official 573:ad23fe03a082 191
mbed_official 573:ad23fe03a082 192 /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the Hall sensor */
mbed_official 573:ad23fe03a082 193 TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter);
mbed_official 573:ad23fe03a082 194
mbed_official 573:ad23fe03a082 195 /* Reset the IC1PSC Bits */
mbed_official 573:ad23fe03a082 196 htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
mbed_official 573:ad23fe03a082 197 /* Set the IC1PSC value */
mbed_official 573:ad23fe03a082 198 htim->Instance->CCMR1 |= sConfig->IC1Prescaler;
mbed_official 573:ad23fe03a082 199
mbed_official 573:ad23fe03a082 200 /* Enable the Hall sensor interface (XOR function of the three inputs) */
mbed_official 573:ad23fe03a082 201 htim->Instance->CR2 |= TIM_CR2_TI1S;
mbed_official 573:ad23fe03a082 202
mbed_official 573:ad23fe03a082 203 /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */
mbed_official 573:ad23fe03a082 204 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 573:ad23fe03a082 205 htim->Instance->SMCR |= TIM_TS_TI1F_ED;
mbed_official 573:ad23fe03a082 206
mbed_official 573:ad23fe03a082 207 /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */
mbed_official 573:ad23fe03a082 208 htim->Instance->SMCR &= ~TIM_SMCR_SMS;
mbed_official 573:ad23fe03a082 209 htim->Instance->SMCR |= TIM_SLAVEMODE_RESET;
mbed_official 573:ad23fe03a082 210
mbed_official 573:ad23fe03a082 211 /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/
mbed_official 573:ad23fe03a082 212 OC_Config.OCFastMode = TIM_OCFAST_DISABLE;
mbed_official 573:ad23fe03a082 213 OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET;
mbed_official 573:ad23fe03a082 214 OC_Config.OCMode = TIM_OCMODE_PWM2;
mbed_official 573:ad23fe03a082 215 OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET;
mbed_official 573:ad23fe03a082 216 OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH;
mbed_official 573:ad23fe03a082 217 OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH;
mbed_official 573:ad23fe03a082 218 OC_Config.Pulse = sConfig->Commutation_Delay;
mbed_official 573:ad23fe03a082 219
mbed_official 573:ad23fe03a082 220 TIM_OC2_SetConfig(htim->Instance, &OC_Config);
mbed_official 573:ad23fe03a082 221
mbed_official 573:ad23fe03a082 222 /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2
mbed_official 573:ad23fe03a082 223 register to 101 */
mbed_official 573:ad23fe03a082 224 htim->Instance->CR2 &= ~TIM_CR2_MMS;
mbed_official 573:ad23fe03a082 225 htim->Instance->CR2 |= TIM_TRGO_OC2REF;
mbed_official 573:ad23fe03a082 226
mbed_official 573:ad23fe03a082 227 /* Initialize the TIM state*/
mbed_official 573:ad23fe03a082 228 htim->State= HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 229
mbed_official 573:ad23fe03a082 230 return HAL_OK;
mbed_official 573:ad23fe03a082 231 }
mbed_official 573:ad23fe03a082 232
mbed_official 573:ad23fe03a082 233 /**
mbed_official 573:ad23fe03a082 234 * @brief DeInitializes the TIM Hall Sensor interface
mbed_official 573:ad23fe03a082 235 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 236 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 237 * @retval HAL status
mbed_official 573:ad23fe03a082 238 */
mbed_official 573:ad23fe03a082 239 HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 240 {
mbed_official 573:ad23fe03a082 241 /* Check the parameters */
mbed_official 573:ad23fe03a082 242 assert_param(IS_TIM_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 243
mbed_official 573:ad23fe03a082 244 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 245
mbed_official 573:ad23fe03a082 246 /* Disable the TIM Peripheral Clock */
mbed_official 573:ad23fe03a082 247 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 248
mbed_official 573:ad23fe03a082 249 /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
mbed_official 573:ad23fe03a082 250 HAL_TIMEx_HallSensor_MspDeInit(htim);
mbed_official 573:ad23fe03a082 251
mbed_official 573:ad23fe03a082 252 /* Change TIM state */
mbed_official 573:ad23fe03a082 253 htim->State = HAL_TIM_STATE_RESET;
mbed_official 573:ad23fe03a082 254
mbed_official 573:ad23fe03a082 255 /* Release Lock */
mbed_official 573:ad23fe03a082 256 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 257
mbed_official 573:ad23fe03a082 258 return HAL_OK;
mbed_official 573:ad23fe03a082 259 }
mbed_official 573:ad23fe03a082 260
mbed_official 573:ad23fe03a082 261 /**
mbed_official 573:ad23fe03a082 262 * @brief Initializes the TIM Hall Sensor MSP.
mbed_official 573:ad23fe03a082 263 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 264 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 265 * @retval None
mbed_official 573:ad23fe03a082 266 */
mbed_official 573:ad23fe03a082 267 __weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 268 {
mbed_official 573:ad23fe03a082 269 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 270 the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file
mbed_official 573:ad23fe03a082 271 */
mbed_official 573:ad23fe03a082 272 }
mbed_official 573:ad23fe03a082 273
mbed_official 573:ad23fe03a082 274 /**
mbed_official 573:ad23fe03a082 275 * @brief DeInitializes TIM Hall Sensor MSP.
mbed_official 573:ad23fe03a082 276 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 277 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 278 * @retval None
mbed_official 573:ad23fe03a082 279 */
mbed_official 573:ad23fe03a082 280 __weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 281 {
mbed_official 573:ad23fe03a082 282 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 283 the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file
mbed_official 573:ad23fe03a082 284 */
mbed_official 573:ad23fe03a082 285 }
mbed_official 573:ad23fe03a082 286
mbed_official 573:ad23fe03a082 287 /**
mbed_official 573:ad23fe03a082 288 * @brief Starts the TIM Hall Sensor Interface.
mbed_official 573:ad23fe03a082 289 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 290 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 291 * @retval HAL status
mbed_official 573:ad23fe03a082 292 */
mbed_official 573:ad23fe03a082 293 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 294 {
mbed_official 573:ad23fe03a082 295 /* Check the parameters */
mbed_official 573:ad23fe03a082 296 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 297
mbed_official 573:ad23fe03a082 298 /* Enable the Input Capture channels 1
mbed_official 573:ad23fe03a082 299 (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 573:ad23fe03a082 300 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 573:ad23fe03a082 301
mbed_official 573:ad23fe03a082 302 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 303 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 304
mbed_official 573:ad23fe03a082 305 /* Return function status */
mbed_official 573:ad23fe03a082 306 return HAL_OK;
mbed_official 573:ad23fe03a082 307 }
mbed_official 573:ad23fe03a082 308
mbed_official 573:ad23fe03a082 309 /**
mbed_official 573:ad23fe03a082 310 * @brief Stops the TIM Hall sensor Interface.
mbed_official 573:ad23fe03a082 311 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 312 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 313 * @retval HAL status
mbed_official 573:ad23fe03a082 314 */
mbed_official 573:ad23fe03a082 315 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 316 {
mbed_official 573:ad23fe03a082 317 /* Check the parameters */
mbed_official 573:ad23fe03a082 318 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 319
mbed_official 573:ad23fe03a082 320 /* Disable the Input Capture channels 1, 2 and 3
mbed_official 573:ad23fe03a082 321 (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 573:ad23fe03a082 322 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 573:ad23fe03a082 323
mbed_official 573:ad23fe03a082 324 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 325 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 326
mbed_official 573:ad23fe03a082 327 /* Return function status */
mbed_official 573:ad23fe03a082 328 return HAL_OK;
mbed_official 573:ad23fe03a082 329 }
mbed_official 573:ad23fe03a082 330
mbed_official 573:ad23fe03a082 331 /**
mbed_official 573:ad23fe03a082 332 * @brief Starts the TIM Hall Sensor Interface in interrupt mode.
mbed_official 573:ad23fe03a082 333 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 334 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 335 * @retval HAL status
mbed_official 573:ad23fe03a082 336 */
mbed_official 573:ad23fe03a082 337 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 338 {
mbed_official 573:ad23fe03a082 339 /* Check the parameters */
mbed_official 573:ad23fe03a082 340 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 341
mbed_official 573:ad23fe03a082 342 /* Enable the capture compare Interrupts 1 event */
mbed_official 573:ad23fe03a082 343 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 344
mbed_official 573:ad23fe03a082 345 /* Enable the Input Capture channels 1
mbed_official 573:ad23fe03a082 346 (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 573:ad23fe03a082 347 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 573:ad23fe03a082 348
mbed_official 573:ad23fe03a082 349 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 350 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 351
mbed_official 573:ad23fe03a082 352 /* Return function status */
mbed_official 573:ad23fe03a082 353 return HAL_OK;
mbed_official 573:ad23fe03a082 354 }
mbed_official 573:ad23fe03a082 355
mbed_official 573:ad23fe03a082 356 /**
mbed_official 573:ad23fe03a082 357 * @brief Stops the TIM Hall Sensor Interface in interrupt mode.
mbed_official 573:ad23fe03a082 358 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 359 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 360 * @retval HAL status
mbed_official 573:ad23fe03a082 361 */
mbed_official 573:ad23fe03a082 362 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 363 {
mbed_official 573:ad23fe03a082 364 /* Check the parameters */
mbed_official 573:ad23fe03a082 365 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 366
mbed_official 573:ad23fe03a082 367 /* Disable the Input Capture channels 1
mbed_official 573:ad23fe03a082 368 (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 573:ad23fe03a082 369 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 573:ad23fe03a082 370
mbed_official 573:ad23fe03a082 371 /* Disable the capture compare Interrupts event */
mbed_official 573:ad23fe03a082 372 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 373
mbed_official 573:ad23fe03a082 374 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 375 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 376
mbed_official 573:ad23fe03a082 377 /* Return function status */
mbed_official 573:ad23fe03a082 378 return HAL_OK;
mbed_official 573:ad23fe03a082 379 }
mbed_official 573:ad23fe03a082 380
mbed_official 573:ad23fe03a082 381 /**
mbed_official 573:ad23fe03a082 382 * @brief Starts the TIM Hall Sensor Interface in DMA mode.
mbed_official 573:ad23fe03a082 383 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 384 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 385 * @param pData: The destination Buffer address.
mbed_official 573:ad23fe03a082 386 * @param Length: The length of data to be transferred from TIM peripheral to memory.
mbed_official 573:ad23fe03a082 387 * @retval HAL status
mbed_official 573:ad23fe03a082 388 */
mbed_official 573:ad23fe03a082 389 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length)
mbed_official 573:ad23fe03a082 390 {
mbed_official 573:ad23fe03a082 391 /* Check the parameters */
mbed_official 573:ad23fe03a082 392 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 393
mbed_official 573:ad23fe03a082 394 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 573:ad23fe03a082 395 {
mbed_official 573:ad23fe03a082 396 return HAL_BUSY;
mbed_official 573:ad23fe03a082 397 }
mbed_official 573:ad23fe03a082 398 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 573:ad23fe03a082 399 {
mbed_official 573:ad23fe03a082 400 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 573:ad23fe03a082 401 {
mbed_official 573:ad23fe03a082 402 return HAL_ERROR;
mbed_official 573:ad23fe03a082 403 }
mbed_official 573:ad23fe03a082 404 else
mbed_official 573:ad23fe03a082 405 {
mbed_official 573:ad23fe03a082 406 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 407 }
mbed_official 573:ad23fe03a082 408 }
mbed_official 573:ad23fe03a082 409 /* Enable the Input Capture channels 1
mbed_official 573:ad23fe03a082 410 (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 573:ad23fe03a082 411 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
mbed_official 573:ad23fe03a082 412
mbed_official 573:ad23fe03a082 413 /* Set the DMA Input Capture 1 Callback */
mbed_official 573:ad23fe03a082 414 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = HAL_TIM_DMACaptureCplt;
mbed_official 573:ad23fe03a082 415 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 416 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 417
mbed_official 573:ad23fe03a082 418 /* Enable the DMA Stream for Capture 1*/
mbed_official 573:ad23fe03a082 419 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length);
mbed_official 573:ad23fe03a082 420
mbed_official 573:ad23fe03a082 421 /* Enable the capture compare 1 Interrupt */
mbed_official 573:ad23fe03a082 422 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 573:ad23fe03a082 423
mbed_official 573:ad23fe03a082 424 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 425 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 426
mbed_official 573:ad23fe03a082 427 /* Return function status */
mbed_official 573:ad23fe03a082 428 return HAL_OK;
mbed_official 573:ad23fe03a082 429 }
mbed_official 573:ad23fe03a082 430
mbed_official 573:ad23fe03a082 431 /**
mbed_official 573:ad23fe03a082 432 * @brief Stops the TIM Hall Sensor Interface in DMA mode.
mbed_official 573:ad23fe03a082 433 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 434 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 435 * @retval HAL status
mbed_official 573:ad23fe03a082 436 */
mbed_official 573:ad23fe03a082 437 HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 438 {
mbed_official 573:ad23fe03a082 439 /* Check the parameters */
mbed_official 573:ad23fe03a082 440 assert_param(IS_TIM_XOR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 441
mbed_official 573:ad23fe03a082 442 /* Disable the Input Capture channels 1
mbed_official 573:ad23fe03a082 443 (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 573:ad23fe03a082 444 TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
mbed_official 573:ad23fe03a082 445
mbed_official 573:ad23fe03a082 446
mbed_official 573:ad23fe03a082 447 /* Disable the capture compare Interrupts 1 event */
mbed_official 573:ad23fe03a082 448 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 573:ad23fe03a082 449
mbed_official 573:ad23fe03a082 450 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 451 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 452
mbed_official 573:ad23fe03a082 453 /* Return function status */
mbed_official 573:ad23fe03a082 454 return HAL_OK;
mbed_official 573:ad23fe03a082 455 }
mbed_official 573:ad23fe03a082 456
mbed_official 573:ad23fe03a082 457 /**
mbed_official 573:ad23fe03a082 458 * @}
mbed_official 573:ad23fe03a082 459 */
mbed_official 573:ad23fe03a082 460
mbed_official 573:ad23fe03a082 461 /** @defgroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions
mbed_official 573:ad23fe03a082 462 * @brief Timer Complementary Output Compare functions
mbed_official 573:ad23fe03a082 463 *
mbed_official 573:ad23fe03a082 464 @verbatim
mbed_official 573:ad23fe03a082 465 ==============================================================================
mbed_official 573:ad23fe03a082 466 ##### Timer Complementary Output Compare functions #####
mbed_official 573:ad23fe03a082 467 ==============================================================================
mbed_official 573:ad23fe03a082 468 [..]
mbed_official 573:ad23fe03a082 469 This section provides functions allowing to:
mbed_official 573:ad23fe03a082 470 (+) Start the Complementary Output Compare/PWM.
mbed_official 573:ad23fe03a082 471 (+) Stop the Complementary Output Compare/PWM.
mbed_official 573:ad23fe03a082 472 (+) Start the Complementary Output Compare/PWM and enable interrupts.
mbed_official 573:ad23fe03a082 473 (+) Stop the Complementary Output Compare/PWM and disable interrupts.
mbed_official 573:ad23fe03a082 474 (+) Start the Complementary Output Compare/PWM and enable DMA transfers.
mbed_official 573:ad23fe03a082 475 (+) Stop the Complementary Output Compare/PWM and disable DMA transfers.
mbed_official 573:ad23fe03a082 476
mbed_official 573:ad23fe03a082 477 @endverbatim
mbed_official 573:ad23fe03a082 478 * @{
mbed_official 573:ad23fe03a082 479 */
mbed_official 573:ad23fe03a082 480
mbed_official 573:ad23fe03a082 481 /**
mbed_official 573:ad23fe03a082 482 * @brief Starts the TIM Output Compare signal generation on the complementary
mbed_official 573:ad23fe03a082 483 * output.
mbed_official 573:ad23fe03a082 484 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 485 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 486 * @param Channel: TIM Channel to be enabled.
mbed_official 573:ad23fe03a082 487 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 488 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 489 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 490 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 491 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 492 * @retval HAL status
mbed_official 573:ad23fe03a082 493 */
mbed_official 573:ad23fe03a082 494 HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 495 {
mbed_official 573:ad23fe03a082 496 /* Check the parameters */
mbed_official 573:ad23fe03a082 497 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 498
mbed_official 573:ad23fe03a082 499 /* Enable the Capture compare channel N */
mbed_official 573:ad23fe03a082 500 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 501
mbed_official 573:ad23fe03a082 502 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 503 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 504
mbed_official 573:ad23fe03a082 505 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 506 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 507
mbed_official 573:ad23fe03a082 508 /* Return function status */
mbed_official 573:ad23fe03a082 509 return HAL_OK;
mbed_official 573:ad23fe03a082 510 }
mbed_official 573:ad23fe03a082 511
mbed_official 573:ad23fe03a082 512 /**
mbed_official 573:ad23fe03a082 513 * @brief Stops the TIM Output Compare signal generation on the complementary
mbed_official 573:ad23fe03a082 514 * output.
mbed_official 573:ad23fe03a082 515 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 516 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 517 * @param Channel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 518 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 519 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 520 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 521 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 522 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 523 * @retval HAL status
mbed_official 573:ad23fe03a082 524 */
mbed_official 573:ad23fe03a082 525 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 526 {
mbed_official 573:ad23fe03a082 527 /* Check the parameters */
mbed_official 573:ad23fe03a082 528 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 529
mbed_official 573:ad23fe03a082 530 /* Disable the Capture compare channel N */
mbed_official 573:ad23fe03a082 531 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 532
mbed_official 573:ad23fe03a082 533 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 534 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 535
mbed_official 573:ad23fe03a082 536 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 537 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 538
mbed_official 573:ad23fe03a082 539 /* Return function status */
mbed_official 573:ad23fe03a082 540 return HAL_OK;
mbed_official 573:ad23fe03a082 541 }
mbed_official 573:ad23fe03a082 542
mbed_official 573:ad23fe03a082 543 /**
mbed_official 573:ad23fe03a082 544 * @brief Starts the TIM Output Compare signal generation in interrupt mode
mbed_official 573:ad23fe03a082 545 * on the complementary output.
mbed_official 573:ad23fe03a082 546 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 547 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 548 * @param Channel: TIM Channel to be enabled.
mbed_official 573:ad23fe03a082 549 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 550 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 551 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 552 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 553 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 554 * @retval HAL status
mbed_official 573:ad23fe03a082 555 */
mbed_official 573:ad23fe03a082 556 HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 557 {
mbed_official 573:ad23fe03a082 558 /* Check the parameters */
mbed_official 573:ad23fe03a082 559 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 560
mbed_official 573:ad23fe03a082 561 switch (Channel)
mbed_official 573:ad23fe03a082 562 {
mbed_official 573:ad23fe03a082 563 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 564 {
mbed_official 573:ad23fe03a082 565 /* Enable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 566 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 567 }
mbed_official 573:ad23fe03a082 568 break;
mbed_official 573:ad23fe03a082 569
mbed_official 573:ad23fe03a082 570 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 571 {
mbed_official 573:ad23fe03a082 572 /* Enable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 573 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 573:ad23fe03a082 574 }
mbed_official 573:ad23fe03a082 575 break;
mbed_official 573:ad23fe03a082 576
mbed_official 573:ad23fe03a082 577 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 578 {
mbed_official 573:ad23fe03a082 579 /* Enable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 580 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
mbed_official 573:ad23fe03a082 581 }
mbed_official 573:ad23fe03a082 582 break;
mbed_official 573:ad23fe03a082 583
mbed_official 573:ad23fe03a082 584 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 585 {
mbed_official 573:ad23fe03a082 586 /* Enable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 587 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
mbed_official 573:ad23fe03a082 588 }
mbed_official 573:ad23fe03a082 589 break;
mbed_official 573:ad23fe03a082 590
mbed_official 573:ad23fe03a082 591 default:
mbed_official 573:ad23fe03a082 592 break;
mbed_official 573:ad23fe03a082 593 }
mbed_official 573:ad23fe03a082 594
mbed_official 573:ad23fe03a082 595 /* Enable the TIM Break interrupt */
mbed_official 573:ad23fe03a082 596 __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
mbed_official 573:ad23fe03a082 597
mbed_official 573:ad23fe03a082 598 /* Enable the Capture compare channel N */
mbed_official 573:ad23fe03a082 599 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 600
mbed_official 573:ad23fe03a082 601 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 602 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 603
mbed_official 573:ad23fe03a082 604 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 605 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 606
mbed_official 573:ad23fe03a082 607 /* Return function status */
mbed_official 573:ad23fe03a082 608 return HAL_OK;
mbed_official 573:ad23fe03a082 609 }
mbed_official 573:ad23fe03a082 610
mbed_official 573:ad23fe03a082 611 /**
mbed_official 573:ad23fe03a082 612 * @brief Stops the TIM Output Compare signal generation in interrupt mode
mbed_official 573:ad23fe03a082 613 * on the complementary output.
mbed_official 573:ad23fe03a082 614 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 615 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 616 * @param Channel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 617 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 618 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 619 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 620 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 621 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 622 * @retval HAL status
mbed_official 573:ad23fe03a082 623 */
mbed_official 573:ad23fe03a082 624 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 625 {
mbed_official 573:ad23fe03a082 626 uint32_t tmpccer = 0;
mbed_official 573:ad23fe03a082 627
mbed_official 573:ad23fe03a082 628 /* Check the parameters */
mbed_official 573:ad23fe03a082 629 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 630
mbed_official 573:ad23fe03a082 631 switch (Channel)
mbed_official 573:ad23fe03a082 632 {
mbed_official 573:ad23fe03a082 633 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 634 {
mbed_official 573:ad23fe03a082 635 /* Disable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 636 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 637 }
mbed_official 573:ad23fe03a082 638 break;
mbed_official 573:ad23fe03a082 639
mbed_official 573:ad23fe03a082 640 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 641 {
mbed_official 573:ad23fe03a082 642 /* Disable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 643 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 573:ad23fe03a082 644 }
mbed_official 573:ad23fe03a082 645 break;
mbed_official 573:ad23fe03a082 646
mbed_official 573:ad23fe03a082 647 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 648 {
mbed_official 573:ad23fe03a082 649 /* Disable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 650 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
mbed_official 573:ad23fe03a082 651 }
mbed_official 573:ad23fe03a082 652 break;
mbed_official 573:ad23fe03a082 653
mbed_official 573:ad23fe03a082 654 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 655 {
mbed_official 573:ad23fe03a082 656 /* Disable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 657 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
mbed_official 573:ad23fe03a082 658 }
mbed_official 573:ad23fe03a082 659 break;
mbed_official 573:ad23fe03a082 660
mbed_official 573:ad23fe03a082 661 default:
mbed_official 573:ad23fe03a082 662 break;
mbed_official 573:ad23fe03a082 663 }
mbed_official 573:ad23fe03a082 664
mbed_official 573:ad23fe03a082 665 /* Disable the Capture compare channel N */
mbed_official 573:ad23fe03a082 666 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 667
mbed_official 573:ad23fe03a082 668 /* Disable the TIM Break interrupt (only if no more channel is active) */
mbed_official 573:ad23fe03a082 669 tmpccer = htim->Instance->CCER;
mbed_official 573:ad23fe03a082 670 if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == RESET)
mbed_official 573:ad23fe03a082 671 {
mbed_official 573:ad23fe03a082 672 __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
mbed_official 573:ad23fe03a082 673 }
mbed_official 573:ad23fe03a082 674
mbed_official 573:ad23fe03a082 675 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 676 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 677
mbed_official 573:ad23fe03a082 678 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 679 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 680
mbed_official 573:ad23fe03a082 681 /* Return function status */
mbed_official 573:ad23fe03a082 682 return HAL_OK;
mbed_official 573:ad23fe03a082 683 }
mbed_official 573:ad23fe03a082 684
mbed_official 573:ad23fe03a082 685 /**
mbed_official 573:ad23fe03a082 686 * @brief Starts the TIM Output Compare signal generation in DMA mode
mbed_official 573:ad23fe03a082 687 * on the complementary output.
mbed_official 573:ad23fe03a082 688 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 689 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 690 * @param Channel: TIM Channel to be enabled.
mbed_official 573:ad23fe03a082 691 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 692 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 693 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 694 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 695 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 696 * @param pData: The source Buffer address.
mbed_official 573:ad23fe03a082 697 * @param Length: The length of data to be transferred from memory to TIM peripheral
mbed_official 573:ad23fe03a082 698 * @retval HAL status
mbed_official 573:ad23fe03a082 699 */
mbed_official 573:ad23fe03a082 700 HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
mbed_official 573:ad23fe03a082 701 {
mbed_official 573:ad23fe03a082 702 /* Check the parameters */
mbed_official 573:ad23fe03a082 703 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 704
mbed_official 573:ad23fe03a082 705 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 573:ad23fe03a082 706 {
mbed_official 573:ad23fe03a082 707 return HAL_BUSY;
mbed_official 573:ad23fe03a082 708 }
mbed_official 573:ad23fe03a082 709 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 573:ad23fe03a082 710 {
mbed_official 573:ad23fe03a082 711 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 573:ad23fe03a082 712 {
mbed_official 573:ad23fe03a082 713 return HAL_ERROR;
mbed_official 573:ad23fe03a082 714 }
mbed_official 573:ad23fe03a082 715 else
mbed_official 573:ad23fe03a082 716 {
mbed_official 573:ad23fe03a082 717 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 718 }
mbed_official 573:ad23fe03a082 719 }
mbed_official 573:ad23fe03a082 720 switch (Channel)
mbed_official 573:ad23fe03a082 721 {
mbed_official 573:ad23fe03a082 722 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 723 {
mbed_official 573:ad23fe03a082 724 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 725 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 726
mbed_official 573:ad23fe03a082 727 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 728 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 729
mbed_official 573:ad23fe03a082 730 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 731 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
mbed_official 573:ad23fe03a082 732
mbed_official 573:ad23fe03a082 733 /* Enable the TIM Output Compare DMA request */
mbed_official 573:ad23fe03a082 734 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 573:ad23fe03a082 735 }
mbed_official 573:ad23fe03a082 736 break;
mbed_official 573:ad23fe03a082 737
mbed_official 573:ad23fe03a082 738 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 739 {
mbed_official 573:ad23fe03a082 740 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 741 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 742
mbed_official 573:ad23fe03a082 743 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 744 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 745
mbed_official 573:ad23fe03a082 746 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 747 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
mbed_official 573:ad23fe03a082 748
mbed_official 573:ad23fe03a082 749 /* Enable the TIM Output Compare DMA request */
mbed_official 573:ad23fe03a082 750 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 573:ad23fe03a082 751 }
mbed_official 573:ad23fe03a082 752 break;
mbed_official 573:ad23fe03a082 753
mbed_official 573:ad23fe03a082 754 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 755 {
mbed_official 573:ad23fe03a082 756 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 757 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 758
mbed_official 573:ad23fe03a082 759 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 760 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 761
mbed_official 573:ad23fe03a082 762 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 763 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
mbed_official 573:ad23fe03a082 764
mbed_official 573:ad23fe03a082 765 /* Enable the TIM Output Compare DMA request */
mbed_official 573:ad23fe03a082 766 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 573:ad23fe03a082 767 }
mbed_official 573:ad23fe03a082 768 break;
mbed_official 573:ad23fe03a082 769
mbed_official 573:ad23fe03a082 770 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 771 {
mbed_official 573:ad23fe03a082 772 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 773 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 774
mbed_official 573:ad23fe03a082 775 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 776 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 777
mbed_official 573:ad23fe03a082 778 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 779 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
mbed_official 573:ad23fe03a082 780
mbed_official 573:ad23fe03a082 781 /* Enable the TIM Output Compare DMA request */
mbed_official 573:ad23fe03a082 782 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 573:ad23fe03a082 783 }
mbed_official 573:ad23fe03a082 784 break;
mbed_official 573:ad23fe03a082 785
mbed_official 573:ad23fe03a082 786 default:
mbed_official 573:ad23fe03a082 787 break;
mbed_official 573:ad23fe03a082 788 }
mbed_official 573:ad23fe03a082 789
mbed_official 573:ad23fe03a082 790 /* Enable the Capture compare channel N */
mbed_official 573:ad23fe03a082 791 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 792
mbed_official 573:ad23fe03a082 793 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 794 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 795
mbed_official 573:ad23fe03a082 796 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 797 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 798
mbed_official 573:ad23fe03a082 799 /* Return function status */
mbed_official 573:ad23fe03a082 800 return HAL_OK;
mbed_official 573:ad23fe03a082 801 }
mbed_official 573:ad23fe03a082 802
mbed_official 573:ad23fe03a082 803 /**
mbed_official 573:ad23fe03a082 804 * @brief Stops the TIM Output Compare signal generation in DMA mode
mbed_official 573:ad23fe03a082 805 * on the complementary output.
mbed_official 573:ad23fe03a082 806 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 807 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 808 * @param Channel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 809 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 810 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 811 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 812 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 813 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 814 * @retval HAL status
mbed_official 573:ad23fe03a082 815 */
mbed_official 573:ad23fe03a082 816 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 817 {
mbed_official 573:ad23fe03a082 818 /* Check the parameters */
mbed_official 573:ad23fe03a082 819 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 820
mbed_official 573:ad23fe03a082 821 switch (Channel)
mbed_official 573:ad23fe03a082 822 {
mbed_official 573:ad23fe03a082 823 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 824 {
mbed_official 573:ad23fe03a082 825 /* Disable the TIM Output Compare DMA request */
mbed_official 573:ad23fe03a082 826 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 573:ad23fe03a082 827 }
mbed_official 573:ad23fe03a082 828 break;
mbed_official 573:ad23fe03a082 829
mbed_official 573:ad23fe03a082 830 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 831 {
mbed_official 573:ad23fe03a082 832 /* Disable the TIM Output Compare DMA request */
mbed_official 573:ad23fe03a082 833 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 573:ad23fe03a082 834 }
mbed_official 573:ad23fe03a082 835 break;
mbed_official 573:ad23fe03a082 836
mbed_official 573:ad23fe03a082 837 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 838 {
mbed_official 573:ad23fe03a082 839 /* Disable the TIM Output Compare DMA request */
mbed_official 573:ad23fe03a082 840 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 573:ad23fe03a082 841 }
mbed_official 573:ad23fe03a082 842 break;
mbed_official 573:ad23fe03a082 843
mbed_official 573:ad23fe03a082 844 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 845 {
mbed_official 573:ad23fe03a082 846 /* Disable the TIM Output Compare interrupt */
mbed_official 573:ad23fe03a082 847 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 573:ad23fe03a082 848 }
mbed_official 573:ad23fe03a082 849 break;
mbed_official 573:ad23fe03a082 850
mbed_official 573:ad23fe03a082 851 default:
mbed_official 573:ad23fe03a082 852 break;
mbed_official 573:ad23fe03a082 853 }
mbed_official 573:ad23fe03a082 854
mbed_official 573:ad23fe03a082 855 /* Disable the Capture compare channel N */
mbed_official 573:ad23fe03a082 856 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 857
mbed_official 573:ad23fe03a082 858 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 859 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 860
mbed_official 573:ad23fe03a082 861 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 862 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 863
mbed_official 573:ad23fe03a082 864 /* Change the htim state */
mbed_official 573:ad23fe03a082 865 htim->State = HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 866
mbed_official 573:ad23fe03a082 867 /* Return function status */
mbed_official 573:ad23fe03a082 868 return HAL_OK;
mbed_official 573:ad23fe03a082 869 }
mbed_official 573:ad23fe03a082 870
mbed_official 573:ad23fe03a082 871 /**
mbed_official 573:ad23fe03a082 872 * @}
mbed_official 573:ad23fe03a082 873 */
mbed_official 573:ad23fe03a082 874
mbed_official 573:ad23fe03a082 875 /** @defgroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions
mbed_official 573:ad23fe03a082 876 * @brief Timer Complementary PWM functions
mbed_official 573:ad23fe03a082 877 *
mbed_official 573:ad23fe03a082 878 @verbatim
mbed_official 573:ad23fe03a082 879 ==============================================================================
mbed_official 573:ad23fe03a082 880 ##### Timer Complementary PWM functions #####
mbed_official 573:ad23fe03a082 881 ==============================================================================
mbed_official 573:ad23fe03a082 882 [..]
mbed_official 573:ad23fe03a082 883 This section provides functions allowing to:
mbed_official 573:ad23fe03a082 884 (+) Start the Complementary PWM.
mbed_official 573:ad23fe03a082 885 (+) Stop the Complementary PWM.
mbed_official 573:ad23fe03a082 886 (+) Start the Complementary PWM and enable interrupts.
mbed_official 573:ad23fe03a082 887 (+) Stop the Complementary PWM and disable interrupts.
mbed_official 573:ad23fe03a082 888 (+) Start the Complementary PWM and enable DMA transfers.
mbed_official 573:ad23fe03a082 889 (+) Stop the Complementary PWM and disable DMA transfers.
mbed_official 573:ad23fe03a082 890 (+) Start the Complementary Input Capture measurement.
mbed_official 573:ad23fe03a082 891 (+) Stop the Complementary Input Capture.
mbed_official 573:ad23fe03a082 892 (+) Start the Complementary Input Capture and enable interrupts.
mbed_official 573:ad23fe03a082 893 (+) Stop the Complementary Input Capture and disable interrupts.
mbed_official 573:ad23fe03a082 894 (+) Start the Complementary Input Capture and enable DMA transfers.
mbed_official 573:ad23fe03a082 895 (+) Stop the Complementary Input Capture and disable DMA transfers.
mbed_official 573:ad23fe03a082 896 (+) Start the Complementary One Pulse generation.
mbed_official 573:ad23fe03a082 897 (+) Stop the Complementary One Pulse.
mbed_official 573:ad23fe03a082 898 (+) Start the Complementary One Pulse and enable interrupts.
mbed_official 573:ad23fe03a082 899 (+) Stop the Complementary One Pulse and disable interrupts.
mbed_official 573:ad23fe03a082 900
mbed_official 573:ad23fe03a082 901 @endverbatim
mbed_official 573:ad23fe03a082 902 * @{
mbed_official 573:ad23fe03a082 903 */
mbed_official 573:ad23fe03a082 904
mbed_official 573:ad23fe03a082 905 /**
mbed_official 573:ad23fe03a082 906 * @brief Starts the PWM signal generation on the complementary output.
mbed_official 573:ad23fe03a082 907 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 908 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 909 * @param Channel: TIM Channel to be enabled.
mbed_official 573:ad23fe03a082 910 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 911 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 912 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 913 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 914 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 915 * @retval HAL status
mbed_official 573:ad23fe03a082 916 */
mbed_official 573:ad23fe03a082 917 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 918 {
mbed_official 573:ad23fe03a082 919 /* Check the parameters */
mbed_official 573:ad23fe03a082 920 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 921
mbed_official 573:ad23fe03a082 922 /* Enable the complementary PWM output */
mbed_official 573:ad23fe03a082 923 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 924
mbed_official 573:ad23fe03a082 925 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 926 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 927
mbed_official 573:ad23fe03a082 928 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 929 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 930
mbed_official 573:ad23fe03a082 931 /* Return function status */
mbed_official 573:ad23fe03a082 932 return HAL_OK;
mbed_official 573:ad23fe03a082 933 }
mbed_official 573:ad23fe03a082 934
mbed_official 573:ad23fe03a082 935 /**
mbed_official 573:ad23fe03a082 936 * @brief Stops the PWM signal generation on the complementary output.
mbed_official 573:ad23fe03a082 937 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 938 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 939 * @param Channel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 940 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 941 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 942 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 943 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 944 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 945 * @retval HAL status
mbed_official 573:ad23fe03a082 946 */
mbed_official 573:ad23fe03a082 947 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 948 {
mbed_official 573:ad23fe03a082 949 /* Check the parameters */
mbed_official 573:ad23fe03a082 950 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 951
mbed_official 573:ad23fe03a082 952 /* Disable the complementary PWM output */
mbed_official 573:ad23fe03a082 953 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 954
mbed_official 573:ad23fe03a082 955 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 956 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 957
mbed_official 573:ad23fe03a082 958 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 959 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 960
mbed_official 573:ad23fe03a082 961 /* Return function status */
mbed_official 573:ad23fe03a082 962 return HAL_OK;
mbed_official 573:ad23fe03a082 963 }
mbed_official 573:ad23fe03a082 964
mbed_official 573:ad23fe03a082 965 /**
mbed_official 573:ad23fe03a082 966 * @brief Starts the PWM signal generation in interrupt mode on the
mbed_official 573:ad23fe03a082 967 * complementary output.
mbed_official 573:ad23fe03a082 968 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 969 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 970 * @param Channel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 971 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 972 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 973 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 974 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 975 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 976 * @retval HAL status
mbed_official 573:ad23fe03a082 977 */
mbed_official 573:ad23fe03a082 978 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 979 {
mbed_official 573:ad23fe03a082 980 /* Check the parameters */
mbed_official 573:ad23fe03a082 981 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 982
mbed_official 573:ad23fe03a082 983 switch (Channel)
mbed_official 573:ad23fe03a082 984 {
mbed_official 573:ad23fe03a082 985 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 986 {
mbed_official 573:ad23fe03a082 987 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 573:ad23fe03a082 988 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 989 }
mbed_official 573:ad23fe03a082 990 break;
mbed_official 573:ad23fe03a082 991
mbed_official 573:ad23fe03a082 992 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 993 {
mbed_official 573:ad23fe03a082 994 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 573:ad23fe03a082 995 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 573:ad23fe03a082 996 }
mbed_official 573:ad23fe03a082 997 break;
mbed_official 573:ad23fe03a082 998
mbed_official 573:ad23fe03a082 999 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 1000 {
mbed_official 573:ad23fe03a082 1001 /* Enable the TIM Capture/Compare 3 interrupt */
mbed_official 573:ad23fe03a082 1002 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3);
mbed_official 573:ad23fe03a082 1003 }
mbed_official 573:ad23fe03a082 1004 break;
mbed_official 573:ad23fe03a082 1005
mbed_official 573:ad23fe03a082 1006 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 1007 {
mbed_official 573:ad23fe03a082 1008 /* Enable the TIM Capture/Compare 4 interrupt */
mbed_official 573:ad23fe03a082 1009 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4);
mbed_official 573:ad23fe03a082 1010 }
mbed_official 573:ad23fe03a082 1011 break;
mbed_official 573:ad23fe03a082 1012
mbed_official 573:ad23fe03a082 1013 default:
mbed_official 573:ad23fe03a082 1014 break;
mbed_official 573:ad23fe03a082 1015 }
mbed_official 573:ad23fe03a082 1016
mbed_official 573:ad23fe03a082 1017 /* Enable the TIM Break interrupt */
mbed_official 573:ad23fe03a082 1018 __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
mbed_official 573:ad23fe03a082 1019
mbed_official 573:ad23fe03a082 1020 /* Enable the complementary PWM output */
mbed_official 573:ad23fe03a082 1021 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 1022
mbed_official 573:ad23fe03a082 1023 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 1024 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 1025
mbed_official 573:ad23fe03a082 1026 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 1027 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 1028
mbed_official 573:ad23fe03a082 1029 /* Return function status */
mbed_official 573:ad23fe03a082 1030 return HAL_OK;
mbed_official 573:ad23fe03a082 1031 }
mbed_official 573:ad23fe03a082 1032
mbed_official 573:ad23fe03a082 1033 /**
mbed_official 573:ad23fe03a082 1034 * @brief Stops the PWM signal generation in interrupt mode on the
mbed_official 573:ad23fe03a082 1035 * complementary output.
mbed_official 573:ad23fe03a082 1036 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1037 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1038 * @param Channel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 1039 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1040 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1041 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1042 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 1043 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 1044 * @retval HAL status
mbed_official 573:ad23fe03a082 1045 */
mbed_official 573:ad23fe03a082 1046 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT (TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 1047 {
mbed_official 573:ad23fe03a082 1048 uint32_t tmpccer = 0;
mbed_official 573:ad23fe03a082 1049
mbed_official 573:ad23fe03a082 1050 /* Check the parameters */
mbed_official 573:ad23fe03a082 1051 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 1052
mbed_official 573:ad23fe03a082 1053 switch (Channel)
mbed_official 573:ad23fe03a082 1054 {
mbed_official 573:ad23fe03a082 1055 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 1056 {
mbed_official 573:ad23fe03a082 1057 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 573:ad23fe03a082 1058 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 1059 }
mbed_official 573:ad23fe03a082 1060 break;
mbed_official 573:ad23fe03a082 1061
mbed_official 573:ad23fe03a082 1062 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 1063 {
mbed_official 573:ad23fe03a082 1064 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 573:ad23fe03a082 1065 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 573:ad23fe03a082 1066 }
mbed_official 573:ad23fe03a082 1067 break;
mbed_official 573:ad23fe03a082 1068
mbed_official 573:ad23fe03a082 1069 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 1070 {
mbed_official 573:ad23fe03a082 1071 /* Disable the TIM Capture/Compare 3 interrupt */
mbed_official 573:ad23fe03a082 1072 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3);
mbed_official 573:ad23fe03a082 1073 }
mbed_official 573:ad23fe03a082 1074 break;
mbed_official 573:ad23fe03a082 1075
mbed_official 573:ad23fe03a082 1076 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 1077 {
mbed_official 573:ad23fe03a082 1078 /* Disable the TIM Capture/Compare 3 interrupt */
mbed_official 573:ad23fe03a082 1079 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4);
mbed_official 573:ad23fe03a082 1080 }
mbed_official 573:ad23fe03a082 1081 break;
mbed_official 573:ad23fe03a082 1082
mbed_official 573:ad23fe03a082 1083 default:
mbed_official 573:ad23fe03a082 1084 break;
mbed_official 573:ad23fe03a082 1085 }
mbed_official 573:ad23fe03a082 1086
mbed_official 573:ad23fe03a082 1087 /* Disable the complementary PWM output */
mbed_official 573:ad23fe03a082 1088 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 1089
mbed_official 573:ad23fe03a082 1090 /* Disable the TIM Break interrupt (only if no more channel is active) */
mbed_official 573:ad23fe03a082 1091 tmpccer = htim->Instance->CCER;
mbed_official 573:ad23fe03a082 1092 if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == RESET)
mbed_official 573:ad23fe03a082 1093 {
mbed_official 573:ad23fe03a082 1094 __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
mbed_official 573:ad23fe03a082 1095 }
mbed_official 573:ad23fe03a082 1096
mbed_official 573:ad23fe03a082 1097 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 1098 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 1099
mbed_official 573:ad23fe03a082 1100 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 1101 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 1102
mbed_official 573:ad23fe03a082 1103 /* Return function status */
mbed_official 573:ad23fe03a082 1104 return HAL_OK;
mbed_official 573:ad23fe03a082 1105 }
mbed_official 573:ad23fe03a082 1106
mbed_official 573:ad23fe03a082 1107 /**
mbed_official 573:ad23fe03a082 1108 * @brief Starts the TIM PWM signal generation in DMA mode on the
mbed_official 573:ad23fe03a082 1109 * complementary output
mbed_official 573:ad23fe03a082 1110 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1111 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1112 * @param Channel: TIM Channel to be enabled.
mbed_official 573:ad23fe03a082 1113 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1114 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1115 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1116 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 1117 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 1118 * @param pData: The source Buffer address.
mbed_official 573:ad23fe03a082 1119 * @param Length: The length of data to be transferred from memory to TIM peripheral
mbed_official 573:ad23fe03a082 1120 * @retval HAL status
mbed_official 573:ad23fe03a082 1121 */
mbed_official 573:ad23fe03a082 1122 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
mbed_official 573:ad23fe03a082 1123 {
mbed_official 573:ad23fe03a082 1124 /* Check the parameters */
mbed_official 573:ad23fe03a082 1125 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 1126
mbed_official 573:ad23fe03a082 1127 if((htim->State == HAL_TIM_STATE_BUSY))
mbed_official 573:ad23fe03a082 1128 {
mbed_official 573:ad23fe03a082 1129 return HAL_BUSY;
mbed_official 573:ad23fe03a082 1130 }
mbed_official 573:ad23fe03a082 1131 else if((htim->State == HAL_TIM_STATE_READY))
mbed_official 573:ad23fe03a082 1132 {
mbed_official 573:ad23fe03a082 1133 if(((uint32_t)pData == 0 ) && (Length > 0))
mbed_official 573:ad23fe03a082 1134 {
mbed_official 573:ad23fe03a082 1135 return HAL_ERROR;
mbed_official 573:ad23fe03a082 1136 }
mbed_official 573:ad23fe03a082 1137 else
mbed_official 573:ad23fe03a082 1138 {
mbed_official 573:ad23fe03a082 1139 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 1140 }
mbed_official 573:ad23fe03a082 1141 }
mbed_official 573:ad23fe03a082 1142 switch (Channel)
mbed_official 573:ad23fe03a082 1143 {
mbed_official 573:ad23fe03a082 1144 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 1145 {
mbed_official 573:ad23fe03a082 1146 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 1147 htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 1148
mbed_official 573:ad23fe03a082 1149 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 1150 htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 1151
mbed_official 573:ad23fe03a082 1152 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 1153 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length);
mbed_official 573:ad23fe03a082 1154
mbed_official 573:ad23fe03a082 1155 /* Enable the TIM Capture/Compare 1 DMA request */
mbed_official 573:ad23fe03a082 1156 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 573:ad23fe03a082 1157 }
mbed_official 573:ad23fe03a082 1158 break;
mbed_official 573:ad23fe03a082 1159
mbed_official 573:ad23fe03a082 1160 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 1161 {
mbed_official 573:ad23fe03a082 1162 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 1163 htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 1164
mbed_official 573:ad23fe03a082 1165 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 1166 htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 1167
mbed_official 573:ad23fe03a082 1168 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 1169 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length);
mbed_official 573:ad23fe03a082 1170
mbed_official 573:ad23fe03a082 1171 /* Enable the TIM Capture/Compare 2 DMA request */
mbed_official 573:ad23fe03a082 1172 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 573:ad23fe03a082 1173 }
mbed_official 573:ad23fe03a082 1174 break;
mbed_official 573:ad23fe03a082 1175
mbed_official 573:ad23fe03a082 1176 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 1177 {
mbed_official 573:ad23fe03a082 1178 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 1179 htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 1180
mbed_official 573:ad23fe03a082 1181 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 1182 htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 1183
mbed_official 573:ad23fe03a082 1184 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 1185 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,Length);
mbed_official 573:ad23fe03a082 1186
mbed_official 573:ad23fe03a082 1187 /* Enable the TIM Capture/Compare 3 DMA request */
mbed_official 573:ad23fe03a082 1188 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 573:ad23fe03a082 1189 }
mbed_official 573:ad23fe03a082 1190 break;
mbed_official 573:ad23fe03a082 1191
mbed_official 573:ad23fe03a082 1192 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 1193 {
mbed_official 573:ad23fe03a082 1194 /* Set the DMA Period elapsed callback */
mbed_official 573:ad23fe03a082 1195 htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = HAL_TIM_DMADelayPulseCplt;
mbed_official 573:ad23fe03a082 1196
mbed_official 573:ad23fe03a082 1197 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 1198 htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = HAL_TIM_DMAError ;
mbed_official 573:ad23fe03a082 1199
mbed_official 573:ad23fe03a082 1200 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 1201 HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length);
mbed_official 573:ad23fe03a082 1202
mbed_official 573:ad23fe03a082 1203 /* Enable the TIM Capture/Compare 4 DMA request */
mbed_official 573:ad23fe03a082 1204 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 573:ad23fe03a082 1205 }
mbed_official 573:ad23fe03a082 1206 break;
mbed_official 573:ad23fe03a082 1207
mbed_official 573:ad23fe03a082 1208 default:
mbed_official 573:ad23fe03a082 1209 break;
mbed_official 573:ad23fe03a082 1210 }
mbed_official 573:ad23fe03a082 1211
mbed_official 573:ad23fe03a082 1212 /* Enable the complementary PWM output */
mbed_official 573:ad23fe03a082 1213 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 1214
mbed_official 573:ad23fe03a082 1215 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 1216 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 1217
mbed_official 573:ad23fe03a082 1218 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 1219 __HAL_TIM_ENABLE(htim);
mbed_official 573:ad23fe03a082 1220
mbed_official 573:ad23fe03a082 1221 /* Return function status */
mbed_official 573:ad23fe03a082 1222 return HAL_OK;
mbed_official 573:ad23fe03a082 1223 }
mbed_official 573:ad23fe03a082 1224
mbed_official 573:ad23fe03a082 1225 /**
mbed_official 573:ad23fe03a082 1226 * @brief Stops the TIM PWM signal generation in DMA mode on the complementary
mbed_official 573:ad23fe03a082 1227 * output
mbed_official 573:ad23fe03a082 1228 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1229 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1230 * @param Channel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 1231 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1232 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1233 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1234 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 1235 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 1236 * @retval HAL status
mbed_official 573:ad23fe03a082 1237 */
mbed_official 573:ad23fe03a082 1238 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
mbed_official 573:ad23fe03a082 1239 {
mbed_official 573:ad23fe03a082 1240 /* Check the parameters */
mbed_official 573:ad23fe03a082 1241 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
mbed_official 573:ad23fe03a082 1242
mbed_official 573:ad23fe03a082 1243 switch (Channel)
mbed_official 573:ad23fe03a082 1244 {
mbed_official 573:ad23fe03a082 1245 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 1246 {
mbed_official 573:ad23fe03a082 1247 /* Disable the TIM Capture/Compare 1 DMA request */
mbed_official 573:ad23fe03a082 1248 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1);
mbed_official 573:ad23fe03a082 1249 }
mbed_official 573:ad23fe03a082 1250 break;
mbed_official 573:ad23fe03a082 1251
mbed_official 573:ad23fe03a082 1252 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 1253 {
mbed_official 573:ad23fe03a082 1254 /* Disable the TIM Capture/Compare 2 DMA request */
mbed_official 573:ad23fe03a082 1255 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2);
mbed_official 573:ad23fe03a082 1256 }
mbed_official 573:ad23fe03a082 1257 break;
mbed_official 573:ad23fe03a082 1258
mbed_official 573:ad23fe03a082 1259 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 1260 {
mbed_official 573:ad23fe03a082 1261 /* Disable the TIM Capture/Compare 3 DMA request */
mbed_official 573:ad23fe03a082 1262 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3);
mbed_official 573:ad23fe03a082 1263 }
mbed_official 573:ad23fe03a082 1264 break;
mbed_official 573:ad23fe03a082 1265
mbed_official 573:ad23fe03a082 1266 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 1267 {
mbed_official 573:ad23fe03a082 1268 /* Disable the TIM Capture/Compare 4 DMA request */
mbed_official 573:ad23fe03a082 1269 __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4);
mbed_official 573:ad23fe03a082 1270 }
mbed_official 573:ad23fe03a082 1271 break;
mbed_official 573:ad23fe03a082 1272
mbed_official 573:ad23fe03a082 1273 default:
mbed_official 573:ad23fe03a082 1274 break;
mbed_official 573:ad23fe03a082 1275 }
mbed_official 573:ad23fe03a082 1276
mbed_official 573:ad23fe03a082 1277 /* Disable the complementary PWM output */
mbed_official 573:ad23fe03a082 1278 TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 1279
mbed_official 573:ad23fe03a082 1280 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 1281 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 1282
mbed_official 573:ad23fe03a082 1283 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 1284 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 1285
mbed_official 573:ad23fe03a082 1286 /* Change the htim state */
mbed_official 573:ad23fe03a082 1287 htim->State = HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 1288
mbed_official 573:ad23fe03a082 1289 /* Return function status */
mbed_official 573:ad23fe03a082 1290 return HAL_OK;
mbed_official 573:ad23fe03a082 1291 }
mbed_official 573:ad23fe03a082 1292
mbed_official 573:ad23fe03a082 1293 /**
mbed_official 573:ad23fe03a082 1294 * @}
mbed_official 573:ad23fe03a082 1295 */
mbed_official 573:ad23fe03a082 1296
mbed_official 573:ad23fe03a082 1297 /** @defgroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions
mbed_official 573:ad23fe03a082 1298 * @brief Timer Complementary One Pulse functions
mbed_official 573:ad23fe03a082 1299 *
mbed_official 573:ad23fe03a082 1300 @verbatim
mbed_official 573:ad23fe03a082 1301 ==============================================================================
mbed_official 573:ad23fe03a082 1302 ##### Timer Complementary One Pulse functions #####
mbed_official 573:ad23fe03a082 1303 ==============================================================================
mbed_official 573:ad23fe03a082 1304 [..]
mbed_official 573:ad23fe03a082 1305 This section provides functions allowing to:
mbed_official 573:ad23fe03a082 1306 (+) Start the Complementary One Pulse generation.
mbed_official 573:ad23fe03a082 1307 (+) Stop the Complementary One Pulse.
mbed_official 573:ad23fe03a082 1308 (+) Start the Complementary One Pulse and enable interrupts.
mbed_official 573:ad23fe03a082 1309 (+) Stop the Complementary One Pulse and disable interrupts.
mbed_official 573:ad23fe03a082 1310
mbed_official 573:ad23fe03a082 1311 @endverbatim
mbed_official 573:ad23fe03a082 1312 * @{
mbed_official 573:ad23fe03a082 1313 */
mbed_official 573:ad23fe03a082 1314
mbed_official 573:ad23fe03a082 1315 /**
mbed_official 573:ad23fe03a082 1316 * @brief Starts the TIM One Pulse signal generation on the complemetary
mbed_official 573:ad23fe03a082 1317 * output.
mbed_official 573:ad23fe03a082 1318 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1319 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1320 * @param OutputChannel: TIM Channel to be enabled.
mbed_official 573:ad23fe03a082 1321 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1322 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1323 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1324 * @retval HAL status
mbed_official 573:ad23fe03a082 1325 */
mbed_official 573:ad23fe03a082 1326 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 573:ad23fe03a082 1327 {
mbed_official 573:ad23fe03a082 1328 /* Check the parameters */
mbed_official 573:ad23fe03a082 1329 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 573:ad23fe03a082 1330
mbed_official 573:ad23fe03a082 1331 /* Enable the complementary One Pulse output */
mbed_official 573:ad23fe03a082 1332 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 1333
mbed_official 573:ad23fe03a082 1334 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 1335 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 1336
mbed_official 573:ad23fe03a082 1337 /* Return function status */
mbed_official 573:ad23fe03a082 1338 return HAL_OK;
mbed_official 573:ad23fe03a082 1339 }
mbed_official 573:ad23fe03a082 1340
mbed_official 573:ad23fe03a082 1341 /**
mbed_official 573:ad23fe03a082 1342 * @brief Stops the TIM One Pulse signal generation on the complementary
mbed_official 573:ad23fe03a082 1343 * output.
mbed_official 573:ad23fe03a082 1344 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1345 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1346 * @param OutputChannel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 1347 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1348 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1349 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1350 * @retval HAL status
mbed_official 573:ad23fe03a082 1351 */
mbed_official 573:ad23fe03a082 1352 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 573:ad23fe03a082 1353 {
mbed_official 573:ad23fe03a082 1354
mbed_official 573:ad23fe03a082 1355 /* Check the parameters */
mbed_official 573:ad23fe03a082 1356 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 573:ad23fe03a082 1357
mbed_official 573:ad23fe03a082 1358 /* Disable the complementary One Pulse output */
mbed_official 573:ad23fe03a082 1359 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 1360
mbed_official 573:ad23fe03a082 1361 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 1362 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 1363
mbed_official 573:ad23fe03a082 1364 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 1365 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 1366
mbed_official 573:ad23fe03a082 1367 /* Return function status */
mbed_official 573:ad23fe03a082 1368 return HAL_OK;
mbed_official 573:ad23fe03a082 1369 }
mbed_official 573:ad23fe03a082 1370
mbed_official 573:ad23fe03a082 1371 /**
mbed_official 573:ad23fe03a082 1372 * @brief Starts the TIM One Pulse signal generation in interrupt mode on the
mbed_official 573:ad23fe03a082 1373 * complementary channel.
mbed_official 573:ad23fe03a082 1374 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1375 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1376 * @param OutputChannel: TIM Channel to be enabled.
mbed_official 573:ad23fe03a082 1377 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1378 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1379 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1380 * @retval HAL status
mbed_official 573:ad23fe03a082 1381 */
mbed_official 573:ad23fe03a082 1382 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 573:ad23fe03a082 1383 {
mbed_official 573:ad23fe03a082 1384 /* Check the parameters */
mbed_official 573:ad23fe03a082 1385 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 573:ad23fe03a082 1386
mbed_official 573:ad23fe03a082 1387 /* Enable the TIM Capture/Compare 1 interrupt */
mbed_official 573:ad23fe03a082 1388 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 1389
mbed_official 573:ad23fe03a082 1390 /* Enable the TIM Capture/Compare 2 interrupt */
mbed_official 573:ad23fe03a082 1391 __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2);
mbed_official 573:ad23fe03a082 1392
mbed_official 573:ad23fe03a082 1393 /* Enable the complementary One Pulse output */
mbed_official 573:ad23fe03a082 1394 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE);
mbed_official 573:ad23fe03a082 1395
mbed_official 573:ad23fe03a082 1396 /* Enable the Main Output */
mbed_official 573:ad23fe03a082 1397 __HAL_TIM_MOE_ENABLE(htim);
mbed_official 573:ad23fe03a082 1398
mbed_official 573:ad23fe03a082 1399 /* Return function status */
mbed_official 573:ad23fe03a082 1400 return HAL_OK;
mbed_official 573:ad23fe03a082 1401 }
mbed_official 573:ad23fe03a082 1402
mbed_official 573:ad23fe03a082 1403 /**
mbed_official 573:ad23fe03a082 1404 * @brief Stops the TIM One Pulse signal generation in interrupt mode on the
mbed_official 573:ad23fe03a082 1405 * complementary channel.
mbed_official 573:ad23fe03a082 1406 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1407 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1408 * @param OutputChannel: TIM Channel to be disabled.
mbed_official 573:ad23fe03a082 1409 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1410 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1411 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1412 * @retval HAL status
mbed_official 573:ad23fe03a082 1413 */
mbed_official 573:ad23fe03a082 1414 HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
mbed_official 573:ad23fe03a082 1415 {
mbed_official 573:ad23fe03a082 1416 /* Check the parameters */
mbed_official 573:ad23fe03a082 1417 assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
mbed_official 573:ad23fe03a082 1418
mbed_official 573:ad23fe03a082 1419 /* Disable the TIM Capture/Compare 1 interrupt */
mbed_official 573:ad23fe03a082 1420 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
mbed_official 573:ad23fe03a082 1421
mbed_official 573:ad23fe03a082 1422 /* Disable the TIM Capture/Compare 2 interrupt */
mbed_official 573:ad23fe03a082 1423 __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2);
mbed_official 573:ad23fe03a082 1424
mbed_official 573:ad23fe03a082 1425 /* Disable the complementary One Pulse output */
mbed_official 573:ad23fe03a082 1426 TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE);
mbed_official 573:ad23fe03a082 1427
mbed_official 573:ad23fe03a082 1428 /* Disable the Main Output */
mbed_official 573:ad23fe03a082 1429 __HAL_TIM_MOE_DISABLE(htim);
mbed_official 573:ad23fe03a082 1430
mbed_official 573:ad23fe03a082 1431 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 1432 __HAL_TIM_DISABLE(htim);
mbed_official 573:ad23fe03a082 1433
mbed_official 573:ad23fe03a082 1434 /* Return function status */
mbed_official 573:ad23fe03a082 1435 return HAL_OK;
mbed_official 573:ad23fe03a082 1436 }
mbed_official 573:ad23fe03a082 1437
mbed_official 573:ad23fe03a082 1438 /**
mbed_official 573:ad23fe03a082 1439 * @}
mbed_official 573:ad23fe03a082 1440 */
mbed_official 573:ad23fe03a082 1441
mbed_official 573:ad23fe03a082 1442 /** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
mbed_official 573:ad23fe03a082 1443 * @brief Peripheral Control functions
mbed_official 573:ad23fe03a082 1444 *
mbed_official 573:ad23fe03a082 1445 @verbatim
mbed_official 573:ad23fe03a082 1446 ==============================================================================
mbed_official 573:ad23fe03a082 1447 ##### Peripheral Control functions #####
mbed_official 573:ad23fe03a082 1448 ==============================================================================
mbed_official 573:ad23fe03a082 1449 [..]
mbed_official 573:ad23fe03a082 1450 This section provides functions allowing to:
mbed_official 573:ad23fe03a082 1451 (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode.
mbed_official 573:ad23fe03a082 1452 (+) Configure External Clock source.
mbed_official 573:ad23fe03a082 1453 (+) Configure Complementary channels, break features and dead time.
mbed_official 573:ad23fe03a082 1454 (+) Configure Master and the Slave synchronization.
mbed_official 573:ad23fe03a082 1455 (+) Configure the commutation event in case of use of the Hall sensor interface.
mbed_official 573:ad23fe03a082 1456 (+) Configure the DMA Burst Mode.
mbed_official 573:ad23fe03a082 1457
mbed_official 573:ad23fe03a082 1458 @endverbatim
mbed_official 573:ad23fe03a082 1459 * @{
mbed_official 573:ad23fe03a082 1460 */
mbed_official 573:ad23fe03a082 1461 /**
mbed_official 573:ad23fe03a082 1462 * @brief Configure the TIM commutation event sequence.
mbed_official 573:ad23fe03a082 1463 * @note This function is mandatory to use the commutation event in order to
mbed_official 573:ad23fe03a082 1464 * update the configuration at each commutation detection on the TRGI input of the Timer,
mbed_official 573:ad23fe03a082 1465 * the typical use of this feature is with the use of another Timer(interface Timer)
mbed_official 573:ad23fe03a082 1466 * configured in Hall sensor interface, this interface Timer will generate the
mbed_official 573:ad23fe03a082 1467 * commutation at its TRGO output (connected to Timer used in this function) each time
mbed_official 573:ad23fe03a082 1468 * the TI1 of the Interface Timer detect a commutation at its input TI1.
mbed_official 573:ad23fe03a082 1469 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1470 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1471 * @param InputTrigger: the Internal trigger corresponding to the Timer Interfacing with the Hall sensor.
mbed_official 573:ad23fe03a082 1472 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1473 * @arg TIM_TS_ITR0: Internal trigger 0 selected
mbed_official 573:ad23fe03a082 1474 * @arg TIM_TS_ITR1: Internal trigger 1 selected
mbed_official 573:ad23fe03a082 1475 * @arg TIM_TS_ITR2: Internal trigger 2 selected
mbed_official 573:ad23fe03a082 1476 * @arg TIM_TS_ITR3: Internal trigger 3 selected
mbed_official 573:ad23fe03a082 1477 * @arg TIM_TS_NONE: No trigger is needed
mbed_official 573:ad23fe03a082 1478 * @param CommutationSource: the Commutation Event source.
mbed_official 573:ad23fe03a082 1479 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1480 * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
mbed_official 573:ad23fe03a082 1481 * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
mbed_official 573:ad23fe03a082 1482 * @retval HAL status
mbed_official 573:ad23fe03a082 1483 */
mbed_official 573:ad23fe03a082 1484 HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
mbed_official 573:ad23fe03a082 1485 {
mbed_official 573:ad23fe03a082 1486 /* Check the parameters */
mbed_official 573:ad23fe03a082 1487 assert_param(IS_TIM_ADVANCED_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1488 assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
mbed_official 573:ad23fe03a082 1489
mbed_official 573:ad23fe03a082 1490 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 1491
mbed_official 573:ad23fe03a082 1492 if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
mbed_official 573:ad23fe03a082 1493 (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
mbed_official 573:ad23fe03a082 1494 {
mbed_official 573:ad23fe03a082 1495 /* Select the Input trigger */
mbed_official 573:ad23fe03a082 1496 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 573:ad23fe03a082 1497 htim->Instance->SMCR |= InputTrigger;
mbed_official 573:ad23fe03a082 1498 }
mbed_official 573:ad23fe03a082 1499
mbed_official 573:ad23fe03a082 1500 /* Select the Capture Compare preload feature */
mbed_official 573:ad23fe03a082 1501 htim->Instance->CR2 |= TIM_CR2_CCPC;
mbed_official 573:ad23fe03a082 1502 /* Select the Commutation event source */
mbed_official 573:ad23fe03a082 1503 htim->Instance->CR2 &= ~TIM_CR2_CCUS;
mbed_official 573:ad23fe03a082 1504 htim->Instance->CR2 |= CommutationSource;
mbed_official 573:ad23fe03a082 1505
mbed_official 573:ad23fe03a082 1506 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 1507
mbed_official 573:ad23fe03a082 1508 return HAL_OK;
mbed_official 573:ad23fe03a082 1509 }
mbed_official 573:ad23fe03a082 1510
mbed_official 573:ad23fe03a082 1511 /**
mbed_official 573:ad23fe03a082 1512 * @brief Configure the TIM commutation event sequence with interrupt.
mbed_official 573:ad23fe03a082 1513 * @note This function is mandatory to use the commutation event in order to
mbed_official 573:ad23fe03a082 1514 * update the configuration at each commutation detection on the TRGI input of the Timer,
mbed_official 573:ad23fe03a082 1515 * the typical use of this feature is with the use of another Timer(interface Timer)
mbed_official 573:ad23fe03a082 1516 * configured in Hall sensor interface, this interface Timer will generate the
mbed_official 573:ad23fe03a082 1517 * commutation at its TRGO output (connected to Timer used in this function) each time
mbed_official 573:ad23fe03a082 1518 * the TI1 of the Interface Timer detect a commutation at its input TI1.
mbed_official 573:ad23fe03a082 1519 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1520 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1521 * @param InputTrigger: the Internal trigger corresponding to the Timer Interfacing with the Hall sensor.
mbed_official 573:ad23fe03a082 1522 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1523 * @arg TIM_TS_ITR0: Internal trigger 0 selected
mbed_official 573:ad23fe03a082 1524 * @arg TIM_TS_ITR1: Internal trigger 1 selected
mbed_official 573:ad23fe03a082 1525 * @arg TIM_TS_ITR2: Internal trigger 2 selected
mbed_official 573:ad23fe03a082 1526 * @arg TIM_TS_ITR3: Internal trigger 3 selected
mbed_official 573:ad23fe03a082 1527 * @arg TIM_TS_NONE: No trigger is needed
mbed_official 573:ad23fe03a082 1528 * @param CommutationSource: the Commutation Event source.
mbed_official 573:ad23fe03a082 1529 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1530 * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
mbed_official 573:ad23fe03a082 1531 * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
mbed_official 573:ad23fe03a082 1532 * @retval HAL status
mbed_official 573:ad23fe03a082 1533 */
mbed_official 573:ad23fe03a082 1534 HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
mbed_official 573:ad23fe03a082 1535 {
mbed_official 573:ad23fe03a082 1536 /* Check the parameters */
mbed_official 573:ad23fe03a082 1537 assert_param(IS_TIM_ADVANCED_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1538 assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
mbed_official 573:ad23fe03a082 1539
mbed_official 573:ad23fe03a082 1540 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 1541
mbed_official 573:ad23fe03a082 1542 if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
mbed_official 573:ad23fe03a082 1543 (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
mbed_official 573:ad23fe03a082 1544 {
mbed_official 573:ad23fe03a082 1545 /* Select the Input trigger */
mbed_official 573:ad23fe03a082 1546 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 573:ad23fe03a082 1547 htim->Instance->SMCR |= InputTrigger;
mbed_official 573:ad23fe03a082 1548 }
mbed_official 573:ad23fe03a082 1549
mbed_official 573:ad23fe03a082 1550 /* Select the Capture Compare preload feature */
mbed_official 573:ad23fe03a082 1551 htim->Instance->CR2 |= TIM_CR2_CCPC;
mbed_official 573:ad23fe03a082 1552 /* Select the Commutation event source */
mbed_official 573:ad23fe03a082 1553 htim->Instance->CR2 &= ~TIM_CR2_CCUS;
mbed_official 573:ad23fe03a082 1554 htim->Instance->CR2 |= CommutationSource;
mbed_official 573:ad23fe03a082 1555
mbed_official 573:ad23fe03a082 1556 /* Enable the Commutation Interrupt Request */
mbed_official 573:ad23fe03a082 1557 __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM);
mbed_official 573:ad23fe03a082 1558
mbed_official 573:ad23fe03a082 1559 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 1560
mbed_official 573:ad23fe03a082 1561 return HAL_OK;
mbed_official 573:ad23fe03a082 1562 }
mbed_official 573:ad23fe03a082 1563
mbed_official 573:ad23fe03a082 1564 /**
mbed_official 573:ad23fe03a082 1565 * @brief Configure the TIM commutation event sequence with DMA.
mbed_official 573:ad23fe03a082 1566 * @note This function is mandatory to use the commutation event in order to
mbed_official 573:ad23fe03a082 1567 * update the configuration at each commutation detection on the TRGI input of the Timer,
mbed_official 573:ad23fe03a082 1568 * the typical use of this feature is with the use of another Timer(interface Timer)
mbed_official 573:ad23fe03a082 1569 * configured in Hall sensor interface, this interface Timer will generate the
mbed_official 573:ad23fe03a082 1570 * commutation at its TRGO output (connected to Timer used in this function) each time
mbed_official 573:ad23fe03a082 1571 * the TI1 of the Interface Timer detect a commutation at its input TI1.
mbed_official 573:ad23fe03a082 1572 * @note: The user should configure the DMA in his own software, in This function only the COMDE bit is set
mbed_official 573:ad23fe03a082 1573 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 1574 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 1575 * @param InputTrigger: the Internal trigger corresponding to the Timer Interfacing with the Hall sensor.
mbed_official 573:ad23fe03a082 1576 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1577 * @arg TIM_TS_ITR0: Internal trigger 0 selected
mbed_official 573:ad23fe03a082 1578 * @arg TIM_TS_ITR1: Internal trigger 1 selected
mbed_official 573:ad23fe03a082 1579 * @arg TIM_TS_ITR2: Internal trigger 2 selected
mbed_official 573:ad23fe03a082 1580 * @arg TIM_TS_ITR3: Internal trigger 3 selected
mbed_official 573:ad23fe03a082 1581 * @arg TIM_TS_NONE: No trigger is needed
mbed_official 573:ad23fe03a082 1582 * @param CommutationSource: the Commutation Event source.
mbed_official 573:ad23fe03a082 1583 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1584 * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer
mbed_official 573:ad23fe03a082 1585 * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
mbed_official 573:ad23fe03a082 1586 * @retval HAL status
mbed_official 573:ad23fe03a082 1587 */
mbed_official 573:ad23fe03a082 1588 HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
mbed_official 573:ad23fe03a082 1589 {
mbed_official 573:ad23fe03a082 1590 /* Check the parameters */
mbed_official 573:ad23fe03a082 1591 assert_param(IS_TIM_ADVANCED_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1592 assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger));
mbed_official 573:ad23fe03a082 1593
mbed_official 573:ad23fe03a082 1594 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 1595
mbed_official 573:ad23fe03a082 1596 if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) ||
mbed_official 573:ad23fe03a082 1597 (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3))
mbed_official 573:ad23fe03a082 1598 {
mbed_official 573:ad23fe03a082 1599 /* Select the Input trigger */
mbed_official 573:ad23fe03a082 1600 htim->Instance->SMCR &= ~TIM_SMCR_TS;
mbed_official 573:ad23fe03a082 1601 htim->Instance->SMCR |= InputTrigger;
mbed_official 573:ad23fe03a082 1602 }
mbed_official 573:ad23fe03a082 1603
mbed_official 573:ad23fe03a082 1604 /* Select the Capture Compare preload feature */
mbed_official 573:ad23fe03a082 1605 htim->Instance->CR2 |= TIM_CR2_CCPC;
mbed_official 573:ad23fe03a082 1606 /* Select the Commutation event source */
mbed_official 573:ad23fe03a082 1607 htim->Instance->CR2 &= ~TIM_CR2_CCUS;
mbed_official 573:ad23fe03a082 1608 htim->Instance->CR2 |= CommutationSource;
mbed_official 573:ad23fe03a082 1609
mbed_official 573:ad23fe03a082 1610 /* Enable the Commutation DMA Request */
mbed_official 573:ad23fe03a082 1611 /* Set the DMA Commutation Callback */
mbed_official 573:ad23fe03a082 1612 htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = HAL_TIMEx_DMACommutationCplt;
mbed_official 573:ad23fe03a082 1613 /* Set the DMA error callback */
mbed_official 573:ad23fe03a082 1614 htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = HAL_TIM_DMAError;
mbed_official 573:ad23fe03a082 1615
mbed_official 573:ad23fe03a082 1616 /* Enable the Commutation DMA Request */
mbed_official 573:ad23fe03a082 1617 __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM);
mbed_official 573:ad23fe03a082 1618
mbed_official 573:ad23fe03a082 1619 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 1620
mbed_official 573:ad23fe03a082 1621 return HAL_OK;
mbed_official 573:ad23fe03a082 1622 }
mbed_official 573:ad23fe03a082 1623
mbed_official 573:ad23fe03a082 1624 /**
mbed_official 573:ad23fe03a082 1625 * @brief Initializes the TIM Output Compare Channels according to the specified
mbed_official 573:ad23fe03a082 1626 * parameters in the TIM_OC_InitTypeDef.
mbed_official 573:ad23fe03a082 1627 * @param htim: TIM Output Compare handle
mbed_official 573:ad23fe03a082 1628 * @param sConfig: TIM Output Compare configuration structure
mbed_official 573:ad23fe03a082 1629 * @param Channel : TIM Channels to configure
mbed_official 573:ad23fe03a082 1630 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1631 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1632 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1633 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 1634 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 1635 * @arg TIM_CHANNEL_5: TIM Channel 5 selected
mbed_official 573:ad23fe03a082 1636 * @arg TIM_CHANNEL_6: TIM Channel 6 selected
mbed_official 573:ad23fe03a082 1637 * @arg TIM_CHANNEL_ALL: all output channels supported by the timer instance selected
mbed_official 573:ad23fe03a082 1638 * @retval HAL status
mbed_official 573:ad23fe03a082 1639 */
mbed_official 573:ad23fe03a082 1640 HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel)
mbed_official 573:ad23fe03a082 1641 {
mbed_official 573:ad23fe03a082 1642 /* Check the parameters */
mbed_official 573:ad23fe03a082 1643 assert_param(IS_TIM_CHANNELS(Channel));
mbed_official 573:ad23fe03a082 1644 assert_param(IS_TIM_OC_MODE(sConfig->OCMode));
mbed_official 573:ad23fe03a082 1645 assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));
mbed_official 573:ad23fe03a082 1646 assert_param(IS_TIM_OCN_POLARITY(sConfig->OCNPolarity));
mbed_official 573:ad23fe03a082 1647 assert_param(IS_TIM_OCNIDLE_STATE(sConfig->OCNIdleState));
mbed_official 573:ad23fe03a082 1648 assert_param(IS_TIM_OCIDLE_STATE(sConfig->OCIdleState));
mbed_official 573:ad23fe03a082 1649
mbed_official 573:ad23fe03a082 1650 /* Check input state */
mbed_official 573:ad23fe03a082 1651 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 1652
mbed_official 573:ad23fe03a082 1653 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 1654
mbed_official 573:ad23fe03a082 1655 switch (Channel)
mbed_official 573:ad23fe03a082 1656 {
mbed_official 573:ad23fe03a082 1657 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 1658 {
mbed_official 573:ad23fe03a082 1659 /* Check the parameters */
mbed_official 573:ad23fe03a082 1660 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1661
mbed_official 573:ad23fe03a082 1662 /* Configure the TIM Channel 1 in Output Compare */
mbed_official 573:ad23fe03a082 1663 TIM_OC1_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1664 }
mbed_official 573:ad23fe03a082 1665 break;
mbed_official 573:ad23fe03a082 1666
mbed_official 573:ad23fe03a082 1667 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 1668 {
mbed_official 573:ad23fe03a082 1669 /* Check the parameters */
mbed_official 573:ad23fe03a082 1670 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1671
mbed_official 573:ad23fe03a082 1672 /* Configure the TIM Channel 2 in Output Compare */
mbed_official 573:ad23fe03a082 1673 TIM_OC2_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1674 }
mbed_official 573:ad23fe03a082 1675 break;
mbed_official 573:ad23fe03a082 1676
mbed_official 573:ad23fe03a082 1677 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 1678 {
mbed_official 573:ad23fe03a082 1679 /* Check the parameters */
mbed_official 573:ad23fe03a082 1680 assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1681
mbed_official 573:ad23fe03a082 1682 /* Configure the TIM Channel 3 in Output Compare */
mbed_official 573:ad23fe03a082 1683 TIM_OC3_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1684 }
mbed_official 573:ad23fe03a082 1685 break;
mbed_official 573:ad23fe03a082 1686
mbed_official 573:ad23fe03a082 1687 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 1688 {
mbed_official 573:ad23fe03a082 1689 /* Check the parameters */
mbed_official 573:ad23fe03a082 1690 assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1691
mbed_official 573:ad23fe03a082 1692 /* Configure the TIM Channel 4 in Output Compare */
mbed_official 573:ad23fe03a082 1693 TIM_OC4_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1694 }
mbed_official 573:ad23fe03a082 1695 break;
mbed_official 573:ad23fe03a082 1696
mbed_official 573:ad23fe03a082 1697 case TIM_CHANNEL_5:
mbed_official 573:ad23fe03a082 1698 {
mbed_official 573:ad23fe03a082 1699 /* Check the parameters */
mbed_official 573:ad23fe03a082 1700 assert_param(IS_TIM_CC5_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1701
mbed_official 573:ad23fe03a082 1702 /* Configure the TIM Channel 5 in Output Compare */
mbed_official 573:ad23fe03a082 1703 TIM_OC5_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1704 }
mbed_official 573:ad23fe03a082 1705 break;
mbed_official 573:ad23fe03a082 1706
mbed_official 573:ad23fe03a082 1707 case TIM_CHANNEL_6:
mbed_official 573:ad23fe03a082 1708 {
mbed_official 573:ad23fe03a082 1709 /* Check the parameters */
mbed_official 573:ad23fe03a082 1710 assert_param(IS_TIM_CC6_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1711
mbed_official 573:ad23fe03a082 1712 /* Configure the TIM Channel 6 in Output Compare */
mbed_official 573:ad23fe03a082 1713 TIM_OC6_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1714 }
mbed_official 573:ad23fe03a082 1715 break;
mbed_official 573:ad23fe03a082 1716
mbed_official 573:ad23fe03a082 1717 default:
mbed_official 573:ad23fe03a082 1718 break;
mbed_official 573:ad23fe03a082 1719 }
mbed_official 573:ad23fe03a082 1720
mbed_official 573:ad23fe03a082 1721 htim->State = HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 1722
mbed_official 573:ad23fe03a082 1723 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 1724
mbed_official 573:ad23fe03a082 1725 return HAL_OK;
mbed_official 573:ad23fe03a082 1726 }
mbed_official 573:ad23fe03a082 1727
mbed_official 573:ad23fe03a082 1728 /**
mbed_official 573:ad23fe03a082 1729 * @brief Initializes the TIM PWM channels according to the specified
mbed_official 573:ad23fe03a082 1730 * parameters in the TIM_OC_InitTypeDef.
mbed_official 573:ad23fe03a082 1731 * @param htim: TIM PWM handle
mbed_official 573:ad23fe03a082 1732 * @param sConfig: TIM PWM configuration structure
mbed_official 573:ad23fe03a082 1733 * @param Channel : TIM Channels to be configured
mbed_official 573:ad23fe03a082 1734 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1735 * @arg TIM_CHANNEL_1: TIM Channel 1 selected
mbed_official 573:ad23fe03a082 1736 * @arg TIM_CHANNEL_2: TIM Channel 2 selected
mbed_official 573:ad23fe03a082 1737 * @arg TIM_CHANNEL_3: TIM Channel 3 selected
mbed_official 573:ad23fe03a082 1738 * @arg TIM_CHANNEL_4: TIM Channel 4 selected
mbed_official 573:ad23fe03a082 1739 * @arg TIM_CHANNEL_5: TIM Channel 5 selected
mbed_official 573:ad23fe03a082 1740 * @arg TIM_CHANNEL_6: TIM Channel 6 selected
mbed_official 573:ad23fe03a082 1741 * @arg TIM_CHANNEL_ALL: all PWM channels supported by the timer instance selected
mbed_official 573:ad23fe03a082 1742 * @retval HAL status
mbed_official 573:ad23fe03a082 1743 */
mbed_official 573:ad23fe03a082 1744 HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim,
mbed_official 573:ad23fe03a082 1745 TIM_OC_InitTypeDef* sConfig,
mbed_official 573:ad23fe03a082 1746 uint32_t Channel)
mbed_official 573:ad23fe03a082 1747 {
mbed_official 573:ad23fe03a082 1748 /* Check the parameters */
mbed_official 573:ad23fe03a082 1749 assert_param(IS_TIM_CHANNELS(Channel));
mbed_official 573:ad23fe03a082 1750 assert_param(IS_TIM_PWM_MODE(sConfig->OCMode));
mbed_official 573:ad23fe03a082 1751 assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity));
mbed_official 573:ad23fe03a082 1752 assert_param(IS_TIM_OCN_POLARITY(sConfig->OCNPolarity));
mbed_official 573:ad23fe03a082 1753 assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode));
mbed_official 573:ad23fe03a082 1754 assert_param(IS_TIM_OCNIDLE_STATE(sConfig->OCNIdleState));
mbed_official 573:ad23fe03a082 1755 assert_param(IS_TIM_OCIDLE_STATE(sConfig->OCIdleState));
mbed_official 573:ad23fe03a082 1756
mbed_official 573:ad23fe03a082 1757 /* Check input state */
mbed_official 573:ad23fe03a082 1758 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 1759
mbed_official 573:ad23fe03a082 1760 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 1761
mbed_official 573:ad23fe03a082 1762 switch (Channel)
mbed_official 573:ad23fe03a082 1763 {
mbed_official 573:ad23fe03a082 1764 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 1765 {
mbed_official 573:ad23fe03a082 1766 /* Check the parameters */
mbed_official 573:ad23fe03a082 1767 assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1768
mbed_official 573:ad23fe03a082 1769 /* Configure the Channel 1 in PWM mode */
mbed_official 573:ad23fe03a082 1770 TIM_OC1_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1771
mbed_official 573:ad23fe03a082 1772 /* Set the Preload enable bit for channel1 */
mbed_official 573:ad23fe03a082 1773 htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE;
mbed_official 573:ad23fe03a082 1774
mbed_official 573:ad23fe03a082 1775 /* Configure the Output Fast mode */
mbed_official 573:ad23fe03a082 1776 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE;
mbed_official 573:ad23fe03a082 1777 htim->Instance->CCMR1 |= sConfig->OCFastMode;
mbed_official 573:ad23fe03a082 1778 }
mbed_official 573:ad23fe03a082 1779 break;
mbed_official 573:ad23fe03a082 1780
mbed_official 573:ad23fe03a082 1781 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 1782 {
mbed_official 573:ad23fe03a082 1783 /* Check the parameters */
mbed_official 573:ad23fe03a082 1784 assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1785
mbed_official 573:ad23fe03a082 1786 /* Configure the Channel 2 in PWM mode */
mbed_official 573:ad23fe03a082 1787 TIM_OC2_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1788
mbed_official 573:ad23fe03a082 1789 /* Set the Preload enable bit for channel2 */
mbed_official 573:ad23fe03a082 1790 htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE;
mbed_official 573:ad23fe03a082 1791
mbed_official 573:ad23fe03a082 1792 /* Configure the Output Fast mode */
mbed_official 573:ad23fe03a082 1793 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE;
mbed_official 573:ad23fe03a082 1794 htim->Instance->CCMR1 |= sConfig->OCFastMode << 8;
mbed_official 573:ad23fe03a082 1795 }
mbed_official 573:ad23fe03a082 1796 break;
mbed_official 573:ad23fe03a082 1797
mbed_official 573:ad23fe03a082 1798 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 1799 {
mbed_official 573:ad23fe03a082 1800 /* Check the parameters */
mbed_official 573:ad23fe03a082 1801 assert_param(IS_TIM_CC3_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1802
mbed_official 573:ad23fe03a082 1803 /* Configure the Channel 3 in PWM mode */
mbed_official 573:ad23fe03a082 1804 TIM_OC3_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1805
mbed_official 573:ad23fe03a082 1806 /* Set the Preload enable bit for channel3 */
mbed_official 573:ad23fe03a082 1807 htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE;
mbed_official 573:ad23fe03a082 1808
mbed_official 573:ad23fe03a082 1809 /* Configure the Output Fast mode */
mbed_official 573:ad23fe03a082 1810 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE;
mbed_official 573:ad23fe03a082 1811 htim->Instance->CCMR2 |= sConfig->OCFastMode;
mbed_official 573:ad23fe03a082 1812 }
mbed_official 573:ad23fe03a082 1813 break;
mbed_official 573:ad23fe03a082 1814
mbed_official 573:ad23fe03a082 1815 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 1816 {
mbed_official 573:ad23fe03a082 1817 /* Check the parameters */
mbed_official 573:ad23fe03a082 1818 assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1819
mbed_official 573:ad23fe03a082 1820 /* Configure the Channel 4 in PWM mode */
mbed_official 573:ad23fe03a082 1821 TIM_OC4_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1822
mbed_official 573:ad23fe03a082 1823 /* Set the Preload enable bit for channel4 */
mbed_official 573:ad23fe03a082 1824 htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE;
mbed_official 573:ad23fe03a082 1825
mbed_official 573:ad23fe03a082 1826 /* Configure the Output Fast mode */
mbed_official 573:ad23fe03a082 1827 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE;
mbed_official 573:ad23fe03a082 1828 htim->Instance->CCMR2 |= sConfig->OCFastMode << 8;
mbed_official 573:ad23fe03a082 1829 }
mbed_official 573:ad23fe03a082 1830 break;
mbed_official 573:ad23fe03a082 1831
mbed_official 573:ad23fe03a082 1832 case TIM_CHANNEL_5:
mbed_official 573:ad23fe03a082 1833 {
mbed_official 573:ad23fe03a082 1834 /* Check the parameters */
mbed_official 573:ad23fe03a082 1835 assert_param(IS_TIM_CC5_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1836
mbed_official 573:ad23fe03a082 1837 /* Configure the Channel 5 in PWM mode */
mbed_official 573:ad23fe03a082 1838 TIM_OC5_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1839
mbed_official 573:ad23fe03a082 1840 /* Set the Preload enable bit for channel5*/
mbed_official 573:ad23fe03a082 1841 htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE;
mbed_official 573:ad23fe03a082 1842
mbed_official 573:ad23fe03a082 1843 /* Configure the Output Fast mode */
mbed_official 573:ad23fe03a082 1844 htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE;
mbed_official 573:ad23fe03a082 1845 htim->Instance->CCMR3 |= sConfig->OCFastMode;
mbed_official 573:ad23fe03a082 1846 }
mbed_official 573:ad23fe03a082 1847 break;
mbed_official 573:ad23fe03a082 1848
mbed_official 573:ad23fe03a082 1849 case TIM_CHANNEL_6:
mbed_official 573:ad23fe03a082 1850 {
mbed_official 573:ad23fe03a082 1851 /* Check the parameters */
mbed_official 573:ad23fe03a082 1852 assert_param(IS_TIM_CC6_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1853
mbed_official 573:ad23fe03a082 1854 /* Configure the Channel 5 in PWM mode */
mbed_official 573:ad23fe03a082 1855 TIM_OC6_SetConfig(htim->Instance, sConfig);
mbed_official 573:ad23fe03a082 1856
mbed_official 573:ad23fe03a082 1857 /* Set the Preload enable bit for channel6 */
mbed_official 573:ad23fe03a082 1858 htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE;
mbed_official 573:ad23fe03a082 1859
mbed_official 573:ad23fe03a082 1860 /* Configure the Output Fast mode */
mbed_official 573:ad23fe03a082 1861 htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE;
mbed_official 573:ad23fe03a082 1862 htim->Instance->CCMR3 |= sConfig->OCFastMode << 8;
mbed_official 573:ad23fe03a082 1863 }
mbed_official 573:ad23fe03a082 1864 break;
mbed_official 573:ad23fe03a082 1865
mbed_official 573:ad23fe03a082 1866 default:
mbed_official 573:ad23fe03a082 1867 break;
mbed_official 573:ad23fe03a082 1868 }
mbed_official 573:ad23fe03a082 1869
mbed_official 573:ad23fe03a082 1870 htim->State = HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 1871
mbed_official 573:ad23fe03a082 1872 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 1873
mbed_official 573:ad23fe03a082 1874 return HAL_OK;
mbed_official 573:ad23fe03a082 1875 }
mbed_official 573:ad23fe03a082 1876
mbed_official 573:ad23fe03a082 1877 /**
mbed_official 573:ad23fe03a082 1878 * @brief Configures the OCRef clear feature
mbed_official 573:ad23fe03a082 1879 * @param htim: TIM handle
mbed_official 573:ad23fe03a082 1880 * @param sClearInputConfig: pointer to a TIM_ClearInputConfigTypeDef structure that
mbed_official 573:ad23fe03a082 1881 * contains the OCREF clear feature and parameters for the TIM peripheral.
mbed_official 573:ad23fe03a082 1882 * @param Channel: specifies the TIM Channel
mbed_official 573:ad23fe03a082 1883 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 1884 * @arg TIM_Channel_1: TIM Channel 1
mbed_official 573:ad23fe03a082 1885 * @arg TIM_Channel_2: TIM Channel 2
mbed_official 573:ad23fe03a082 1886 * @arg TIM_Channel_3: TIM Channel 3
mbed_official 573:ad23fe03a082 1887 * @arg TIM_Channel_4: TIM Channel 4
mbed_official 573:ad23fe03a082 1888 * @arg TIM_Channel_5: TIM Channel 5
mbed_official 573:ad23fe03a082 1889 * @arg TIM_Channel_6: TIM Channel 6
mbed_official 573:ad23fe03a082 1890 * @retval None
mbed_official 573:ad23fe03a082 1891 */
mbed_official 573:ad23fe03a082 1892 HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim,
mbed_official 573:ad23fe03a082 1893 TIM_ClearInputConfigTypeDef *sClearInputConfig,
mbed_official 573:ad23fe03a082 1894 uint32_t Channel)
mbed_official 573:ad23fe03a082 1895 {
mbed_official 573:ad23fe03a082 1896 uint32_t tmpsmcr = 0;
mbed_official 573:ad23fe03a082 1897
mbed_official 573:ad23fe03a082 1898 /* Check the parameters */
mbed_official 573:ad23fe03a082 1899 assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 1900 assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource));
mbed_official 573:ad23fe03a082 1901
mbed_official 573:ad23fe03a082 1902 /* Check input state */
mbed_official 573:ad23fe03a082 1903 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 1904
mbed_official 573:ad23fe03a082 1905 switch (sClearInputConfig->ClearInputSource)
mbed_official 573:ad23fe03a082 1906 {
mbed_official 573:ad23fe03a082 1907 case TIM_CLEARINPUTSOURCE_NONE:
mbed_official 573:ad23fe03a082 1908 {
mbed_official 573:ad23fe03a082 1909 /* Clear the OCREF clear selection bit */
mbed_official 573:ad23fe03a082 1910 tmpsmcr &= ~TIM_SMCR_OCCS;
mbed_official 573:ad23fe03a082 1911
mbed_official 573:ad23fe03a082 1912 /* Clear the ETR Bits */
mbed_official 573:ad23fe03a082 1913 tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
mbed_official 573:ad23fe03a082 1914
mbed_official 573:ad23fe03a082 1915 /* Set TIMx_SMCR */
mbed_official 573:ad23fe03a082 1916 htim->Instance->SMCR = tmpsmcr;
mbed_official 573:ad23fe03a082 1917 }
mbed_official 573:ad23fe03a082 1918 break;
mbed_official 573:ad23fe03a082 1919
mbed_official 573:ad23fe03a082 1920 case TIM_CLEARINPUTSOURCE_OCREFCLR:
mbed_official 573:ad23fe03a082 1921 {
mbed_official 573:ad23fe03a082 1922 /* Clear the OCREF clear selection bit */
mbed_official 573:ad23fe03a082 1923 htim->Instance->SMCR &= ~TIM_SMCR_OCCS;
mbed_official 573:ad23fe03a082 1924 }
mbed_official 573:ad23fe03a082 1925 break;
mbed_official 573:ad23fe03a082 1926
mbed_official 573:ad23fe03a082 1927 case TIM_CLEARINPUTSOURCE_ETR:
mbed_official 573:ad23fe03a082 1928 {
mbed_official 573:ad23fe03a082 1929 /* Check the parameters */
mbed_official 573:ad23fe03a082 1930 assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity));
mbed_official 573:ad23fe03a082 1931 assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler));
mbed_official 573:ad23fe03a082 1932 assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter));
mbed_official 573:ad23fe03a082 1933
mbed_official 573:ad23fe03a082 1934 TIM_ETR_SetConfig(htim->Instance,
mbed_official 573:ad23fe03a082 1935 sClearInputConfig->ClearInputPrescaler,
mbed_official 573:ad23fe03a082 1936 sClearInputConfig->ClearInputPolarity,
mbed_official 573:ad23fe03a082 1937 sClearInputConfig->ClearInputFilter);
mbed_official 573:ad23fe03a082 1938
mbed_official 573:ad23fe03a082 1939 /* Set the OCREF clear selection bit */
mbed_official 573:ad23fe03a082 1940 htim->Instance->SMCR |= TIM_SMCR_OCCS;
mbed_official 573:ad23fe03a082 1941 }
mbed_official 573:ad23fe03a082 1942 break;
mbed_official 573:ad23fe03a082 1943 default:
mbed_official 573:ad23fe03a082 1944 break;
mbed_official 573:ad23fe03a082 1945 }
mbed_official 573:ad23fe03a082 1946
mbed_official 573:ad23fe03a082 1947 switch (Channel)
mbed_official 573:ad23fe03a082 1948 {
mbed_official 573:ad23fe03a082 1949 case TIM_CHANNEL_1:
mbed_official 573:ad23fe03a082 1950 {
mbed_official 573:ad23fe03a082 1951 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 573:ad23fe03a082 1952 {
mbed_official 573:ad23fe03a082 1953 /* Enable the Ocref clear feature for Channel 1 */
mbed_official 573:ad23fe03a082 1954 htim->Instance->CCMR1 |= TIM_CCMR1_OC1CE;
mbed_official 573:ad23fe03a082 1955 }
mbed_official 573:ad23fe03a082 1956 else
mbed_official 573:ad23fe03a082 1957 {
mbed_official 573:ad23fe03a082 1958 /* Disable the Ocref clear feature for Channel 1 */
mbed_official 573:ad23fe03a082 1959 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1CE;
mbed_official 573:ad23fe03a082 1960 }
mbed_official 573:ad23fe03a082 1961 }
mbed_official 573:ad23fe03a082 1962 break;
mbed_official 573:ad23fe03a082 1963 case TIM_CHANNEL_2:
mbed_official 573:ad23fe03a082 1964 {
mbed_official 573:ad23fe03a082 1965 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 573:ad23fe03a082 1966 {
mbed_official 573:ad23fe03a082 1967 /* Enable the Ocref clear feature for Channel 2 */
mbed_official 573:ad23fe03a082 1968 htim->Instance->CCMR1 |= TIM_CCMR1_OC2CE;
mbed_official 573:ad23fe03a082 1969 }
mbed_official 573:ad23fe03a082 1970 else
mbed_official 573:ad23fe03a082 1971 {
mbed_official 573:ad23fe03a082 1972 /* Disable the Ocref clear feature for Channel 2 */
mbed_official 573:ad23fe03a082 1973 htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2CE;
mbed_official 573:ad23fe03a082 1974 }
mbed_official 573:ad23fe03a082 1975 }
mbed_official 573:ad23fe03a082 1976 break;
mbed_official 573:ad23fe03a082 1977 case TIM_CHANNEL_3:
mbed_official 573:ad23fe03a082 1978 {
mbed_official 573:ad23fe03a082 1979 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 573:ad23fe03a082 1980 {
mbed_official 573:ad23fe03a082 1981 /* Enable the Ocref clear feature for Channel 3 */
mbed_official 573:ad23fe03a082 1982 htim->Instance->CCMR2 |= TIM_CCMR2_OC3CE;
mbed_official 573:ad23fe03a082 1983 }
mbed_official 573:ad23fe03a082 1984 else
mbed_official 573:ad23fe03a082 1985 {
mbed_official 573:ad23fe03a082 1986 /* Disable the Ocref clear feature for Channel 3 */
mbed_official 573:ad23fe03a082 1987 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3CE;
mbed_official 573:ad23fe03a082 1988 }
mbed_official 573:ad23fe03a082 1989 }
mbed_official 573:ad23fe03a082 1990 break;
mbed_official 573:ad23fe03a082 1991 case TIM_CHANNEL_4:
mbed_official 573:ad23fe03a082 1992 {
mbed_official 573:ad23fe03a082 1993 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 573:ad23fe03a082 1994 {
mbed_official 573:ad23fe03a082 1995 /* Enable the Ocref clear feature for Channel 4 */
mbed_official 573:ad23fe03a082 1996 htim->Instance->CCMR2 |= TIM_CCMR2_OC4CE;
mbed_official 573:ad23fe03a082 1997 }
mbed_official 573:ad23fe03a082 1998 else
mbed_official 573:ad23fe03a082 1999 {
mbed_official 573:ad23fe03a082 2000 /* Disable the Ocref clear feature for Channel 4 */
mbed_official 573:ad23fe03a082 2001 htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4CE;
mbed_official 573:ad23fe03a082 2002 }
mbed_official 573:ad23fe03a082 2003 }
mbed_official 573:ad23fe03a082 2004 break;
mbed_official 573:ad23fe03a082 2005 case TIM_CHANNEL_5:
mbed_official 573:ad23fe03a082 2006 {
mbed_official 573:ad23fe03a082 2007 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 573:ad23fe03a082 2008 {
mbed_official 573:ad23fe03a082 2009 /* Enable the Ocref clear feature for Channel 1 */
mbed_official 573:ad23fe03a082 2010 htim->Instance->CCMR3 |= TIM_CCMR3_OC5CE;
mbed_official 573:ad23fe03a082 2011 }
mbed_official 573:ad23fe03a082 2012 else
mbed_official 573:ad23fe03a082 2013 {
mbed_official 573:ad23fe03a082 2014 /* Disable the Ocref clear feature for Channel 1 */
mbed_official 573:ad23fe03a082 2015 htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5CE;
mbed_official 573:ad23fe03a082 2016 }
mbed_official 573:ad23fe03a082 2017 }
mbed_official 573:ad23fe03a082 2018 break;
mbed_official 573:ad23fe03a082 2019 case TIM_CHANNEL_6:
mbed_official 573:ad23fe03a082 2020 {
mbed_official 573:ad23fe03a082 2021 if(sClearInputConfig->ClearInputState != RESET)
mbed_official 573:ad23fe03a082 2022 {
mbed_official 573:ad23fe03a082 2023 /* Enable the Ocref clear feature for Channel 1 */
mbed_official 573:ad23fe03a082 2024 htim->Instance->CCMR3 |= TIM_CCMR3_OC6CE;
mbed_official 573:ad23fe03a082 2025 }
mbed_official 573:ad23fe03a082 2026 else
mbed_official 573:ad23fe03a082 2027 {
mbed_official 573:ad23fe03a082 2028 /* Disable the Ocref clear feature for Channel 1 */
mbed_official 573:ad23fe03a082 2029 htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6CE;
mbed_official 573:ad23fe03a082 2030 }
mbed_official 573:ad23fe03a082 2031 }
mbed_official 573:ad23fe03a082 2032 break;
mbed_official 573:ad23fe03a082 2033 default:
mbed_official 573:ad23fe03a082 2034 break;
mbed_official 573:ad23fe03a082 2035 }
mbed_official 573:ad23fe03a082 2036
mbed_official 573:ad23fe03a082 2037 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 2038
mbed_official 573:ad23fe03a082 2039 return HAL_OK;
mbed_official 573:ad23fe03a082 2040 }
mbed_official 573:ad23fe03a082 2041
mbed_official 573:ad23fe03a082 2042 /**
mbed_official 573:ad23fe03a082 2043 * @brief Configures the TIM in master mode.
mbed_official 573:ad23fe03a082 2044 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 2045 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 2046 * @param sMasterConfig: pointer to a TIM_MasterConfigTypeDef structure that
mbed_official 573:ad23fe03a082 2047 * contains the selected trigger output (TRGO) and the Master/Slave
mbed_official 573:ad23fe03a082 2048 * mode.
mbed_official 573:ad23fe03a082 2049 * @retval HAL status
mbed_official 573:ad23fe03a082 2050 */
mbed_official 573:ad23fe03a082 2051 HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig)
mbed_official 573:ad23fe03a082 2052 {
mbed_official 573:ad23fe03a082 2053 uint32_t tmpcr2;
mbed_official 573:ad23fe03a082 2054 uint32_t tmpsmcr;
mbed_official 573:ad23fe03a082 2055
mbed_official 573:ad23fe03a082 2056 /* Check the parameters */
mbed_official 573:ad23fe03a082 2057 assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 2058 assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
mbed_official 573:ad23fe03a082 2059 assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
mbed_official 573:ad23fe03a082 2060
mbed_official 573:ad23fe03a082 2061 /* Check input state */
mbed_official 573:ad23fe03a082 2062 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 2063
mbed_official 573:ad23fe03a082 2064 /* Get the TIMx CR2 register value */
mbed_official 573:ad23fe03a082 2065 tmpcr2 = htim->Instance->CR2;
mbed_official 573:ad23fe03a082 2066
mbed_official 573:ad23fe03a082 2067 /* Get the TIMx SMCR register value */
mbed_official 573:ad23fe03a082 2068 tmpsmcr = htim->Instance->SMCR;
mbed_official 573:ad23fe03a082 2069
mbed_official 573:ad23fe03a082 2070 /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */
mbed_official 573:ad23fe03a082 2071 if (IS_TIM_TRGO2_INSTANCE(htim->Instance))
mbed_official 573:ad23fe03a082 2072 {
mbed_official 573:ad23fe03a082 2073 /* Check the parameters */
mbed_official 573:ad23fe03a082 2074 assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2));
mbed_official 573:ad23fe03a082 2075
mbed_official 573:ad23fe03a082 2076 /* Clear the MMS2 bits */
mbed_official 573:ad23fe03a082 2077 tmpcr2 &= ~TIM_CR2_MMS2;
mbed_official 573:ad23fe03a082 2078 /* Select the TRGO2 source*/
mbed_official 573:ad23fe03a082 2079 tmpcr2 |= sMasterConfig->MasterOutputTrigger2;
mbed_official 573:ad23fe03a082 2080 }
mbed_official 573:ad23fe03a082 2081
mbed_official 573:ad23fe03a082 2082 /* Reset the MMS Bits */
mbed_official 573:ad23fe03a082 2083 tmpcr2 &= ~TIM_CR2_MMS;
mbed_official 573:ad23fe03a082 2084 /* Select the TRGO source */
mbed_official 573:ad23fe03a082 2085 tmpcr2 |= sMasterConfig->MasterOutputTrigger;
mbed_official 573:ad23fe03a082 2086
mbed_official 573:ad23fe03a082 2087 /* Reset the MSM Bit */
mbed_official 573:ad23fe03a082 2088 tmpsmcr &= ~TIM_SMCR_MSM;
mbed_official 573:ad23fe03a082 2089 /* Set master mode */
mbed_official 573:ad23fe03a082 2090 tmpsmcr |= sMasterConfig->MasterSlaveMode;
mbed_official 573:ad23fe03a082 2091
mbed_official 573:ad23fe03a082 2092 /* Update TIMx CR2 */
mbed_official 573:ad23fe03a082 2093 htim->Instance->CR2 = tmpcr2;
mbed_official 573:ad23fe03a082 2094
mbed_official 573:ad23fe03a082 2095 /* Update TIMx SMCR */
mbed_official 573:ad23fe03a082 2096 htim->Instance->SMCR = tmpsmcr;
mbed_official 573:ad23fe03a082 2097
mbed_official 573:ad23fe03a082 2098 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 2099
mbed_official 573:ad23fe03a082 2100 return HAL_OK;
mbed_official 573:ad23fe03a082 2101 }
mbed_official 573:ad23fe03a082 2102
mbed_official 573:ad23fe03a082 2103 /**
mbed_official 573:ad23fe03a082 2104 * @brief Configures the Break feature, dead time, Lock level, OSSI/OSSR State
mbed_official 573:ad23fe03a082 2105 * and the AOE(automatic output enable).
mbed_official 573:ad23fe03a082 2106 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 2107 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 2108 * @param sBreakDeadTimeConfig: pointer to a TIM_ConfigBreakDeadConfig_TypeDef structure that
mbed_official 573:ad23fe03a082 2109 * contains the BDTR Register configuration information for the TIM peripheral.
mbed_official 573:ad23fe03a082 2110 * @retval HAL status
mbed_official 573:ad23fe03a082 2111 */
mbed_official 573:ad23fe03a082 2112 HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
mbed_official 573:ad23fe03a082 2113 TIM_BreakDeadTimeConfigTypeDef * sBreakDeadTimeConfig)
mbed_official 573:ad23fe03a082 2114 {
mbed_official 573:ad23fe03a082 2115 uint32_t tmpbdtr = 0;
mbed_official 573:ad23fe03a082 2116
mbed_official 573:ad23fe03a082 2117 /* Check the parameters */
mbed_official 573:ad23fe03a082 2118 assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 2119 assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode));
mbed_official 573:ad23fe03a082 2120 assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode));
mbed_official 573:ad23fe03a082 2121 assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel));
mbed_official 573:ad23fe03a082 2122 assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime));
mbed_official 573:ad23fe03a082 2123 assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState));
mbed_official 573:ad23fe03a082 2124 assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity));
mbed_official 573:ad23fe03a082 2125 assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->BreakFilter));
mbed_official 573:ad23fe03a082 2126 assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput));
mbed_official 573:ad23fe03a082 2127 assert_param(IS_TIM_BREAK2_STATE(sBreakDeadTimeConfig->Break2State));
mbed_official 573:ad23fe03a082 2128 assert_param(IS_TIM_BREAK2_POLARITY(sBreakDeadTimeConfig->Break2Polarity));
mbed_official 573:ad23fe03a082 2129 assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->Break2Filter));
mbed_official 573:ad23fe03a082 2130
mbed_official 573:ad23fe03a082 2131 /* Check input state */
mbed_official 573:ad23fe03a082 2132 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 2133
mbed_official 573:ad23fe03a082 2134 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 2135
mbed_official 573:ad23fe03a082 2136 /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State,
mbed_official 573:ad23fe03a082 2137 the OSSI State, the dead time value and the Automatic Output Enable Bit */
mbed_official 573:ad23fe03a082 2138
mbed_official 573:ad23fe03a082 2139 /* Clear the BDTR bits */
mbed_official 573:ad23fe03a082 2140 tmpbdtr &= ~(TIM_BDTR_DTG | TIM_BDTR_LOCK | TIM_BDTR_OSSI |
mbed_official 573:ad23fe03a082 2141 TIM_BDTR_OSSR | TIM_BDTR_BKE | TIM_BDTR_BKP |
mbed_official 573:ad23fe03a082 2142 TIM_BDTR_AOE | TIM_BDTR_MOE | TIM_BDTR_BKF |
mbed_official 573:ad23fe03a082 2143 TIM_BDTR_BK2F | TIM_BDTR_BK2E | TIM_BDTR_BK2P);
mbed_official 573:ad23fe03a082 2144
mbed_official 573:ad23fe03a082 2145 /* Set the BDTR bits */
mbed_official 573:ad23fe03a082 2146 tmpbdtr |= sBreakDeadTimeConfig->DeadTime;
mbed_official 573:ad23fe03a082 2147 tmpbdtr |= sBreakDeadTimeConfig->LockLevel;
mbed_official 573:ad23fe03a082 2148 tmpbdtr |= sBreakDeadTimeConfig->OffStateIDLEMode;
mbed_official 573:ad23fe03a082 2149 tmpbdtr |= sBreakDeadTimeConfig->OffStateRunMode;
mbed_official 573:ad23fe03a082 2150 tmpbdtr |= sBreakDeadTimeConfig->BreakState;
mbed_official 573:ad23fe03a082 2151 tmpbdtr |= sBreakDeadTimeConfig->BreakPolarity;
mbed_official 573:ad23fe03a082 2152 tmpbdtr |= sBreakDeadTimeConfig->AutomaticOutput;
mbed_official 573:ad23fe03a082 2153 tmpbdtr |= (sBreakDeadTimeConfig->BreakFilter << BDTR_BKF_SHIFT);
mbed_official 573:ad23fe03a082 2154 tmpbdtr |= (sBreakDeadTimeConfig->Break2Filter << BDTR_BK2F_SHIFT);
mbed_official 573:ad23fe03a082 2155 tmpbdtr |= sBreakDeadTimeConfig->Break2State;
mbed_official 573:ad23fe03a082 2156 tmpbdtr |= sBreakDeadTimeConfig->Break2Polarity;
mbed_official 573:ad23fe03a082 2157
mbed_official 573:ad23fe03a082 2158 /* Set TIMx_BDTR */
mbed_official 573:ad23fe03a082 2159 htim->Instance->BDTR = tmpbdtr;
mbed_official 573:ad23fe03a082 2160
mbed_official 573:ad23fe03a082 2161 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 2162
mbed_official 573:ad23fe03a082 2163 return HAL_OK;
mbed_official 573:ad23fe03a082 2164 }
mbed_official 573:ad23fe03a082 2165
mbed_official 573:ad23fe03a082 2166 /**
mbed_official 573:ad23fe03a082 2167 * @brief Configures the TIM2, TIM5 and TIM11 Remapping input capabilities.
mbed_official 573:ad23fe03a082 2168 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 2169 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 2170 * @param Remap: specifies the TIM input remapping source.
mbed_official 573:ad23fe03a082 2171 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 2172 * @arg TIM_TIM2_TIM8_TRGO: TIM2 ITR1 input is connected to TIM8 Trigger output(default)
mbed_official 573:ad23fe03a082 2173 * @arg TIM_TIM2_ETH_PTP: TIM2 ITR1 input is connected to ETH PTP trigger output.
mbed_official 573:ad23fe03a082 2174 * @arg TIM_TIM2_USBFS_SOF: TIM2 ITR1 input is connected to USB FS SOF.
mbed_official 573:ad23fe03a082 2175 * @arg TIM_TIM2_USBHS_SOF: TIM2 ITR1 input is connected to USB HS SOF.
mbed_official 573:ad23fe03a082 2176 * @arg TIM_TIM5_GPIO: TIM5 CH4 input is connected to dedicated Timer pin(default)
mbed_official 573:ad23fe03a082 2177 * @arg TIM_TIM5_LSI: TIM5 CH4 input is connected to LSI clock.
mbed_official 573:ad23fe03a082 2178 * @arg TIM_TIM5_LSE: TIM5 CH4 input is connected to LSE clock.
mbed_official 573:ad23fe03a082 2179 * @arg TIM_TIM5_RTC: TIM5 CH4 input is connected to RTC Output event.
mbed_official 573:ad23fe03a082 2180 * @arg TIM_TIM11_GPIO: TIM11 CH4 input is connected to dedicated Timer pin(default)
mbed_official 573:ad23fe03a082 2181 * @arg TIM_TIM11_SPDIF: SPDIF Frame synchronous
mbed_official 573:ad23fe03a082 2182 * @arg TIM_TIM11_HSE: TIM11 CH4 input is connected to HSE_RTC clock
mbed_official 573:ad23fe03a082 2183 * (HSE divided by a programmable prescaler)
mbed_official 573:ad23fe03a082 2184 * @arg TIM_TIM11_MCO1: TIM11 CH1 input is connected to MCO1
mbed_official 573:ad23fe03a082 2185 * @retval HAL status
mbed_official 573:ad23fe03a082 2186 */
mbed_official 573:ad23fe03a082 2187 HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)
mbed_official 573:ad23fe03a082 2188 {
mbed_official 573:ad23fe03a082 2189 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 2190
mbed_official 573:ad23fe03a082 2191 /* Check parameters */
mbed_official 573:ad23fe03a082 2192 assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 2193 assert_param(IS_TIM_REMAP(Remap));
mbed_official 573:ad23fe03a082 2194
mbed_official 573:ad23fe03a082 2195 /* Set the Timer remapping configuration */
mbed_official 573:ad23fe03a082 2196 htim->Instance->OR = Remap;
mbed_official 573:ad23fe03a082 2197
mbed_official 573:ad23fe03a082 2198 htim->State = HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 2199
mbed_official 573:ad23fe03a082 2200 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 2201
mbed_official 573:ad23fe03a082 2202 return HAL_OK;
mbed_official 573:ad23fe03a082 2203 }
mbed_official 573:ad23fe03a082 2204
mbed_official 573:ad23fe03a082 2205 /**
mbed_official 573:ad23fe03a082 2206 * @brief Group channel 5 and channel 1, 2 or 3
mbed_official 573:ad23fe03a082 2207 * @param htim: TIM handle.
mbed_official 573:ad23fe03a082 2208 * @param OCRef: specifies the reference signal(s) the OC5REF is combined with.
mbed_official 573:ad23fe03a082 2209 * This parameter can be any combination of the following values:
mbed_official 573:ad23fe03a082 2210 * TIM_GROUPCH5_NONE: No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC
mbed_official 573:ad23fe03a082 2211 * TIM_GROUPCH5_OC1REFC: OC1REFC is the logical AND of OC1REFC and OC5REF
mbed_official 573:ad23fe03a082 2212 * TIM_GROUPCH5_OC2REFC: OC2REFC is the logical AND of OC2REFC and OC5REF
mbed_official 573:ad23fe03a082 2213 * TIM_GROUPCH5_OC3REFC: OC3REFC is the logical AND of OC3REFC and OC5REF
mbed_official 573:ad23fe03a082 2214 * @retval HAL status
mbed_official 573:ad23fe03a082 2215 */
mbed_official 573:ad23fe03a082 2216 HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t OCRef)
mbed_official 573:ad23fe03a082 2217 {
mbed_official 573:ad23fe03a082 2218 /* Check parameters */
mbed_official 573:ad23fe03a082 2219 assert_param(IS_TIM_COMBINED3PHASEPWM_INSTANCE(htim->Instance));
mbed_official 573:ad23fe03a082 2220 assert_param(IS_TIM_GROUPCH5(OCRef));
mbed_official 573:ad23fe03a082 2221
mbed_official 573:ad23fe03a082 2222 /* Process Locked */
mbed_official 573:ad23fe03a082 2223 __HAL_LOCK(htim);
mbed_official 573:ad23fe03a082 2224
mbed_official 573:ad23fe03a082 2225 htim->State = HAL_TIM_STATE_BUSY;
mbed_official 573:ad23fe03a082 2226
mbed_official 573:ad23fe03a082 2227 /* Clear GC5Cx bit fields */
mbed_official 573:ad23fe03a082 2228 htim->Instance->CCR5 &= ~(TIM_CCR5_GC5C3|TIM_CCR5_GC5C2|TIM_CCR5_GC5C1);
mbed_official 573:ad23fe03a082 2229
mbed_official 573:ad23fe03a082 2230 /* Set GC5Cx bit fields */
mbed_official 573:ad23fe03a082 2231 htim->Instance->CCR5 |= OCRef;
mbed_official 573:ad23fe03a082 2232
mbed_official 573:ad23fe03a082 2233 htim->State = HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 2234
mbed_official 573:ad23fe03a082 2235 __HAL_UNLOCK(htim);
mbed_official 573:ad23fe03a082 2236
mbed_official 573:ad23fe03a082 2237 return HAL_OK;
mbed_official 573:ad23fe03a082 2238 }
mbed_official 573:ad23fe03a082 2239
mbed_official 573:ad23fe03a082 2240 /**
mbed_official 573:ad23fe03a082 2241 * @}
mbed_official 573:ad23fe03a082 2242 */
mbed_official 573:ad23fe03a082 2243
mbed_official 573:ad23fe03a082 2244 /** @defgroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions
mbed_official 573:ad23fe03a082 2245 * @brief Extended Callbacks functions
mbed_official 573:ad23fe03a082 2246 *
mbed_official 573:ad23fe03a082 2247 @verbatim
mbed_official 573:ad23fe03a082 2248 ==============================================================================
mbed_official 573:ad23fe03a082 2249 ##### Extension Callbacks functions #####
mbed_official 573:ad23fe03a082 2250 ==============================================================================
mbed_official 573:ad23fe03a082 2251 [..]
mbed_official 573:ad23fe03a082 2252 This section provides Extension TIM callback functions:
mbed_official 573:ad23fe03a082 2253 (+) Timer Commutation callback
mbed_official 573:ad23fe03a082 2254 (+) Timer Break callback
mbed_official 573:ad23fe03a082 2255
mbed_official 573:ad23fe03a082 2256 @endverbatim
mbed_official 573:ad23fe03a082 2257 * @{
mbed_official 573:ad23fe03a082 2258 */
mbed_official 573:ad23fe03a082 2259
mbed_official 573:ad23fe03a082 2260 /**
mbed_official 573:ad23fe03a082 2261 * @brief Hall commutation changed callback in non blocking mode
mbed_official 573:ad23fe03a082 2262 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 2263 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 2264 * @retval None
mbed_official 573:ad23fe03a082 2265 */
mbed_official 573:ad23fe03a082 2266 __weak void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 2267 {
mbed_official 573:ad23fe03a082 2268 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 2269 the HAL_TIMEx_CommutationCallback could be implemented in the user file
mbed_official 573:ad23fe03a082 2270 */
mbed_official 573:ad23fe03a082 2271 }
mbed_official 573:ad23fe03a082 2272
mbed_official 573:ad23fe03a082 2273 /**
mbed_official 573:ad23fe03a082 2274 * @brief Hall Break detection callback in non blocking mode
mbed_official 573:ad23fe03a082 2275 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 2276 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 2277 * @retval None
mbed_official 573:ad23fe03a082 2278 */
mbed_official 573:ad23fe03a082 2279 __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 2280 {
mbed_official 573:ad23fe03a082 2281 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 2282 the HAL_TIMEx_BreakCallback could be implemented in the user file
mbed_official 573:ad23fe03a082 2283 */
mbed_official 573:ad23fe03a082 2284 }
mbed_official 573:ad23fe03a082 2285
mbed_official 573:ad23fe03a082 2286 /**
mbed_official 573:ad23fe03a082 2287 * @}
mbed_official 573:ad23fe03a082 2288 */
mbed_official 573:ad23fe03a082 2289
mbed_official 573:ad23fe03a082 2290 /** @defgroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions
mbed_official 573:ad23fe03a082 2291 * @brief Extended Peripheral State functions
mbed_official 573:ad23fe03a082 2292 *
mbed_official 573:ad23fe03a082 2293 @verbatim
mbed_official 573:ad23fe03a082 2294 ==============================================================================
mbed_official 573:ad23fe03a082 2295 ##### Extension Peripheral State functions #####
mbed_official 573:ad23fe03a082 2296 ==============================================================================
mbed_official 573:ad23fe03a082 2297 [..]
mbed_official 573:ad23fe03a082 2298 This subsection permits to get in run-time the status of the peripheral
mbed_official 573:ad23fe03a082 2299 and the data flow.
mbed_official 573:ad23fe03a082 2300
mbed_official 573:ad23fe03a082 2301 @endverbatim
mbed_official 573:ad23fe03a082 2302 * @{
mbed_official 573:ad23fe03a082 2303 */
mbed_official 573:ad23fe03a082 2304
mbed_official 573:ad23fe03a082 2305 /**
mbed_official 573:ad23fe03a082 2306 * @brief Return the TIM Hall Sensor interface state
mbed_official 573:ad23fe03a082 2307 * @param htim: pointer to a TIM_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 2308 * the configuration information for TIM module.
mbed_official 573:ad23fe03a082 2309 * @retval HAL state
mbed_official 573:ad23fe03a082 2310 */
mbed_official 573:ad23fe03a082 2311 HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)
mbed_official 573:ad23fe03a082 2312 {
mbed_official 573:ad23fe03a082 2313 return htim->State;
mbed_official 573:ad23fe03a082 2314 }
mbed_official 573:ad23fe03a082 2315
mbed_official 573:ad23fe03a082 2316 /**
mbed_official 573:ad23fe03a082 2317 * @}
mbed_official 573:ad23fe03a082 2318 */
mbed_official 573:ad23fe03a082 2319
mbed_official 573:ad23fe03a082 2320 /**
mbed_official 573:ad23fe03a082 2321 * @brief TIM DMA Commutation callback.
mbed_official 573:ad23fe03a082 2322 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 2323 * the configuration information for the specified DMA module.
mbed_official 573:ad23fe03a082 2324 * @retval None
mbed_official 573:ad23fe03a082 2325 */
mbed_official 573:ad23fe03a082 2326 void HAL_TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma)
mbed_official 573:ad23fe03a082 2327 {
mbed_official 573:ad23fe03a082 2328 TIM_HandleTypeDef* htim = ( TIM_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 573:ad23fe03a082 2329
mbed_official 573:ad23fe03a082 2330 htim->State= HAL_TIM_STATE_READY;
mbed_official 573:ad23fe03a082 2331
mbed_official 573:ad23fe03a082 2332 HAL_TIMEx_CommutationCallback(htim);
mbed_official 573:ad23fe03a082 2333 }
mbed_official 573:ad23fe03a082 2334
mbed_official 573:ad23fe03a082 2335 /**
mbed_official 573:ad23fe03a082 2336 * @brief Enables or disables the TIM Capture Compare Channel xN.
mbed_official 573:ad23fe03a082 2337 * @param TIMx to select the TIM peripheral
mbed_official 573:ad23fe03a082 2338 * @param Channel: specifies the TIM Channel
mbed_official 573:ad23fe03a082 2339 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 2340 * @arg TIM_Channel_1: TIM Channel 1
mbed_official 573:ad23fe03a082 2341 * @arg TIM_Channel_2: TIM Channel 2
mbed_official 573:ad23fe03a082 2342 * @arg TIM_Channel_3: TIM Channel 3
mbed_official 573:ad23fe03a082 2343 * @param ChannelNState: specifies the TIM Channel CCxNE bit new state.
mbed_official 573:ad23fe03a082 2344 * This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable.
mbed_official 573:ad23fe03a082 2345 * @retval None
mbed_official 573:ad23fe03a082 2346 */
mbed_official 573:ad23fe03a082 2347 static void TIM_CCxNChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelNState)
mbed_official 573:ad23fe03a082 2348 {
mbed_official 573:ad23fe03a082 2349 uint32_t tmp = 0;
mbed_official 573:ad23fe03a082 2350
mbed_official 573:ad23fe03a082 2351 /* Check the parameters */
mbed_official 573:ad23fe03a082 2352 assert_param(IS_TIM_ADVANCED_INSTANCE(TIMx));
mbed_official 573:ad23fe03a082 2353 assert_param(IS_TIM_COMPLEMENTARY_CHANNELS(Channel));
mbed_official 573:ad23fe03a082 2354
mbed_official 573:ad23fe03a082 2355 tmp = TIM_CCER_CC1NE << Channel;
mbed_official 573:ad23fe03a082 2356
mbed_official 573:ad23fe03a082 2357 /* Reset the CCxNE Bit */
mbed_official 573:ad23fe03a082 2358 TIMx->CCER &= ~tmp;
mbed_official 573:ad23fe03a082 2359
mbed_official 573:ad23fe03a082 2360 /* Set or reset the CCxNE Bit */
mbed_official 573:ad23fe03a082 2361 TIMx->CCER |= (uint32_t)(ChannelNState << Channel);
mbed_official 573:ad23fe03a082 2362 }
mbed_official 573:ad23fe03a082 2363
mbed_official 573:ad23fe03a082 2364 /**
mbed_official 573:ad23fe03a082 2365 * @brief Timer Output Compare 5 configuration
mbed_official 573:ad23fe03a082 2366 * @param TIMx to select the TIM peripheral
mbed_official 573:ad23fe03a082 2367 * @param OC_Config: The output configuration structure
mbed_official 573:ad23fe03a082 2368 * @retval None
mbed_official 573:ad23fe03a082 2369 */
mbed_official 573:ad23fe03a082 2370 static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
mbed_official 573:ad23fe03a082 2371 {
mbed_official 573:ad23fe03a082 2372 uint32_t tmpccmrx = 0;
mbed_official 573:ad23fe03a082 2373 uint32_t tmpccer = 0;
mbed_official 573:ad23fe03a082 2374 uint32_t tmpcr2 = 0;
mbed_official 573:ad23fe03a082 2375
mbed_official 573:ad23fe03a082 2376 /* Disable the output: Reset the CCxE Bit */
mbed_official 573:ad23fe03a082 2377 TIMx->CCER &= ~TIM_CCER_CC5E;
mbed_official 573:ad23fe03a082 2378
mbed_official 573:ad23fe03a082 2379 /* Get the TIMx CCER register value */
mbed_official 573:ad23fe03a082 2380 tmpccer = TIMx->CCER;
mbed_official 573:ad23fe03a082 2381 /* Get the TIMx CR2 register value */
mbed_official 573:ad23fe03a082 2382 tmpcr2 = TIMx->CR2;
mbed_official 573:ad23fe03a082 2383 /* Get the TIMx CCMR1 register value */
mbed_official 573:ad23fe03a082 2384 tmpccmrx = TIMx->CCMR3;
mbed_official 573:ad23fe03a082 2385
mbed_official 573:ad23fe03a082 2386 /* Reset the Output Compare Mode Bits */
mbed_official 573:ad23fe03a082 2387 tmpccmrx &= ~(TIM_CCMR3_OC5M);
mbed_official 573:ad23fe03a082 2388 /* Select the Output Compare Mode */
mbed_official 573:ad23fe03a082 2389 tmpccmrx |= OC_Config->OCMode;
mbed_official 573:ad23fe03a082 2390
mbed_official 573:ad23fe03a082 2391 /* Reset the Output Polarity level */
mbed_official 573:ad23fe03a082 2392 tmpccer &= ~TIM_CCER_CC5P;
mbed_official 573:ad23fe03a082 2393 /* Set the Output Compare Polarity */
mbed_official 573:ad23fe03a082 2394 tmpccer |= (OC_Config->OCPolarity << 16);
mbed_official 573:ad23fe03a082 2395
mbed_official 573:ad23fe03a082 2396 if(IS_TIM_BREAK_INSTANCE(TIMx))
mbed_official 573:ad23fe03a082 2397 {
mbed_official 573:ad23fe03a082 2398 /* Reset the Output Compare IDLE State */
mbed_official 573:ad23fe03a082 2399 tmpcr2 &= ~TIM_CR2_OIS5;
mbed_official 573:ad23fe03a082 2400 /* Set the Output Idle state */
mbed_official 573:ad23fe03a082 2401 tmpcr2 |= (OC_Config->OCIdleState << 8);
mbed_official 573:ad23fe03a082 2402 }
mbed_official 573:ad23fe03a082 2403 /* Write to TIMx CR2 */
mbed_official 573:ad23fe03a082 2404 TIMx->CR2 = tmpcr2;
mbed_official 573:ad23fe03a082 2405
mbed_official 573:ad23fe03a082 2406 /* Write to TIMx CCMR3 */
mbed_official 573:ad23fe03a082 2407 TIMx->CCMR3 = tmpccmrx;
mbed_official 573:ad23fe03a082 2408
mbed_official 573:ad23fe03a082 2409 /* Set the Capture Compare Register value */
mbed_official 573:ad23fe03a082 2410 TIMx->CCR5 = OC_Config->Pulse;
mbed_official 573:ad23fe03a082 2411
mbed_official 573:ad23fe03a082 2412 /* Write to TIMx CCER */
mbed_official 573:ad23fe03a082 2413 TIMx->CCER = tmpccer;
mbed_official 573:ad23fe03a082 2414 }
mbed_official 573:ad23fe03a082 2415
mbed_official 573:ad23fe03a082 2416 /**
mbed_official 573:ad23fe03a082 2417 * @brief Timer Output Compare 6 configuration
mbed_official 573:ad23fe03a082 2418 * @param TIMx to select the TIM peripheral
mbed_official 573:ad23fe03a082 2419 * @param OC_Config: The output configuration structure
mbed_official 573:ad23fe03a082 2420 * @retval None
mbed_official 573:ad23fe03a082 2421 */
mbed_official 573:ad23fe03a082 2422 static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config)
mbed_official 573:ad23fe03a082 2423 {
mbed_official 573:ad23fe03a082 2424 uint32_t tmpccmrx = 0;
mbed_official 573:ad23fe03a082 2425 uint32_t tmpccer = 0;
mbed_official 573:ad23fe03a082 2426 uint32_t tmpcr2 = 0;
mbed_official 573:ad23fe03a082 2427
mbed_official 573:ad23fe03a082 2428 /* Disable the output: Reset the CCxE Bit */
mbed_official 573:ad23fe03a082 2429 TIMx->CCER &= ~TIM_CCER_CC6E;
mbed_official 573:ad23fe03a082 2430
mbed_official 573:ad23fe03a082 2431 /* Get the TIMx CCER register value */
mbed_official 573:ad23fe03a082 2432 tmpccer = TIMx->CCER;
mbed_official 573:ad23fe03a082 2433 /* Get the TIMx CR2 register value */
mbed_official 573:ad23fe03a082 2434 tmpcr2 = TIMx->CR2;
mbed_official 573:ad23fe03a082 2435 /* Get the TIMx CCMR1 register value */
mbed_official 573:ad23fe03a082 2436 tmpccmrx = TIMx->CCMR3;
mbed_official 573:ad23fe03a082 2437
mbed_official 573:ad23fe03a082 2438 /* Reset the Output Compare Mode Bits */
mbed_official 573:ad23fe03a082 2439 tmpccmrx &= ~(TIM_CCMR3_OC6M);
mbed_official 573:ad23fe03a082 2440 /* Select the Output Compare Mode */
mbed_official 573:ad23fe03a082 2441 tmpccmrx |= (OC_Config->OCMode << 8);
mbed_official 573:ad23fe03a082 2442
mbed_official 573:ad23fe03a082 2443 /* Reset the Output Polarity level */
mbed_official 573:ad23fe03a082 2444 tmpccer &= (uint32_t)~TIM_CCER_CC6P;
mbed_official 573:ad23fe03a082 2445 /* Set the Output Compare Polarity */
mbed_official 573:ad23fe03a082 2446 tmpccer |= (OC_Config->OCPolarity << 20);
mbed_official 573:ad23fe03a082 2447
mbed_official 573:ad23fe03a082 2448 if(IS_TIM_BREAK_INSTANCE(TIMx))
mbed_official 573:ad23fe03a082 2449 {
mbed_official 573:ad23fe03a082 2450 /* Reset the Output Compare IDLE State */
mbed_official 573:ad23fe03a082 2451 tmpcr2 &= ~TIM_CR2_OIS6;
mbed_official 573:ad23fe03a082 2452 /* Set the Output Idle state */
mbed_official 573:ad23fe03a082 2453 tmpcr2 |= (OC_Config->OCIdleState << 10);
mbed_official 573:ad23fe03a082 2454 }
mbed_official 573:ad23fe03a082 2455
mbed_official 573:ad23fe03a082 2456 /* Write to TIMx CR2 */
mbed_official 573:ad23fe03a082 2457 TIMx->CR2 = tmpcr2;
mbed_official 573:ad23fe03a082 2458
mbed_official 573:ad23fe03a082 2459 /* Write to TIMx CCMR3 */
mbed_official 573:ad23fe03a082 2460 TIMx->CCMR3 = tmpccmrx;
mbed_official 573:ad23fe03a082 2461
mbed_official 573:ad23fe03a082 2462 /* Set the Capture Compare Register value */
mbed_official 573:ad23fe03a082 2463 TIMx->CCR6 = OC_Config->Pulse;
mbed_official 573:ad23fe03a082 2464
mbed_official 573:ad23fe03a082 2465 /* Write to TIMx CCER */
mbed_official 573:ad23fe03a082 2466 TIMx->CCER = tmpccer;
mbed_official 573:ad23fe03a082 2467 }
mbed_official 573:ad23fe03a082 2468
mbed_official 573:ad23fe03a082 2469 /**
mbed_official 573:ad23fe03a082 2470 * @}
mbed_official 573:ad23fe03a082 2471 */
mbed_official 573:ad23fe03a082 2472
mbed_official 573:ad23fe03a082 2473 #endif /* HAL_TIM_MODULE_ENABLED */
mbed_official 573:ad23fe03a082 2474 /**
mbed_official 573:ad23fe03a082 2475 * @}
mbed_official 573:ad23fe03a082 2476 */
mbed_official 573:ad23fe03a082 2477
mbed_official 573:ad23fe03a082 2478 /**
mbed_official 573:ad23fe03a082 2479 * @}
mbed_official 573:ad23fe03a082 2480 */
mbed_official 573:ad23fe03a082 2481 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/