mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

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

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

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

Import librarymbed

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

Committer:
mbed_official
Date:
Wed Feb 26 09:45:12 2014 +0000
Revision:
106:ced8cbb51063
Parent:
87:085cde657901
Child:
226:b062af740e40
Synchronized with git revision 4222735eff5868389433f0e9271976b39c8115cd

Full URL: https://github.com/mbedmicro/mbed/commit/4222735eff5868389433f0e9271976b39c8115cd/

[NUCLEO_xxx] Update STM32CubeF4 driver V1.0.0 + update license

Who changed what in which revision?

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