mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

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

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

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

Import librarymbed

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

Committer:
mbed_official
Date:
Mon Nov 03 10:15:07 2014 +0000
Revision:
380:510f0c3515e3
Parent:
targets/cmsis/TARGET_STM/TARGET_NUCLEO_F401RE/stm32f4xx_hal_tim_ex.c@369:2e96f1b71984
Child:
532:fe11edbda85c
Synchronized with git revision 417f470ba9f4882d7079611cbc576afd9c49b0ef

Full URL: https://github.com/mbedmicro/mbed/commit/417f470ba9f4882d7079611cbc576afd9c49b0ef/

Targets: Factorisation of NUCLEO_F401RE and F411RE cmsis folders

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