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:
Mon Sep 28 14:00:11 2015 +0100
Revision:
632:7687fb9c4f91
Parent:
385:be64abf45658
Child:
634:ac7d6880524d
Synchronized with git revision f7ce4ed029cc611121464252ff28d5e8beb895b0

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

NUCLEO_F303K8 - add support of the STM32F303K8

Who changed what in which revision?

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