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:
19:112740acecfa
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 stm32f4xx_hal_dcmi_ex.c
bogdanm 0:9b334a45a8ff 4 * @author MCD Application Team
mbed_official 19:112740acecfa 5 * @version V1.4.1
mbed_official 19:112740acecfa 6 * @date 09-October-2015
bogdanm 0:9b334a45a8ff 7 * @brief DCMI Extension HAL module driver.
bogdanm 0:9b334a45a8ff 8 * This file provides firmware functions to manage the following
bogdanm 0:9b334a45a8ff 9 * functionalities of DCMI extension peripheral:
bogdanm 0:9b334a45a8ff 10 * + Extension features functions
bogdanm 0:9b334a45a8ff 11 *
bogdanm 0:9b334a45a8ff 12 @verbatim
bogdanm 0:9b334a45a8ff 13 ==============================================================================
bogdanm 0:9b334a45a8ff 14 ##### DCMI peripheral extension features #####
bogdanm 0:9b334a45a8ff 15 ==============================================================================
bogdanm 0:9b334a45a8ff 16
bogdanm 0:9b334a45a8ff 17 [..] Comparing to other previous devices, the DCMI interface for STM32F446xx
bogdanm 0:9b334a45a8ff 18 devices contains the following additional features :
bogdanm 0:9b334a45a8ff 19
bogdanm 0:9b334a45a8ff 20 (+) Support of Black and White cameras
bogdanm 0:9b334a45a8ff 21
bogdanm 0:9b334a45a8ff 22 ##### How to use this driver #####
bogdanm 0:9b334a45a8ff 23 ==============================================================================
bogdanm 0:9b334a45a8ff 24 [..] This driver provides functions to manage the Black and White feature
bogdanm 0:9b334a45a8ff 25
bogdanm 0:9b334a45a8ff 26 @endverbatim
bogdanm 0:9b334a45a8ff 27 ******************************************************************************
bogdanm 0:9b334a45a8ff 28 * @attention
bogdanm 0:9b334a45a8ff 29 *
bogdanm 0:9b334a45a8ff 30 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
bogdanm 0:9b334a45a8ff 31 *
bogdanm 0:9b334a45a8ff 32 * Redistribution and use in source and binary forms, with or without modification,
bogdanm 0:9b334a45a8ff 33 * are permitted provided that the following conditions are met:
bogdanm 0:9b334a45a8ff 34 * 1. Redistributions of source code must retain the above copyright notice,
bogdanm 0:9b334a45a8ff 35 * this list of conditions and the following disclaimer.
bogdanm 0:9b334a45a8ff 36 * 2. Redistributions in binary form must reproduce the above copyright notice,
bogdanm 0:9b334a45a8ff 37 * this list of conditions and the following disclaimer in the documentation
bogdanm 0:9b334a45a8ff 38 * and/or other materials provided with the distribution.
bogdanm 0:9b334a45a8ff 39 * 3. Neither the name of STMicroelectronics nor the names of its contributors
bogdanm 0:9b334a45a8ff 40 * may be used to endorse or promote products derived from this software
bogdanm 0:9b334a45a8ff 41 * without specific prior written permission.
bogdanm 0:9b334a45a8ff 42 *
bogdanm 0:9b334a45a8ff 43 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
bogdanm 0:9b334a45a8ff 44 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
bogdanm 0:9b334a45a8ff 45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
bogdanm 0:9b334a45a8ff 46 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
bogdanm 0:9b334a45a8ff 47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
bogdanm 0:9b334a45a8ff 48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
bogdanm 0:9b334a45a8ff 49 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
bogdanm 0:9b334a45a8ff 50 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
bogdanm 0:9b334a45a8ff 51 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
bogdanm 0:9b334a45a8ff 52 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
bogdanm 0:9b334a45a8ff 53 *
bogdanm 0:9b334a45a8ff 54 ******************************************************************************
bogdanm 0:9b334a45a8ff 55 */
bogdanm 0:9b334a45a8ff 56
bogdanm 0:9b334a45a8ff 57 /* Includes ------------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 58 #include "stm32f4xx_hal.h"
bogdanm 0:9b334a45a8ff 59
bogdanm 0:9b334a45a8ff 60 /** @addtogroup STM32F4xx_HAL_Driver
bogdanm 0:9b334a45a8ff 61 * @{
bogdanm 0:9b334a45a8ff 62 */
mbed_official 19:112740acecfa 63 /** @defgroup DCMIEx DCMIEx
mbed_official 19:112740acecfa 64 * @brief DCMI Extended HAL module driver
bogdanm 0:9b334a45a8ff 65 * @{
bogdanm 0:9b334a45a8ff 66 */
bogdanm 0:9b334a45a8ff 67
bogdanm 0:9b334a45a8ff 68 #ifdef HAL_DCMI_MODULE_ENABLED
bogdanm 0:9b334a45a8ff 69
mbed_official 19:112740acecfa 70 #if defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) ||\
mbed_official 19:112740acecfa 71 defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
bogdanm 0:9b334a45a8ff 72 /* Private typedef -----------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 73 /* Private define ------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 74 /* Private macro -------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 75 /* Private variables ---------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 76 /* Private function prototypes -----------------------------------------------*/
bogdanm 0:9b334a45a8ff 77 /* Exported functions --------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 78
bogdanm 0:9b334a45a8ff 79 /** @defgroup DCMIEx_Exported_Functions DCMI Extended Exported Functions
bogdanm 0:9b334a45a8ff 80 * @{
bogdanm 0:9b334a45a8ff 81 */
bogdanm 0:9b334a45a8ff 82
bogdanm 0:9b334a45a8ff 83 /** @defgroup DCMIEx_Exported_Functions_Group1 Initialization and Configuration functions
bogdanm 0:9b334a45a8ff 84 * @brief Initialization and Configuration functions
bogdanm 0:9b334a45a8ff 85 *
bogdanm 0:9b334a45a8ff 86 @verbatim
bogdanm 0:9b334a45a8ff 87 ===============================================================================
bogdanm 0:9b334a45a8ff 88 ##### Initialization and Configuration functions #####
bogdanm 0:9b334a45a8ff 89 ===============================================================================
bogdanm 0:9b334a45a8ff 90 [..] This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 91 (+) Initialize and configure the DCMI
bogdanm 0:9b334a45a8ff 92 (+) De-initialize the DCMI
bogdanm 0:9b334a45a8ff 93
bogdanm 0:9b334a45a8ff 94 @endverbatim
bogdanm 0:9b334a45a8ff 95 * @{
bogdanm 0:9b334a45a8ff 96 */
bogdanm 0:9b334a45a8ff 97
bogdanm 0:9b334a45a8ff 98 /**
bogdanm 0:9b334a45a8ff 99 * @brief Initializes the DCMI according to the specified
bogdanm 0:9b334a45a8ff 100 * parameters in the DCMI_InitTypeDef and create the associated handle.
bogdanm 0:9b334a45a8ff 101 * @param hdcmi: pointer to a DCMI_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 102 * the configuration information for DCMI.
bogdanm 0:9b334a45a8ff 103 * @retval HAL status
bogdanm 0:9b334a45a8ff 104 */
bogdanm 0:9b334a45a8ff 105 HAL_StatusTypeDef HAL_DCMI_Init(DCMI_HandleTypeDef *hdcmi)
bogdanm 0:9b334a45a8ff 106 {
bogdanm 0:9b334a45a8ff 107 /* Check the DCMI peripheral state */
bogdanm 0:9b334a45a8ff 108 if(hdcmi == NULL)
bogdanm 0:9b334a45a8ff 109 {
bogdanm 0:9b334a45a8ff 110 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 111 }
bogdanm 0:9b334a45a8ff 112
bogdanm 0:9b334a45a8ff 113 /* Check function parameters */
bogdanm 0:9b334a45a8ff 114 assert_param(IS_DCMI_ALL_INSTANCE(hdcmi->Instance));
bogdanm 0:9b334a45a8ff 115 assert_param(IS_DCMI_PCKPOLARITY(hdcmi->Init.PCKPolarity));
bogdanm 0:9b334a45a8ff 116 assert_param(IS_DCMI_VSPOLARITY(hdcmi->Init.VSPolarity));
bogdanm 0:9b334a45a8ff 117 assert_param(IS_DCMI_HSPOLARITY(hdcmi->Init.HSPolarity));
bogdanm 0:9b334a45a8ff 118 assert_param(IS_DCMI_SYNCHRO(hdcmi->Init.SynchroMode));
bogdanm 0:9b334a45a8ff 119 assert_param(IS_DCMI_CAPTURE_RATE(hdcmi->Init.CaptureRate));
bogdanm 0:9b334a45a8ff 120 assert_param(IS_DCMI_EXTENDED_DATA(hdcmi->Init.ExtendedDataMode));
bogdanm 0:9b334a45a8ff 121 assert_param(IS_DCMI_MODE_JPEG(hdcmi->Init.JPEGMode));
mbed_official 19:112740acecfa 122 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
bogdanm 0:9b334a45a8ff 123 assert_param(IS_DCMI_BYTE_SELECT_MODE(hdcmi->Init.ByteSelectMode));
bogdanm 0:9b334a45a8ff 124 assert_param(IS_DCMI_BYTE_SELECT_START(hdcmi->Init.ByteSelectStart));
bogdanm 0:9b334a45a8ff 125 assert_param(IS_DCMI_LINE_SELECT_MODE(hdcmi->Init.LineSelectMode));
bogdanm 0:9b334a45a8ff 126 assert_param(IS_DCMI_LINE_SELECT_START(hdcmi->Init.LineSelectStart));
mbed_official 19:112740acecfa 127 #endif /* STM32F446xx || STM32F469xx || STM32F479xx */
bogdanm 0:9b334a45a8ff 128 if(hdcmi->State == HAL_DCMI_STATE_RESET)
bogdanm 0:9b334a45a8ff 129 {
bogdanm 0:9b334a45a8ff 130 /* Init the low level hardware */
bogdanm 0:9b334a45a8ff 131 HAL_DCMI_MspInit(hdcmi);
bogdanm 0:9b334a45a8ff 132 }
bogdanm 0:9b334a45a8ff 133
bogdanm 0:9b334a45a8ff 134 /* Change the DCMI state */
bogdanm 0:9b334a45a8ff 135 hdcmi->State = HAL_DCMI_STATE_BUSY;
bogdanm 0:9b334a45a8ff 136 /* Configures the HS, VS, DE and PC polarity */
bogdanm 0:9b334a45a8ff 137 hdcmi->Instance->CR &= ~(DCMI_CR_PCKPOL | DCMI_CR_HSPOL | DCMI_CR_VSPOL | DCMI_CR_EDM_0 |\
bogdanm 0:9b334a45a8ff 138 DCMI_CR_EDM_1 | DCMI_CR_FCRC_0 | DCMI_CR_FCRC_1 | DCMI_CR_JPEG |\
bogdanm 0:9b334a45a8ff 139 DCMI_CR_ESS
mbed_official 19:112740acecfa 140 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
bogdanm 0:9b334a45a8ff 141 | DCMI_CR_BSM_0 | DCMI_CR_BSM_1 | DCMI_CR_OEBS |\
bogdanm 0:9b334a45a8ff 142 DCMI_CR_LSM | DCMI_CR_OELS
mbed_official 19:112740acecfa 143 #endif /* STM32F446xx || STM32F469xx || STM32F479xx */
bogdanm 0:9b334a45a8ff 144 );
bogdanm 0:9b334a45a8ff 145 hdcmi->Instance->CR |= (uint32_t)(hdcmi->Init.SynchroMode | hdcmi->Init.CaptureRate |\
bogdanm 0:9b334a45a8ff 146 hdcmi->Init.VSPolarity | hdcmi->Init.HSPolarity |\
bogdanm 0:9b334a45a8ff 147 hdcmi->Init.PCKPolarity | hdcmi->Init.ExtendedDataMode |\
bogdanm 0:9b334a45a8ff 148 hdcmi->Init.JPEGMode
mbed_official 19:112740acecfa 149 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
bogdanm 0:9b334a45a8ff 150 | hdcmi->Init.ByteSelectMode |\
bogdanm 0:9b334a45a8ff 151 hdcmi->Init.ByteSelectStart | hdcmi->Init.LineSelectMode |\
bogdanm 0:9b334a45a8ff 152 hdcmi->Init.LineSelectStart
mbed_official 19:112740acecfa 153 #endif /* STM32F446xx || STM32F469xx || STM32F479xx */
bogdanm 0:9b334a45a8ff 154 );
bogdanm 0:9b334a45a8ff 155 if(hdcmi->Init.SynchroMode == DCMI_SYNCHRO_EMBEDDED)
bogdanm 0:9b334a45a8ff 156 {
bogdanm 0:9b334a45a8ff 157 DCMI->ESCR = (((uint32_t)hdcmi->Init.SyncroCode.FrameStartCode) |
bogdanm 0:9b334a45a8ff 158 ((uint32_t)hdcmi->Init.SyncroCode.LineStartCode << 8)|
bogdanm 0:9b334a45a8ff 159 ((uint32_t)hdcmi->Init.SyncroCode.LineEndCode << 16) |
bogdanm 0:9b334a45a8ff 160 ((uint32_t)hdcmi->Init.SyncroCode.FrameEndCode << 24));
bogdanm 0:9b334a45a8ff 161
bogdanm 0:9b334a45a8ff 162 }
bogdanm 0:9b334a45a8ff 163
bogdanm 0:9b334a45a8ff 164 /* Enable the Line interrupt */
bogdanm 0:9b334a45a8ff 165 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_LINE);
bogdanm 0:9b334a45a8ff 166
bogdanm 0:9b334a45a8ff 167 /* Enable the VSYNC interrupt */
bogdanm 0:9b334a45a8ff 168 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_VSYNC);
bogdanm 0:9b334a45a8ff 169
bogdanm 0:9b334a45a8ff 170 /* Enable the Frame capture complete interrupt */
bogdanm 0:9b334a45a8ff 171 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_FRAME);
bogdanm 0:9b334a45a8ff 172
bogdanm 0:9b334a45a8ff 173 /* Enable the Synchronization error interrupt */
bogdanm 0:9b334a45a8ff 174 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_ERR);
bogdanm 0:9b334a45a8ff 175
bogdanm 0:9b334a45a8ff 176 /* Enable the Overflow interrupt */
bogdanm 0:9b334a45a8ff 177 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_OVF);
bogdanm 0:9b334a45a8ff 178
bogdanm 0:9b334a45a8ff 179 /* Enable DCMI by setting DCMIEN bit */
bogdanm 0:9b334a45a8ff 180 __HAL_DCMI_ENABLE(hdcmi);
bogdanm 0:9b334a45a8ff 181
bogdanm 0:9b334a45a8ff 182 /* Update error code */
bogdanm 0:9b334a45a8ff 183 hdcmi->ErrorCode = HAL_DCMI_ERROR_NONE;
bogdanm 0:9b334a45a8ff 184
bogdanm 0:9b334a45a8ff 185 /* Initialize the DCMI state*/
bogdanm 0:9b334a45a8ff 186 hdcmi->State = HAL_DCMI_STATE_READY;
bogdanm 0:9b334a45a8ff 187
bogdanm 0:9b334a45a8ff 188 return HAL_OK;
bogdanm 0:9b334a45a8ff 189 }
bogdanm 0:9b334a45a8ff 190
bogdanm 0:9b334a45a8ff 191
bogdanm 0:9b334a45a8ff 192 /**
bogdanm 0:9b334a45a8ff 193 * @}
bogdanm 0:9b334a45a8ff 194 */
bogdanm 0:9b334a45a8ff 195
bogdanm 0:9b334a45a8ff 196 /**
bogdanm 0:9b334a45a8ff 197 * @}
bogdanm 0:9b334a45a8ff 198 */
bogdanm 0:9b334a45a8ff 199
bogdanm 0:9b334a45a8ff 200 /**
bogdanm 0:9b334a45a8ff 201 * @}
bogdanm 0:9b334a45a8ff 202 */
mbed_official 19:112740acecfa 203 #endif /* STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx ||\
mbed_official 19:112740acecfa 204 STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
bogdanm 0:9b334a45a8ff 205 #endif /* HAL_DCMI_MODULE_ENABLED */
bogdanm 0:9b334a45a8ff 206 /**
bogdanm 0:9b334a45a8ff 207 * @}
bogdanm 0:9b334a45a8ff 208 */
bogdanm 0:9b334a45a8ff 209
bogdanm 0:9b334a45a8ff 210 /**
bogdanm 0:9b334a45a8ff 211 * @}
bogdanm 0:9b334a45a8ff 212 */
bogdanm 0:9b334a45a8ff 213
bogdanm 0:9b334a45a8ff 214 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/