Initial commit

Dependencies:   FastPWM

Committer:
lypinator
Date:
Wed Sep 16 01:11:49 2020 +0000
Revision:
0:bb348c97df44
Added PWM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lypinator 0:bb348c97df44 1 /**
lypinator 0:bb348c97df44 2 ******************************************************************************
lypinator 0:bb348c97df44 3 * @file stm32f4xx_hal_dcmi.h
lypinator 0:bb348c97df44 4 * @author MCD Application Team
lypinator 0:bb348c97df44 5 * @brief Header file of DCMI HAL module.
lypinator 0:bb348c97df44 6 ******************************************************************************
lypinator 0:bb348c97df44 7 * @attention
lypinator 0:bb348c97df44 8 *
lypinator 0:bb348c97df44 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
lypinator 0:bb348c97df44 10 *
lypinator 0:bb348c97df44 11 * Redistribution and use in source and binary forms, with or without modification,
lypinator 0:bb348c97df44 12 * are permitted provided that the following conditions are met:
lypinator 0:bb348c97df44 13 * 1. Redistributions of source code must retain the above copyright notice,
lypinator 0:bb348c97df44 14 * this list of conditions and the following disclaimer.
lypinator 0:bb348c97df44 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
lypinator 0:bb348c97df44 16 * this list of conditions and the following disclaimer in the documentation
lypinator 0:bb348c97df44 17 * and/or other materials provided with the distribution.
lypinator 0:bb348c97df44 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
lypinator 0:bb348c97df44 19 * may be used to endorse or promote products derived from this software
lypinator 0:bb348c97df44 20 * without specific prior written permission.
lypinator 0:bb348c97df44 21 *
lypinator 0:bb348c97df44 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
lypinator 0:bb348c97df44 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
lypinator 0:bb348c97df44 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lypinator 0:bb348c97df44 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
lypinator 0:bb348c97df44 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
lypinator 0:bb348c97df44 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
lypinator 0:bb348c97df44 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lypinator 0:bb348c97df44 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
lypinator 0:bb348c97df44 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
lypinator 0:bb348c97df44 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lypinator 0:bb348c97df44 32 *
lypinator 0:bb348c97df44 33 ******************************************************************************
lypinator 0:bb348c97df44 34 */
lypinator 0:bb348c97df44 35
lypinator 0:bb348c97df44 36 /* Define to prevent recursive inclusion -------------------------------------*/
lypinator 0:bb348c97df44 37 #ifndef __STM32F4xx_HAL_DCMI_H
lypinator 0:bb348c97df44 38 #define __STM32F4xx_HAL_DCMI_H
lypinator 0:bb348c97df44 39
lypinator 0:bb348c97df44 40 #ifdef __cplusplus
lypinator 0:bb348c97df44 41 extern "C" {
lypinator 0:bb348c97df44 42 #endif
lypinator 0:bb348c97df44 43
lypinator 0:bb348c97df44 44 #if defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F437xx) ||\
lypinator 0:bb348c97df44 45 defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) ||\
lypinator 0:bb348c97df44 46 defined(STM32F479xx)
lypinator 0:bb348c97df44 47 /* Includes ------------------------------------------------------------------*/
lypinator 0:bb348c97df44 48 #include "stm32f4xx_hal_def.h"
lypinator 0:bb348c97df44 49
lypinator 0:bb348c97df44 50 /* Include DCMI HAL Extended module */
lypinator 0:bb348c97df44 51 /* (include on top of file since DCMI structures are defined in extended file) */
lypinator 0:bb348c97df44 52 #include "stm32f4xx_hal_dcmi_ex.h"
lypinator 0:bb348c97df44 53
lypinator 0:bb348c97df44 54 /** @addtogroup STM32F4xx_HAL_Driver
lypinator 0:bb348c97df44 55 * @{
lypinator 0:bb348c97df44 56 */
lypinator 0:bb348c97df44 57
lypinator 0:bb348c97df44 58 /** @addtogroup DCMI DCMI
lypinator 0:bb348c97df44 59 * @brief DCMI HAL module driver
lypinator 0:bb348c97df44 60 * @{
lypinator 0:bb348c97df44 61 */
lypinator 0:bb348c97df44 62
lypinator 0:bb348c97df44 63 /* Exported types ------------------------------------------------------------*/
lypinator 0:bb348c97df44 64 /** @defgroup DCMI_Exported_Types DCMI Exported Types
lypinator 0:bb348c97df44 65 * @{
lypinator 0:bb348c97df44 66 */
lypinator 0:bb348c97df44 67 /**
lypinator 0:bb348c97df44 68 * @brief HAL DCMI State structures definition
lypinator 0:bb348c97df44 69 */
lypinator 0:bb348c97df44 70 typedef enum
lypinator 0:bb348c97df44 71 {
lypinator 0:bb348c97df44 72 HAL_DCMI_STATE_RESET = 0x00U, /*!< DCMI not yet initialized or disabled */
lypinator 0:bb348c97df44 73 HAL_DCMI_STATE_READY = 0x01U, /*!< DCMI initialized and ready for use */
lypinator 0:bb348c97df44 74 HAL_DCMI_STATE_BUSY = 0x02U, /*!< DCMI internal processing is ongoing */
lypinator 0:bb348c97df44 75 HAL_DCMI_STATE_TIMEOUT = 0x03U, /*!< DCMI timeout state */
lypinator 0:bb348c97df44 76 HAL_DCMI_STATE_ERROR = 0x04U, /*!< DCMI error state */
lypinator 0:bb348c97df44 77 HAL_DCMI_STATE_SUSPENDED = 0x05U /*!< DCMI suspend state */
lypinator 0:bb348c97df44 78 }HAL_DCMI_StateTypeDef;
lypinator 0:bb348c97df44 79
lypinator 0:bb348c97df44 80 /**
lypinator 0:bb348c97df44 81 * @brief DCMI handle Structure definition
lypinator 0:bb348c97df44 82 */
lypinator 0:bb348c97df44 83 typedef struct
lypinator 0:bb348c97df44 84 {
lypinator 0:bb348c97df44 85 DCMI_TypeDef *Instance; /*!< DCMI Register base address */
lypinator 0:bb348c97df44 86
lypinator 0:bb348c97df44 87 DCMI_InitTypeDef Init; /*!< DCMI parameters */
lypinator 0:bb348c97df44 88
lypinator 0:bb348c97df44 89 HAL_LockTypeDef Lock; /*!< DCMI locking object */
lypinator 0:bb348c97df44 90
lypinator 0:bb348c97df44 91 __IO HAL_DCMI_StateTypeDef State; /*!< DCMI state */
lypinator 0:bb348c97df44 92
lypinator 0:bb348c97df44 93 __IO uint32_t XferCount; /*!< DMA transfer counter */
lypinator 0:bb348c97df44 94
lypinator 0:bb348c97df44 95 __IO uint32_t XferSize; /*!< DMA transfer size */
lypinator 0:bb348c97df44 96
lypinator 0:bb348c97df44 97 uint32_t XferTransferNumber; /*!< DMA transfer number */
lypinator 0:bb348c97df44 98
lypinator 0:bb348c97df44 99 uint32_t pBuffPtr; /*!< Pointer to DMA output buffer */
lypinator 0:bb348c97df44 100
lypinator 0:bb348c97df44 101 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer to the DMA handler */
lypinator 0:bb348c97df44 102
lypinator 0:bb348c97df44 103 __IO uint32_t ErrorCode; /*!< DCMI Error code */
lypinator 0:bb348c97df44 104
lypinator 0:bb348c97df44 105 }DCMI_HandleTypeDef;
lypinator 0:bb348c97df44 106 /**
lypinator 0:bb348c97df44 107 * @}
lypinator 0:bb348c97df44 108 */
lypinator 0:bb348c97df44 109
lypinator 0:bb348c97df44 110 /* Exported constants --------------------------------------------------------*/
lypinator 0:bb348c97df44 111 /** @defgroup DCMI_Exported_Constants DCMI Exported Constants
lypinator 0:bb348c97df44 112 * @{
lypinator 0:bb348c97df44 113 */
lypinator 0:bb348c97df44 114
lypinator 0:bb348c97df44 115 /** @defgroup DCMI_Error_Code DCMI Error Code
lypinator 0:bb348c97df44 116 * @{
lypinator 0:bb348c97df44 117 */
lypinator 0:bb348c97df44 118 #define HAL_DCMI_ERROR_NONE 0x00000000U /*!< No error */
lypinator 0:bb348c97df44 119 #define HAL_DCMI_ERROR_OVR 0x00000001U /*!< Overrun error */
lypinator 0:bb348c97df44 120 #define HAL_DCMI_ERROR_SYNC 0x00000002U /*!< Synchronization error */
lypinator 0:bb348c97df44 121 #define HAL_DCMI_ERROR_TIMEOUT 0x00000020U /*!< Timeout error */
lypinator 0:bb348c97df44 122 #define HAL_DCMI_ERROR_DMA 0x00000040U /*!< DMA error */
lypinator 0:bb348c97df44 123 /**
lypinator 0:bb348c97df44 124 * @}
lypinator 0:bb348c97df44 125 */
lypinator 0:bb348c97df44 126
lypinator 0:bb348c97df44 127 /** @defgroup DCMI_Capture_Mode DCMI Capture Mode
lypinator 0:bb348c97df44 128 * @{
lypinator 0:bb348c97df44 129 */
lypinator 0:bb348c97df44 130 #define DCMI_MODE_CONTINUOUS 0x00000000U /*!< The received data are transferred continuously
lypinator 0:bb348c97df44 131 into the destination memory through the DMA */
lypinator 0:bb348c97df44 132 #define DCMI_MODE_SNAPSHOT ((uint32_t)DCMI_CR_CM) /*!< Once activated, the interface waits for the start of
lypinator 0:bb348c97df44 133 frame and then transfers a single frame through the DMA */
lypinator 0:bb348c97df44 134 /**
lypinator 0:bb348c97df44 135 * @}
lypinator 0:bb348c97df44 136 */
lypinator 0:bb348c97df44 137
lypinator 0:bb348c97df44 138 /** @defgroup DCMI_Synchronization_Mode DCMI Synchronization Mode
lypinator 0:bb348c97df44 139 * @{
lypinator 0:bb348c97df44 140 */
lypinator 0:bb348c97df44 141 #define DCMI_SYNCHRO_HARDWARE 0x00000000U /*!< Hardware synchronization data capture (frame/line start/stop)
lypinator 0:bb348c97df44 142 is synchronized with the HSYNC/VSYNC signals */
lypinator 0:bb348c97df44 143 #define DCMI_SYNCHRO_EMBEDDED ((uint32_t)DCMI_CR_ESS) /*!< Embedded synchronization data capture is synchronized with
lypinator 0:bb348c97df44 144 synchronization codes embedded in the data flow */
lypinator 0:bb348c97df44 145
lypinator 0:bb348c97df44 146 /**
lypinator 0:bb348c97df44 147 * @}
lypinator 0:bb348c97df44 148 */
lypinator 0:bb348c97df44 149
lypinator 0:bb348c97df44 150 /** @defgroup DCMI_PIXCK_Polarity DCMI PIXCK Polarity
lypinator 0:bb348c97df44 151 * @{
lypinator 0:bb348c97df44 152 */
lypinator 0:bb348c97df44 153 #define DCMI_PCKPOLARITY_FALLING 0x00000000U /*!< Pixel clock active on Falling edge */
lypinator 0:bb348c97df44 154 #define DCMI_PCKPOLARITY_RISING ((uint32_t)DCMI_CR_PCKPOL) /*!< Pixel clock active on Rising edge */
lypinator 0:bb348c97df44 155
lypinator 0:bb348c97df44 156 /**
lypinator 0:bb348c97df44 157 * @}
lypinator 0:bb348c97df44 158 */
lypinator 0:bb348c97df44 159
lypinator 0:bb348c97df44 160 /** @defgroup DCMI_VSYNC_Polarity DCMI VSYNC Polarity
lypinator 0:bb348c97df44 161 * @{
lypinator 0:bb348c97df44 162 */
lypinator 0:bb348c97df44 163 #define DCMI_VSPOLARITY_LOW 0x00000000U /*!< Vertical synchronization active Low */
lypinator 0:bb348c97df44 164 #define DCMI_VSPOLARITY_HIGH ((uint32_t)DCMI_CR_VSPOL) /*!< Vertical synchronization active High */
lypinator 0:bb348c97df44 165
lypinator 0:bb348c97df44 166 /**
lypinator 0:bb348c97df44 167 * @}
lypinator 0:bb348c97df44 168 */
lypinator 0:bb348c97df44 169
lypinator 0:bb348c97df44 170 /** @defgroup DCMI_HSYNC_Polarity DCMI HSYNC Polarity
lypinator 0:bb348c97df44 171 * @{
lypinator 0:bb348c97df44 172 */
lypinator 0:bb348c97df44 173 #define DCMI_HSPOLARITY_LOW 0x00000000U /*!< Horizontal synchronization active Low */
lypinator 0:bb348c97df44 174 #define DCMI_HSPOLARITY_HIGH ((uint32_t)DCMI_CR_HSPOL) /*!< Horizontal synchronization active High */
lypinator 0:bb348c97df44 175
lypinator 0:bb348c97df44 176 /**
lypinator 0:bb348c97df44 177 * @}
lypinator 0:bb348c97df44 178 */
lypinator 0:bb348c97df44 179
lypinator 0:bb348c97df44 180 /** @defgroup DCMI_MODE_JPEG DCMI MODE JPEG
lypinator 0:bb348c97df44 181 * @{
lypinator 0:bb348c97df44 182 */
lypinator 0:bb348c97df44 183 #define DCMI_JPEG_DISABLE 0x00000000U /*!< Mode JPEG Disabled */
lypinator 0:bb348c97df44 184 #define DCMI_JPEG_ENABLE ((uint32_t)DCMI_CR_JPEG) /*!< Mode JPEG Enabled */
lypinator 0:bb348c97df44 185
lypinator 0:bb348c97df44 186 /**
lypinator 0:bb348c97df44 187 * @}
lypinator 0:bb348c97df44 188 */
lypinator 0:bb348c97df44 189
lypinator 0:bb348c97df44 190 /** @defgroup DCMI_Capture_Rate DCMI Capture Rate
lypinator 0:bb348c97df44 191 * @{
lypinator 0:bb348c97df44 192 */
lypinator 0:bb348c97df44 193 #define DCMI_CR_ALL_FRAME 0x00000000U /*!< All frames are captured */
lypinator 0:bb348c97df44 194 #define DCMI_CR_ALTERNATE_2_FRAME ((uint32_t)DCMI_CR_FCRC_0) /*!< Every alternate frame captured */
lypinator 0:bb348c97df44 195 #define DCMI_CR_ALTERNATE_4_FRAME ((uint32_t)DCMI_CR_FCRC_1) /*!< One frame in 4 frames captured */
lypinator 0:bb348c97df44 196
lypinator 0:bb348c97df44 197 /**
lypinator 0:bb348c97df44 198 * @}
lypinator 0:bb348c97df44 199 */
lypinator 0:bb348c97df44 200
lypinator 0:bb348c97df44 201 /** @defgroup DCMI_Extended_Data_Mode DCMI Extended Data Mode
lypinator 0:bb348c97df44 202 * @{
lypinator 0:bb348c97df44 203 */
lypinator 0:bb348c97df44 204 #define DCMI_EXTEND_DATA_8B 0x00000000U /*!< Interface captures 8-bit data on every pixel clock */
lypinator 0:bb348c97df44 205 #define DCMI_EXTEND_DATA_10B ((uint32_t)DCMI_CR_EDM_0) /*!< Interface captures 10-bit data on every pixel clock */
lypinator 0:bb348c97df44 206 #define DCMI_EXTEND_DATA_12B ((uint32_t)DCMI_CR_EDM_1) /*!< Interface captures 12-bit data on every pixel clock */
lypinator 0:bb348c97df44 207 #define DCMI_EXTEND_DATA_14B ((uint32_t)(DCMI_CR_EDM_0 | DCMI_CR_EDM_1)) /*!< Interface captures 14-bit data on every pixel clock */
lypinator 0:bb348c97df44 208
lypinator 0:bb348c97df44 209 /**
lypinator 0:bb348c97df44 210 * @}
lypinator 0:bb348c97df44 211 */
lypinator 0:bb348c97df44 212
lypinator 0:bb348c97df44 213 /** @defgroup DCMI_Window_Coordinate DCMI Window Coordinate
lypinator 0:bb348c97df44 214 * @{
lypinator 0:bb348c97df44 215 */
lypinator 0:bb348c97df44 216 #define DCMI_WINDOW_COORDINATE 0x3FFFU /*!< Window coordinate */
lypinator 0:bb348c97df44 217
lypinator 0:bb348c97df44 218 /**
lypinator 0:bb348c97df44 219 * @}
lypinator 0:bb348c97df44 220 */
lypinator 0:bb348c97df44 221
lypinator 0:bb348c97df44 222 /** @defgroup DCMI_Window_Height DCMI Window Height
lypinator 0:bb348c97df44 223 * @{
lypinator 0:bb348c97df44 224 */
lypinator 0:bb348c97df44 225 #define DCMI_WINDOW_HEIGHT 0x1FFFU /*!< Window Height */
lypinator 0:bb348c97df44 226
lypinator 0:bb348c97df44 227 /**
lypinator 0:bb348c97df44 228 * @}
lypinator 0:bb348c97df44 229 */
lypinator 0:bb348c97df44 230
lypinator 0:bb348c97df44 231 /** @defgroup DCMI_Window_Vertical_Line DCMI Window Vertical Line
lypinator 0:bb348c97df44 232 * @{
lypinator 0:bb348c97df44 233 */
lypinator 0:bb348c97df44 234 #define DCMI_POSITION_CWSIZE_VLINE (uint32_t)DCMI_CWSIZE_VLINE_Pos /*!< Required left shift to set crop window vertical line count */
lypinator 0:bb348c97df44 235 #define DCMI_POSITION_CWSTRT_VST (uint32_t)DCMI_CWSTRT_VST_Pos /*!< Required left shift to set crop window vertical start line count */
lypinator 0:bb348c97df44 236
lypinator 0:bb348c97df44 237 /**
lypinator 0:bb348c97df44 238 * @}
lypinator 0:bb348c97df44 239 */
lypinator 0:bb348c97df44 240
lypinator 0:bb348c97df44 241 /** @defgroup DCMI_interrupt_sources DCMI interrupt sources
lypinator 0:bb348c97df44 242 * @{
lypinator 0:bb348c97df44 243 */
lypinator 0:bb348c97df44 244 #define DCMI_IT_FRAME ((uint32_t)DCMI_IER_FRAME_IE) /*!< Capture complete interrupt */
lypinator 0:bb348c97df44 245 #define DCMI_IT_OVR ((uint32_t)DCMI_IER_OVR_IE) /*!< Overrun interrupt */
lypinator 0:bb348c97df44 246 #define DCMI_IT_ERR ((uint32_t)DCMI_IER_ERR_IE) /*!< Synchronization error interrupt */
lypinator 0:bb348c97df44 247 #define DCMI_IT_VSYNC ((uint32_t)DCMI_IER_VSYNC_IE) /*!< VSYNC interrupt */
lypinator 0:bb348c97df44 248 #define DCMI_IT_LINE ((uint32_t)DCMI_IER_LINE_IE) /*!< Line interrupt */
lypinator 0:bb348c97df44 249 /**
lypinator 0:bb348c97df44 250 * @}
lypinator 0:bb348c97df44 251 */
lypinator 0:bb348c97df44 252
lypinator 0:bb348c97df44 253 /** @defgroup DCMI_Flags DCMI Flags
lypinator 0:bb348c97df44 254 * @{
lypinator 0:bb348c97df44 255 */
lypinator 0:bb348c97df44 256
lypinator 0:bb348c97df44 257 /**
lypinator 0:bb348c97df44 258 * @brief DCMI SR register
lypinator 0:bb348c97df44 259 */
lypinator 0:bb348c97df44 260 #define DCMI_FLAG_HSYNC ((uint32_t)DCMI_SR_INDEX|DCMI_SR_HSYNC) /*!< HSYNC pin state (active line / synchronization between lines) */
lypinator 0:bb348c97df44 261 #define DCMI_FLAG_VSYNC ((uint32_t)DCMI_SR_INDEX|DCMI_SR_VSYNC) /*!< VSYNC pin state (active frame / synchronization between frames) */
lypinator 0:bb348c97df44 262 #define DCMI_FLAG_FNE ((uint32_t)DCMI_SR_INDEX|DCMI_SR_FNE) /*!< FIFO not empty flag */
lypinator 0:bb348c97df44 263 /**
lypinator 0:bb348c97df44 264 * @brief DCMI RIS register
lypinator 0:bb348c97df44 265 */
lypinator 0:bb348c97df44 266 #define DCMI_FLAG_FRAMERI ((uint32_t)DCMI_RISR_FRAME_RIS) /*!< Frame capture complete interrupt flag */
lypinator 0:bb348c97df44 267 #define DCMI_FLAG_OVRRI ((uint32_t)DCMI_RISR_OVR_RIS) /*!< Overrun interrupt flag */
lypinator 0:bb348c97df44 268 #define DCMI_FLAG_ERRRI ((uint32_t)DCMI_RISR_ERR_RIS) /*!< Synchronization error interrupt flag */
lypinator 0:bb348c97df44 269 #define DCMI_FLAG_VSYNCRI ((uint32_t)DCMI_RISR_VSYNC_RIS) /*!< VSYNC interrupt flag */
lypinator 0:bb348c97df44 270 #define DCMI_FLAG_LINERI ((uint32_t)DCMI_RISR_LINE_RIS) /*!< Line interrupt flag */
lypinator 0:bb348c97df44 271 /**
lypinator 0:bb348c97df44 272 * @brief DCMI MIS register
lypinator 0:bb348c97df44 273 */
lypinator 0:bb348c97df44 274 #define DCMI_FLAG_FRAMEMI ((uint32_t)DCMI_MIS_INDEX|DCMI_MIS_FRAME_MIS) /*!< DCMI Frame capture complete masked interrupt status */
lypinator 0:bb348c97df44 275 #define DCMI_FLAG_OVRMI ((uint32_t)DCMI_MIS_INDEX|DCMI_MIS_OVR_MIS ) /*!< DCMI Overrun masked interrupt status */
lypinator 0:bb348c97df44 276 #define DCMI_FLAG_ERRMI ((uint32_t)DCMI_MIS_INDEX|DCMI_MIS_ERR_MIS ) /*!< DCMI Synchronization error masked interrupt status */
lypinator 0:bb348c97df44 277 #define DCMI_FLAG_VSYNCMI ((uint32_t)DCMI_MIS_INDEX|DCMI_MIS_VSYNC_MIS) /*!< DCMI VSYNC masked interrupt status */
lypinator 0:bb348c97df44 278 #define DCMI_FLAG_LINEMI ((uint32_t)DCMI_MIS_INDEX|DCMI_MIS_LINE_MIS ) /*!< DCMI Line masked interrupt status */
lypinator 0:bb348c97df44 279 /**
lypinator 0:bb348c97df44 280 * @}
lypinator 0:bb348c97df44 281 */
lypinator 0:bb348c97df44 282
lypinator 0:bb348c97df44 283 /**
lypinator 0:bb348c97df44 284 * @}
lypinator 0:bb348c97df44 285 */
lypinator 0:bb348c97df44 286
lypinator 0:bb348c97df44 287 /* Exported macro ------------------------------------------------------------*/
lypinator 0:bb348c97df44 288 /** @defgroup DCMI_Exported_Macros DCMI Exported Macros
lypinator 0:bb348c97df44 289 * @{
lypinator 0:bb348c97df44 290 */
lypinator 0:bb348c97df44 291
lypinator 0:bb348c97df44 292 /** @brief Reset DCMI handle state
lypinator 0:bb348c97df44 293 * @param __HANDLE__ specifies the DCMI handle.
lypinator 0:bb348c97df44 294 * @retval None
lypinator 0:bb348c97df44 295 */
lypinator 0:bb348c97df44 296 #define __HAL_DCMI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DCMI_STATE_RESET)
lypinator 0:bb348c97df44 297
lypinator 0:bb348c97df44 298 /**
lypinator 0:bb348c97df44 299 * @brief Enable the DCMI.
lypinator 0:bb348c97df44 300 * @param __HANDLE__ DCMI handle
lypinator 0:bb348c97df44 301 * @retval None
lypinator 0:bb348c97df44 302 */
lypinator 0:bb348c97df44 303 #define __HAL_DCMI_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= DCMI_CR_ENABLE)
lypinator 0:bb348c97df44 304
lypinator 0:bb348c97df44 305 /**
lypinator 0:bb348c97df44 306 * @brief Disable the DCMI.
lypinator 0:bb348c97df44 307 * @param __HANDLE__ DCMI handle
lypinator 0:bb348c97df44 308 * @retval None
lypinator 0:bb348c97df44 309 */
lypinator 0:bb348c97df44 310 #define __HAL_DCMI_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(DCMI_CR_ENABLE))
lypinator 0:bb348c97df44 311
lypinator 0:bb348c97df44 312 /* Interrupt & Flag management */
lypinator 0:bb348c97df44 313 /**
lypinator 0:bb348c97df44 314 * @brief Get the DCMI pending flag.
lypinator 0:bb348c97df44 315 * @param __HANDLE__ DCMI handle
lypinator 0:bb348c97df44 316 * @param __FLAG__ Get the specified flag.
lypinator 0:bb348c97df44 317 * This parameter can be one of the following values (no combination allowed)
lypinator 0:bb348c97df44 318 * @arg DCMI_FLAG_HSYNC: HSYNC pin state (active line / synchronization between lines)
lypinator 0:bb348c97df44 319 * @arg DCMI_FLAG_VSYNC: VSYNC pin state (active frame / synchronization between frames)
lypinator 0:bb348c97df44 320 * @arg DCMI_FLAG_FNE: FIFO empty flag
lypinator 0:bb348c97df44 321 * @arg DCMI_FLAG_FRAMERI: Frame capture complete flag mask
lypinator 0:bb348c97df44 322 * @arg DCMI_FLAG_OVRRI: Overrun flag mask
lypinator 0:bb348c97df44 323 * @arg DCMI_FLAG_ERRRI: Synchronization error flag mask
lypinator 0:bb348c97df44 324 * @arg DCMI_FLAG_VSYNCRI: VSYNC flag mask
lypinator 0:bb348c97df44 325 * @arg DCMI_FLAG_LINERI: Line flag mask
lypinator 0:bb348c97df44 326 * @arg DCMI_FLAG_FRAMEMI: DCMI Capture complete masked interrupt status
lypinator 0:bb348c97df44 327 * @arg DCMI_FLAG_OVRMI: DCMI Overrun masked interrupt status
lypinator 0:bb348c97df44 328 * @arg DCMI_FLAG_ERRMI: DCMI Synchronization error masked interrupt status
lypinator 0:bb348c97df44 329 * @arg DCMI_FLAG_VSYNCMI: DCMI VSYNC masked interrupt status
lypinator 0:bb348c97df44 330 * @arg DCMI_FLAG_LINEMI: DCMI Line masked interrupt status
lypinator 0:bb348c97df44 331 * @retval The state of FLAG.
lypinator 0:bb348c97df44 332 */
lypinator 0:bb348c97df44 333 #define __HAL_DCMI_GET_FLAG(__HANDLE__, __FLAG__)\
lypinator 0:bb348c97df44 334 ((((__FLAG__) & (DCMI_SR_INDEX|DCMI_MIS_INDEX)) == 0x0U)? ((__HANDLE__)->Instance->RISR & (__FLAG__)) :\
lypinator 0:bb348c97df44 335 (((__FLAG__) & DCMI_SR_INDEX) == 0x0U)? ((__HANDLE__)->Instance->MISR & (__FLAG__)) : ((__HANDLE__)->Instance->SR & (__FLAG__)))
lypinator 0:bb348c97df44 336
lypinator 0:bb348c97df44 337 /**
lypinator 0:bb348c97df44 338 * @brief Clear the DCMI pending flags.
lypinator 0:bb348c97df44 339 * @param __HANDLE__ DCMI handle
lypinator 0:bb348c97df44 340 * @param __FLAG__ specifies the flag to clear.
lypinator 0:bb348c97df44 341 * This parameter can be any combination of the following values:
lypinator 0:bb348c97df44 342 * @arg DCMI_FLAG_FRAMERI: Frame capture complete flag mask
lypinator 0:bb348c97df44 343 * @arg DCMI_FLAG_OVRRI: Overrun flag mask
lypinator 0:bb348c97df44 344 * @arg DCMI_FLAG_ERRRI: Synchronization error flag mask
lypinator 0:bb348c97df44 345 * @arg DCMI_FLAG_VSYNCRI: VSYNC flag mask
lypinator 0:bb348c97df44 346 * @arg DCMI_FLAG_LINERI: Line flag mask
lypinator 0:bb348c97df44 347 * @retval None
lypinator 0:bb348c97df44 348 */
lypinator 0:bb348c97df44 349 #define __HAL_DCMI_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
lypinator 0:bb348c97df44 350
lypinator 0:bb348c97df44 351 /**
lypinator 0:bb348c97df44 352 * @brief Enable the specified DCMI interrupts.
lypinator 0:bb348c97df44 353 * @param __HANDLE__ DCMI handle
lypinator 0:bb348c97df44 354 * @param __INTERRUPT__ specifies the DCMI interrupt sources to be enabled.
lypinator 0:bb348c97df44 355 * This parameter can be any combination of the following values:
lypinator 0:bb348c97df44 356 * @arg DCMI_IT_FRAME: Frame capture complete interrupt mask
lypinator 0:bb348c97df44 357 * @arg DCMI_IT_OVR: Overrun interrupt mask
lypinator 0:bb348c97df44 358 * @arg DCMI_IT_ERR: Synchronization error interrupt mask
lypinator 0:bb348c97df44 359 * @arg DCMI_IT_VSYNC: VSYNC interrupt mask
lypinator 0:bb348c97df44 360 * @arg DCMI_IT_LINE: Line interrupt mask
lypinator 0:bb348c97df44 361 * @retval None
lypinator 0:bb348c97df44 362 */
lypinator 0:bb348c97df44 363 #define __HAL_DCMI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
lypinator 0:bb348c97df44 364
lypinator 0:bb348c97df44 365 /**
lypinator 0:bb348c97df44 366 * @brief Disable the specified DCMI interrupts.
lypinator 0:bb348c97df44 367 * @param __HANDLE__ DCMI handle
lypinator 0:bb348c97df44 368 * @param __INTERRUPT__ specifies the DCMI interrupt sources to be enabled.
lypinator 0:bb348c97df44 369 * This parameter can be any combination of the following values:
lypinator 0:bb348c97df44 370 * @arg DCMI_IT_FRAME: Frame capture complete interrupt mask
lypinator 0:bb348c97df44 371 * @arg DCMI_IT_OVR: Overrun interrupt mask
lypinator 0:bb348c97df44 372 * @arg DCMI_IT_ERR: Synchronization error interrupt mask
lypinator 0:bb348c97df44 373 * @arg DCMI_IT_VSYNC: VSYNC interrupt mask
lypinator 0:bb348c97df44 374 * @arg DCMI_IT_LINE: Line interrupt mask
lypinator 0:bb348c97df44 375 * @retval None
lypinator 0:bb348c97df44 376 */
lypinator 0:bb348c97df44 377 #define __HAL_DCMI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER &= ~(__INTERRUPT__))
lypinator 0:bb348c97df44 378
lypinator 0:bb348c97df44 379 /**
lypinator 0:bb348c97df44 380 * @brief Check whether the specified DCMI interrupt has occurred or not.
lypinator 0:bb348c97df44 381 * @param __HANDLE__ DCMI handle
lypinator 0:bb348c97df44 382 * @param __INTERRUPT__ specifies the DCMI interrupt source to check.
lypinator 0:bb348c97df44 383 * This parameter can be one of the following values:
lypinator 0:bb348c97df44 384 * @arg DCMI_IT_FRAME: Frame capture complete interrupt mask
lypinator 0:bb348c97df44 385 * @arg DCMI_IT_OVR: Overrun interrupt mask
lypinator 0:bb348c97df44 386 * @arg DCMI_IT_ERR: Synchronization error interrupt mask
lypinator 0:bb348c97df44 387 * @arg DCMI_IT_VSYNC: VSYNC interrupt mask
lypinator 0:bb348c97df44 388 * @arg DCMI_IT_LINE: Line interrupt mask
lypinator 0:bb348c97df44 389 * @retval The state of INTERRUPT.
lypinator 0:bb348c97df44 390 */
lypinator 0:bb348c97df44 391 #define __HAL_DCMI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->MISR & (__INTERRUPT__))
lypinator 0:bb348c97df44 392
lypinator 0:bb348c97df44 393 /**
lypinator 0:bb348c97df44 394 * @}
lypinator 0:bb348c97df44 395 */
lypinator 0:bb348c97df44 396
lypinator 0:bb348c97df44 397 /* Exported functions --------------------------------------------------------*/
lypinator 0:bb348c97df44 398 /** @addtogroup DCMI_Exported_Functions DCMI Exported Functions
lypinator 0:bb348c97df44 399 * @{
lypinator 0:bb348c97df44 400 */
lypinator 0:bb348c97df44 401
lypinator 0:bb348c97df44 402 /** @addtogroup DCMI_Exported_Functions_Group1 Initialization and Configuration functions
lypinator 0:bb348c97df44 403 * @{
lypinator 0:bb348c97df44 404 */
lypinator 0:bb348c97df44 405 /* Initialization and de-initialization functions *****************************/
lypinator 0:bb348c97df44 406 HAL_StatusTypeDef HAL_DCMI_Init(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 407 HAL_StatusTypeDef HAL_DCMI_DeInit(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 408 void HAL_DCMI_MspInit(DCMI_HandleTypeDef* hdcmi);
lypinator 0:bb348c97df44 409 void HAL_DCMI_MspDeInit(DCMI_HandleTypeDef* hdcmi);
lypinator 0:bb348c97df44 410 /**
lypinator 0:bb348c97df44 411 * @}
lypinator 0:bb348c97df44 412 */
lypinator 0:bb348c97df44 413
lypinator 0:bb348c97df44 414 /** @addtogroup DCMI_Exported_Functions_Group2 IO operation functions
lypinator 0:bb348c97df44 415 * @{
lypinator 0:bb348c97df44 416 */
lypinator 0:bb348c97df44 417 /* IO operation functions *****************************************************/
lypinator 0:bb348c97df44 418 HAL_StatusTypeDef HAL_DCMI_Start_DMA(DCMI_HandleTypeDef* hdcmi, uint32_t DCMI_Mode, uint32_t pData, uint32_t Length);
lypinator 0:bb348c97df44 419 HAL_StatusTypeDef HAL_DCMI_Stop(DCMI_HandleTypeDef* hdcmi);
lypinator 0:bb348c97df44 420 HAL_StatusTypeDef HAL_DCMI_Suspend(DCMI_HandleTypeDef* hdcmi);
lypinator 0:bb348c97df44 421 HAL_StatusTypeDef HAL_DCMI_Resume(DCMI_HandleTypeDef* hdcmi);
lypinator 0:bb348c97df44 422 void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 423 void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 424 void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 425 void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 426 void HAL_DCMI_VsyncCallback(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 427 void HAL_DCMI_HsyncCallback(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 428 void HAL_DCMI_IRQHandler(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 429 /**
lypinator 0:bb348c97df44 430 * @}
lypinator 0:bb348c97df44 431 */
lypinator 0:bb348c97df44 432
lypinator 0:bb348c97df44 433 /** @addtogroup DCMI_Exported_Functions_Group3 Peripheral Control functions
lypinator 0:bb348c97df44 434 * @{
lypinator 0:bb348c97df44 435 */
lypinator 0:bb348c97df44 436 /* Peripheral Control functions ***********************************************/
lypinator 0:bb348c97df44 437 HAL_StatusTypeDef HAL_DCMI_ConfigCrop(DCMI_HandleTypeDef *hdcmi, uint32_t X0, uint32_t Y0, uint32_t XSize, uint32_t YSize);
lypinator 0:bb348c97df44 438 HAL_StatusTypeDef HAL_DCMI_EnableCrop(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 439 HAL_StatusTypeDef HAL_DCMI_DisableCrop(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 440 /**
lypinator 0:bb348c97df44 441 * @}
lypinator 0:bb348c97df44 442 */
lypinator 0:bb348c97df44 443
lypinator 0:bb348c97df44 444 /** @addtogroup DCMI_Exported_Functions_Group4 Peripheral State functions
lypinator 0:bb348c97df44 445 * @{
lypinator 0:bb348c97df44 446 */
lypinator 0:bb348c97df44 447 /* Peripheral State functions *************************************************/
lypinator 0:bb348c97df44 448 HAL_DCMI_StateTypeDef HAL_DCMI_GetState(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 449 uint32_t HAL_DCMI_GetError(DCMI_HandleTypeDef *hdcmi);
lypinator 0:bb348c97df44 450 /**
lypinator 0:bb348c97df44 451 * @}
lypinator 0:bb348c97df44 452 */
lypinator 0:bb348c97df44 453
lypinator 0:bb348c97df44 454 /**
lypinator 0:bb348c97df44 455 * @}
lypinator 0:bb348c97df44 456 */
lypinator 0:bb348c97df44 457
lypinator 0:bb348c97df44 458 /* Private types -------------------------------------------------------------*/
lypinator 0:bb348c97df44 459 /* Private variables ---------------------------------------------------------*/
lypinator 0:bb348c97df44 460 /* Private constants ---------------------------------------------------------*/
lypinator 0:bb348c97df44 461 /** @defgroup DCMI_Private_Constants DCMI Private Constants
lypinator 0:bb348c97df44 462 * @{
lypinator 0:bb348c97df44 463 */
lypinator 0:bb348c97df44 464 #define DCMI_MIS_INDEX 0x1000U /*!< DCMI MIS register index */
lypinator 0:bb348c97df44 465 #define DCMI_SR_INDEX 0x2000U /*!< DCMI SR register index */
lypinator 0:bb348c97df44 466 /**
lypinator 0:bb348c97df44 467 * @}
lypinator 0:bb348c97df44 468 */
lypinator 0:bb348c97df44 469 /* Private macro -------------------------------------------------------------*/
lypinator 0:bb348c97df44 470 /** @defgroup DCMI_Private_Macros DCMI Private Macros
lypinator 0:bb348c97df44 471 * @{
lypinator 0:bb348c97df44 472 */
lypinator 0:bb348c97df44 473 #define IS_DCMI_CAPTURE_MODE(MODE)(((MODE) == DCMI_MODE_CONTINUOUS) || \
lypinator 0:bb348c97df44 474 ((MODE) == DCMI_MODE_SNAPSHOT))
lypinator 0:bb348c97df44 475
lypinator 0:bb348c97df44 476 #define IS_DCMI_SYNCHRO(MODE)(((MODE) == DCMI_SYNCHRO_HARDWARE) || \
lypinator 0:bb348c97df44 477 ((MODE) == DCMI_SYNCHRO_EMBEDDED))
lypinator 0:bb348c97df44 478
lypinator 0:bb348c97df44 479 #define IS_DCMI_PCKPOLARITY(POLARITY)(((POLARITY) == DCMI_PCKPOLARITY_FALLING) || \
lypinator 0:bb348c97df44 480 ((POLARITY) == DCMI_PCKPOLARITY_RISING))
lypinator 0:bb348c97df44 481
lypinator 0:bb348c97df44 482 #define IS_DCMI_VSPOLARITY(POLARITY)(((POLARITY) == DCMI_VSPOLARITY_LOW) || \
lypinator 0:bb348c97df44 483 ((POLARITY) == DCMI_VSPOLARITY_HIGH))
lypinator 0:bb348c97df44 484
lypinator 0:bb348c97df44 485 #define IS_DCMI_HSPOLARITY(POLARITY)(((POLARITY) == DCMI_HSPOLARITY_LOW) || \
lypinator 0:bb348c97df44 486 ((POLARITY) == DCMI_HSPOLARITY_HIGH))
lypinator 0:bb348c97df44 487
lypinator 0:bb348c97df44 488 #define IS_DCMI_MODE_JPEG(JPEG_MODE)(((JPEG_MODE) == DCMI_JPEG_DISABLE) || \
lypinator 0:bb348c97df44 489 ((JPEG_MODE) == DCMI_JPEG_ENABLE))
lypinator 0:bb348c97df44 490
lypinator 0:bb348c97df44 491 #define IS_DCMI_CAPTURE_RATE(RATE) (((RATE) == DCMI_CR_ALL_FRAME) || \
lypinator 0:bb348c97df44 492 ((RATE) == DCMI_CR_ALTERNATE_2_FRAME) || \
lypinator 0:bb348c97df44 493 ((RATE) == DCMI_CR_ALTERNATE_4_FRAME))
lypinator 0:bb348c97df44 494
lypinator 0:bb348c97df44 495 #define IS_DCMI_EXTENDED_DATA(DATA)(((DATA) == DCMI_EXTEND_DATA_8B) || \
lypinator 0:bb348c97df44 496 ((DATA) == DCMI_EXTEND_DATA_10B) || \
lypinator 0:bb348c97df44 497 ((DATA) == DCMI_EXTEND_DATA_12B) || \
lypinator 0:bb348c97df44 498 ((DATA) == DCMI_EXTEND_DATA_14B))
lypinator 0:bb348c97df44 499
lypinator 0:bb348c97df44 500 #define IS_DCMI_WINDOW_COORDINATE(COORDINATE) ((COORDINATE) <= DCMI_WINDOW_COORDINATE)
lypinator 0:bb348c97df44 501
lypinator 0:bb348c97df44 502 #define IS_DCMI_WINDOW_HEIGHT(HEIGHT) ((HEIGHT) <= DCMI_WINDOW_HEIGHT)
lypinator 0:bb348c97df44 503
lypinator 0:bb348c97df44 504 /**
lypinator 0:bb348c97df44 505 * @}
lypinator 0:bb348c97df44 506 */
lypinator 0:bb348c97df44 507
lypinator 0:bb348c97df44 508 /* Private functions ---------------------------------------------------------*/
lypinator 0:bb348c97df44 509 /** @addtogroup DCMI_Private_Functions DCMI Private Functions
lypinator 0:bb348c97df44 510 * @{
lypinator 0:bb348c97df44 511 */
lypinator 0:bb348c97df44 512
lypinator 0:bb348c97df44 513 /**
lypinator 0:bb348c97df44 514 * @}
lypinator 0:bb348c97df44 515 */
lypinator 0:bb348c97df44 516
lypinator 0:bb348c97df44 517 #endif /* STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\
lypinator 0:bb348c97df44 518 STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\
lypinator 0:bb348c97df44 519 STM32F479xx */
lypinator 0:bb348c97df44 520
lypinator 0:bb348c97df44 521 /**
lypinator 0:bb348c97df44 522 * @}
lypinator 0:bb348c97df44 523 */
lypinator 0:bb348c97df44 524
lypinator 0:bb348c97df44 525 /**
lypinator 0:bb348c97df44 526 * @}
lypinator 0:bb348c97df44 527 */
lypinator 0:bb348c97df44 528
lypinator 0:bb348c97df44 529 #ifdef __cplusplus
lypinator 0:bb348c97df44 530 }
lypinator 0:bb348c97df44 531 #endif
lypinator 0:bb348c97df44 532
lypinator 0:bb348c97df44 533 #endif /* __STM32F4xx_HAL_DCMI_H */
lypinator 0:bb348c97df44 534
lypinator 0:bb348c97df44 535 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/