fix LPC812 PWM

Dependents:   IR_LED_Send

Fork of mbed-dev by mbed official

Committer:
nameless129
Date:
Mon May 16 16:50:30 2016 +0000
Revision:
129:2e517c56bcfb
Parent:
0:9b334a45a8ff
PWM Fix:Duty 0%??H???????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 0:9b334a45a8ff 1 /**
bogdanm 0:9b334a45a8ff 2 ******************************************************************************
bogdanm 0:9b334a45a8ff 3 * @file stm32l1xx_hal_tim_ex.c
bogdanm 0:9b334a45a8ff 4 * @author MCD Application Team
bogdanm 0:9b334a45a8ff 5 * @version V1.0.0
bogdanm 0:9b334a45a8ff 6 * @date 5-September-2014
bogdanm 0:9b334a45a8ff 7 * @brief TIM HAL module driver.
bogdanm 0:9b334a45a8ff 8 * This file provides firmware functions to manage the following
bogdanm 0:9b334a45a8ff 9 * functionalities of the Timer extension peripheral:
bogdanm 0:9b334a45a8ff 10 * + Time Master and Slave synchronization configuration
bogdanm 0:9b334a45a8ff 11 * + Timer remapping capabilities configuration
bogdanm 0:9b334a45a8ff 12 @verbatim
bogdanm 0:9b334a45a8ff 13 ==============================================================================
bogdanm 0:9b334a45a8ff 14 ##### TIMER Extended features #####
bogdanm 0:9b334a45a8ff 15 ==============================================================================
bogdanm 0:9b334a45a8ff 16 [..]
bogdanm 0:9b334a45a8ff 17 The Timer Extension features include:
bogdanm 0:9b334a45a8ff 18 (#) Synchronization circuit to control the timer with external signals and to
bogdanm 0:9b334a45a8ff 19 interconnect several timers together.
bogdanm 0:9b334a45a8ff 20 (#) Timer remapping capabilities configuration
bogdanm 0:9b334a45a8ff 21
bogdanm 0:9b334a45a8ff 22 @endverbatim
bogdanm 0:9b334a45a8ff 23 ******************************************************************************
bogdanm 0:9b334a45a8ff 24 * @attention
bogdanm 0:9b334a45a8ff 25 *
bogdanm 0:9b334a45a8ff 26 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
bogdanm 0:9b334a45a8ff 27 *
bogdanm 0:9b334a45a8ff 28 * Redistribution and use in source and binary forms, with or without modification,
bogdanm 0:9b334a45a8ff 29 * are permitted provided that the following conditions are met:
bogdanm 0:9b334a45a8ff 30 * 1. Redistributions of source code must retain the above copyright notice,
bogdanm 0:9b334a45a8ff 31 * this list of conditions and the following disclaimer.
bogdanm 0:9b334a45a8ff 32 * 2. Redistributions in binary form must reproduce the above copyright notice,
bogdanm 0:9b334a45a8ff 33 * this list of conditions and the following disclaimer in the documentation
bogdanm 0:9b334a45a8ff 34 * and/or other materials provided with the distribution.
bogdanm 0:9b334a45a8ff 35 * 3. Neither the name of STMicroelectronics nor the names of its contributors
bogdanm 0:9b334a45a8ff 36 * may be used to endorse or promote products derived from this software
bogdanm 0:9b334a45a8ff 37 * without specific prior written permission.
bogdanm 0:9b334a45a8ff 38 *
bogdanm 0:9b334a45a8ff 39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
bogdanm 0:9b334a45a8ff 40 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
bogdanm 0:9b334a45a8ff 41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
bogdanm 0:9b334a45a8ff 42 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
bogdanm 0:9b334a45a8ff 43 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
bogdanm 0:9b334a45a8ff 44 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
bogdanm 0:9b334a45a8ff 45 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
bogdanm 0:9b334a45a8ff 46 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
bogdanm 0:9b334a45a8ff 47 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
bogdanm 0:9b334a45a8ff 48 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
bogdanm 0:9b334a45a8ff 49 *
bogdanm 0:9b334a45a8ff 50 ******************************************************************************
bogdanm 0:9b334a45a8ff 51 */
bogdanm 0:9b334a45a8ff 52
bogdanm 0:9b334a45a8ff 53 /* Includes ------------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 54 #include "stm32l1xx_hal.h"
bogdanm 0:9b334a45a8ff 55
bogdanm 0:9b334a45a8ff 56 /** @addtogroup STM32L1xx_HAL_Driver
bogdanm 0:9b334a45a8ff 57 * @{
bogdanm 0:9b334a45a8ff 58 */
bogdanm 0:9b334a45a8ff 59
bogdanm 0:9b334a45a8ff 60 /** @defgroup TIMEx TIMEx
bogdanm 0:9b334a45a8ff 61 * @brief TIM HAL module driver
bogdanm 0:9b334a45a8ff 62 * @{
bogdanm 0:9b334a45a8ff 63 */
bogdanm 0:9b334a45a8ff 64
bogdanm 0:9b334a45a8ff 65 #ifdef HAL_TIM_MODULE_ENABLED
bogdanm 0:9b334a45a8ff 66
bogdanm 0:9b334a45a8ff 67 /* Private typedef -----------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 68 /* Private define ------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 69 /* Private macro -------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 70 /* Private variables ---------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 71 /* Private function prototypes -----------------------------------------------*/
bogdanm 0:9b334a45a8ff 72 /* Private functions ---------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 73
bogdanm 0:9b334a45a8ff 74 /** @defgroup TIMEx_Exported_Functions TIMEx Exported Functions
bogdanm 0:9b334a45a8ff 75 * @{
bogdanm 0:9b334a45a8ff 76 */
bogdanm 0:9b334a45a8ff 77
bogdanm 0:9b334a45a8ff 78 /** @defgroup TIMEx_Exported_Functions_Group1 Peripheral Control functions
bogdanm 0:9b334a45a8ff 79 * @brief Peripheral Control functions
bogdanm 0:9b334a45a8ff 80 *
bogdanm 0:9b334a45a8ff 81 @verbatim
bogdanm 0:9b334a45a8ff 82 ==============================================================================
bogdanm 0:9b334a45a8ff 83 ##### Peripheral Control functions #####
bogdanm 0:9b334a45a8ff 84 ==============================================================================
bogdanm 0:9b334a45a8ff 85 [..]
bogdanm 0:9b334a45a8ff 86 This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 87 (+) Configure the commutation event in case of use of the Hall sensor interface.
bogdanm 0:9b334a45a8ff 88 (+) Configure Complementary channels, break features and dead time.
bogdanm 0:9b334a45a8ff 89 (+) Configure Master synchronization.
bogdanm 0:9b334a45a8ff 90 (+) Configure timer remapping capabilities.
bogdanm 0:9b334a45a8ff 91
bogdanm 0:9b334a45a8ff 92 @endverbatim
bogdanm 0:9b334a45a8ff 93 * @{
bogdanm 0:9b334a45a8ff 94 */
bogdanm 0:9b334a45a8ff 95
bogdanm 0:9b334a45a8ff 96 /**
bogdanm 0:9b334a45a8ff 97 * @brief Configures the TIM in master mode.
bogdanm 0:9b334a45a8ff 98 * @param htim: TIM handle.
bogdanm 0:9b334a45a8ff 99 * @param sMasterConfig: pointer to a TIM_MasterConfigTypeDef structure that
bogdanm 0:9b334a45a8ff 100 * contains the selected trigger output (TRGO) and the Master/Slave
bogdanm 0:9b334a45a8ff 101 * mode.
bogdanm 0:9b334a45a8ff 102 * @retval HAL status
bogdanm 0:9b334a45a8ff 103 */
bogdanm 0:9b334a45a8ff 104 HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig)
bogdanm 0:9b334a45a8ff 105 {
bogdanm 0:9b334a45a8ff 106 /* Check the parameters */
bogdanm 0:9b334a45a8ff 107 assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
bogdanm 0:9b334a45a8ff 108 assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
bogdanm 0:9b334a45a8ff 109 assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
bogdanm 0:9b334a45a8ff 110
bogdanm 0:9b334a45a8ff 111 __HAL_LOCK(htim);
bogdanm 0:9b334a45a8ff 112
bogdanm 0:9b334a45a8ff 113 htim->State = HAL_TIM_STATE_BUSY;
bogdanm 0:9b334a45a8ff 114
bogdanm 0:9b334a45a8ff 115 /* Reset the MMS Bits */
bogdanm 0:9b334a45a8ff 116 htim->Instance->CR2 &= ~TIM_CR2_MMS;
bogdanm 0:9b334a45a8ff 117 /* Select the TRGO source */
bogdanm 0:9b334a45a8ff 118 htim->Instance->CR2 |= sMasterConfig->MasterOutputTrigger;
bogdanm 0:9b334a45a8ff 119
bogdanm 0:9b334a45a8ff 120 /* Reset the MSM Bit */
bogdanm 0:9b334a45a8ff 121 htim->Instance->SMCR &= ~TIM_SMCR_MSM;
bogdanm 0:9b334a45a8ff 122 /* Set or Reset the MSM Bit */
bogdanm 0:9b334a45a8ff 123 htim->Instance->SMCR |= sMasterConfig->MasterSlaveMode;
bogdanm 0:9b334a45a8ff 124
bogdanm 0:9b334a45a8ff 125 htim->State = HAL_TIM_STATE_READY;
bogdanm 0:9b334a45a8ff 126
bogdanm 0:9b334a45a8ff 127 __HAL_UNLOCK(htim);
bogdanm 0:9b334a45a8ff 128
bogdanm 0:9b334a45a8ff 129 return HAL_OK;
bogdanm 0:9b334a45a8ff 130 }
bogdanm 0:9b334a45a8ff 131
bogdanm 0:9b334a45a8ff 132 /**
bogdanm 0:9b334a45a8ff 133 * @brief Configures the TIM2/TIM3/TIM9/TIM10/TIM11 Remapping input capabilities.
bogdanm 0:9b334a45a8ff 134 * @param htim: TIM handle.
bogdanm 0:9b334a45a8ff 135 * @param Remap: specifies the TIM remapping source.
bogdanm 0:9b334a45a8ff 136 * This parameter is a combination of the following values depending on TIM instance.
bogdanm 0:9b334a45a8ff 137 *
bogdanm 0:9b334a45a8ff 138 * For TIM2, the parameter can have the following values:
bogdanm 0:9b334a45a8ff 139 * @arg TIM_TIM2_ITR1_TIM10_OC: TIM2 ITR1 input is connected to TIM10 OC
bogdanm 0:9b334a45a8ff 140 * @arg TIM_TIM2_ITR1_TIM5_TGO: TIM2 ITR1 input is connected to TIM5 TGO
bogdanm 0:9b334a45a8ff 141 *
bogdanm 0:9b334a45a8ff 142 * For TIM3, the parameter can have the following values:
bogdanm 0:9b334a45a8ff 143 * @arg TIM_TIM3_ITR2_TIM11_OC: TIM3 ITR2 input is connected to TIM11 OC
bogdanm 0:9b334a45a8ff 144 * @arg TIM_TIM3_ITR2_TIM5_TGO: TIM3 ITR2 input is connected to TIM5 TGO
bogdanm 0:9b334a45a8ff 145 *
bogdanm 0:9b334a45a8ff 146 * For TIM9, the parameter is a combination of 2 fields (field1 | field2):
bogdanm 0:9b334a45a8ff 147 * field1 can have the following values:
bogdanm 0:9b334a45a8ff 148 * @arg TIM_TIM9_ITR1_TIM3_TGO: TIM9 ITR1 input is connected to TIM3 TGO
bogdanm 0:9b334a45a8ff 149 * @arg TIM_TIM9_ITR1_TS: TIM9 ITR1 input is connected to touch sensing I/O
bogdanm 0:9b334a45a8ff 150 * field2 can have the following values:
bogdanm 0:9b334a45a8ff 151 * @arg TIM_TIM9_GPIO: TIM9 Channel1 is connected to GPIO
bogdanm 0:9b334a45a8ff 152 * @arg TIM_TIM9_LSE: TIM9 Channel1 is connected to LSE internal clock
bogdanm 0:9b334a45a8ff 153 * @arg TIM_TIM9_GPIO1: TIM9 Channel1 is connected to GPIO
bogdanm 0:9b334a45a8ff 154 * @arg TIM_TIM9_GPIO2: TIM9 Channel1 is connected to GPIO
bogdanm 0:9b334a45a8ff 155 *
bogdanm 0:9b334a45a8ff 156 * For TIM10, the parameter is a combination of 3 fields (field1 | field2 | field3):
bogdanm 0:9b334a45a8ff 157 * field1 can have the following values:
bogdanm 0:9b334a45a8ff 158 * @arg TIM_TIM10_TI1RMP: TIM10 Channel 1 depends on TI1_RMP
bogdanm 0:9b334a45a8ff 159 * @arg TIM_TIM10_RI: TIM10 Channel 1 is connected to RI
bogdanm 0:9b334a45a8ff 160 * field2 can have the following values:
bogdanm 0:9b334a45a8ff 161 * @arg TIM_TIM10_ETR_LSE: TIM10 ETR input is connected to LSE clock
bogdanm 0:9b334a45a8ff 162 * @arg TIM_TIM10_ETR_TIM9_TGO: TIM10 ETR input is connected to TIM9 TGO
bogdanm 0:9b334a45a8ff 163 * field3 can have the following values:
bogdanm 0:9b334a45a8ff 164 * @arg TIM_TIM10_GPIO: TIM10 Channel1 is connected to GPIO
bogdanm 0:9b334a45a8ff 165 * @arg TIM_TIM10_LSI: TIM10 Channel1 is connected to LSI internal clock
bogdanm 0:9b334a45a8ff 166 * @arg TIM_TIM10_LSE: TIM10 Channel1 is connected to LSE internal clock
bogdanm 0:9b334a45a8ff 167 * @arg TIM_TIM10_RTC: TIM10 Channel1 is connected to RTC wakeup interrupt
bogdanm 0:9b334a45a8ff 168 *
bogdanm 0:9b334a45a8ff 169 * For TIM11, the parameter is a combination of 3 fields (field1 | field2 | field3):
bogdanm 0:9b334a45a8ff 170 * field1 can have the following values:
bogdanm 0:9b334a45a8ff 171 * @arg TIM_TIM11_TI1RMP: TIM11 Channel 1 depends on TI1_RMP
bogdanm 0:9b334a45a8ff 172 * @arg TIM_TIM11_RI: TIM11 Channel 1 is connected to RI
bogdanm 0:9b334a45a8ff 173 * field2 can have the following values:
bogdanm 0:9b334a45a8ff 174 * @arg TIM_TIM11_ETR_LSE: TIM11 ETR input is connected to LSE clock
bogdanm 0:9b334a45a8ff 175 * @arg TIM_TIM11_ETR_TIM9_TGO: TIM11 ETR input is connected to TIM9 TGO
bogdanm 0:9b334a45a8ff 176 * field3 can have the following values:
bogdanm 0:9b334a45a8ff 177 * @arg TIM_TIM11_GPIO: TIM11 Channel1 is connected to GPIO
bogdanm 0:9b334a45a8ff 178 * @arg TIM_TIM11_MSI: TIM11 Channel1 is connected to MSI internal clock
bogdanm 0:9b334a45a8ff 179 * @arg TIM_TIM11_HSE_RTC: TIM11 Channel1 is connected to HSE_RTC clock
bogdanm 0:9b334a45a8ff 180 * @arg TIM_TIM11_GPIO1: TIM11 Channel1 is connected to GPIO
bogdanm 0:9b334a45a8ff 181 *
bogdanm 0:9b334a45a8ff 182 * @retval HAL status
bogdanm 0:9b334a45a8ff 183 */
bogdanm 0:9b334a45a8ff 184 HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)
bogdanm 0:9b334a45a8ff 185 {
bogdanm 0:9b334a45a8ff 186 __HAL_LOCK(htim);
bogdanm 0:9b334a45a8ff 187
bogdanm 0:9b334a45a8ff 188 /* Check parameters */
bogdanm 0:9b334a45a8ff 189 assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));
bogdanm 0:9b334a45a8ff 190 assert_param(IS_TIM_REMAP(htim->Instance,Remap));
bogdanm 0:9b334a45a8ff 191
bogdanm 0:9b334a45a8ff 192 /* Set the Timer remapping configuration */
bogdanm 0:9b334a45a8ff 193 htim->Instance->OR = Remap;
bogdanm 0:9b334a45a8ff 194
bogdanm 0:9b334a45a8ff 195 htim->State = HAL_TIM_STATE_READY;
bogdanm 0:9b334a45a8ff 196
bogdanm 0:9b334a45a8ff 197 __HAL_UNLOCK(htim);
bogdanm 0:9b334a45a8ff 198
bogdanm 0:9b334a45a8ff 199 return HAL_OK;
bogdanm 0:9b334a45a8ff 200 }
bogdanm 0:9b334a45a8ff 201
bogdanm 0:9b334a45a8ff 202 /**
bogdanm 0:9b334a45a8ff 203 * @}
bogdanm 0:9b334a45a8ff 204 */
bogdanm 0:9b334a45a8ff 205
bogdanm 0:9b334a45a8ff 206 /** @defgroup TIMEx_Exported_Functions_Group2 Extension Callbacks functions
bogdanm 0:9b334a45a8ff 207 * @brief Extension Callbacks functions
bogdanm 0:9b334a45a8ff 208 *
bogdanm 0:9b334a45a8ff 209 @verbatim
bogdanm 0:9b334a45a8ff 210 ==============================================================================
bogdanm 0:9b334a45a8ff 211 ##### Extension Callbacks functions #####
bogdanm 0:9b334a45a8ff 212 ==============================================================================
bogdanm 0:9b334a45a8ff 213 [..]
bogdanm 0:9b334a45a8ff 214 This section provides Extension TIM callback functions:
bogdanm 0:9b334a45a8ff 215 (+) Timer Commutation callback
bogdanm 0:9b334a45a8ff 216 (+) Timer Break callback
bogdanm 0:9b334a45a8ff 217
bogdanm 0:9b334a45a8ff 218 @endverbatim
bogdanm 0:9b334a45a8ff 219 * @{
bogdanm 0:9b334a45a8ff 220 */
bogdanm 0:9b334a45a8ff 221
bogdanm 0:9b334a45a8ff 222
bogdanm 0:9b334a45a8ff 223 /**
bogdanm 0:9b334a45a8ff 224 * @}
bogdanm 0:9b334a45a8ff 225 */
bogdanm 0:9b334a45a8ff 226
bogdanm 0:9b334a45a8ff 227 /** @defgroup TIMEx_Exported_Functions_Group3 Extension Peripheral State functions
bogdanm 0:9b334a45a8ff 228 * @brief Extension Peripheral State functions
bogdanm 0:9b334a45a8ff 229 *
bogdanm 0:9b334a45a8ff 230 @verbatim
bogdanm 0:9b334a45a8ff 231 ==============================================================================
bogdanm 0:9b334a45a8ff 232 ##### Extension Peripheral State functions #####
bogdanm 0:9b334a45a8ff 233 ==============================================================================
bogdanm 0:9b334a45a8ff 234 [..]
bogdanm 0:9b334a45a8ff 235 This subsection permit to get in run-time the status of the peripheral
bogdanm 0:9b334a45a8ff 236 and the data flow.
bogdanm 0:9b334a45a8ff 237
bogdanm 0:9b334a45a8ff 238 @endverbatim
bogdanm 0:9b334a45a8ff 239 * @{
bogdanm 0:9b334a45a8ff 240 */
bogdanm 0:9b334a45a8ff 241
bogdanm 0:9b334a45a8ff 242
bogdanm 0:9b334a45a8ff 243 /**
bogdanm 0:9b334a45a8ff 244 * @}
bogdanm 0:9b334a45a8ff 245 */
bogdanm 0:9b334a45a8ff 246
bogdanm 0:9b334a45a8ff 247 #endif /* HAL_TIM_MODULE_ENABLED */
bogdanm 0:9b334a45a8ff 248 /**
bogdanm 0:9b334a45a8ff 249 * @}
bogdanm 0:9b334a45a8ff 250 */
bogdanm 0:9b334a45a8ff 251
bogdanm 0:9b334a45a8ff 252 /**
bogdanm 0:9b334a45a8ff 253 * @}
bogdanm 0:9b334a45a8ff 254 */
bogdanm 0:9b334a45a8ff 255
bogdanm 0:9b334a45a8ff 256 /**
bogdanm 0:9b334a45a8ff 257 * @}
bogdanm 0:9b334a45a8ff 258 */
bogdanm 0:9b334a45a8ff 259
bogdanm 0:9b334a45a8ff 260 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/