C
Qt Quick Ultralite imagedecoder Example
/** ****************************************************************************** * @file JPEG/JPEG_DecodingUsingFs_DMA/Src/stm32f7xx_hal_msp.c * @author MCD Application Team * @brief HAL MSP module. ****************************************************************************** * @attention * * Copyright (c) 2016 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ /** @addtogroup STM32F7xx_HAL_Examples * @{ */ /** @addtogroup JPEG_DecodingUsingFs_DMA * @{ */ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** @defgroup HAL_MSP_Private_Functions * @{ */ /** * @brief JPEG MSP Initialization * This function configures the hardware resources used in this example: * - Peripheral's clock enable * - NVIC configuration for JPEG interrupt request enable * - DMA configuration for transmission request by peripheral * - NVIC configuration for DMA interrupt request enable * @param hjpeg: JPEG handle pointer * @retval None */ #include "stm32f7xx_hal.h" extern JPEG_HandleTypeDef JPEG_Handle; #ifdef __cplusplus extern "C" { #endif void HAL_JPEG_MspInit(JPEG_HandleTypeDef *hjpeg) { #ifdef USE_DMA_BASED_JPEG_DECODING static DMA_HandleTypeDef hdmaIn; static DMA_HandleTypeDef hdmaOut; #endif /* Enable JPEG clock */ __HAL_RCC_JPEG_CLK_ENABLE(); #ifdef USE_DMA_BASED_JPEG_DECODING /* Enable DMA clock */ __HAL_RCC_DMA2_CLK_ENABLE(); #endif HAL_NVIC_SetPriority(JPEG_IRQn, 0x06, 0x0F); HAL_NVIC_EnableIRQ(JPEG_IRQn); #ifdef USE_DMA_BASED_JPEG_DECODING /* Input DMA */ /* Set the parameters to be configured */ hdmaIn.Init.Channel = DMA_CHANNEL_9; hdmaIn.Init.Direction = DMA_MEMORY_TO_PERIPH; hdmaIn.Init.PeriphInc = DMA_PINC_DISABLE; hdmaIn.Init.MemInc = DMA_MINC_ENABLE; hdmaIn.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; hdmaIn.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; hdmaIn.Init.Mode = DMA_NORMAL; hdmaIn.Init.Priority = DMA_PRIORITY_HIGH; hdmaIn.Init.FIFOMode = DMA_FIFOMODE_ENABLE; hdmaIn.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; hdmaIn.Init.MemBurst = DMA_MBURST_INC4; hdmaIn.Init.PeriphBurst = DMA_PBURST_INC4; hdmaIn.Instance = DMA2_Stream3; /* Associate the DMA handle */ __HAL_LINKDMA(hjpeg, hdmain, hdmaIn); HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 0x07, 0x0F); HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); /* DeInitialize the DMA Stream */ HAL_DMA_DeInit(&hdmaIn); /* Initialize the DMA stream */ HAL_DMA_Init(&hdmaIn); /* Output DMA */ /* Set the parameters to be configured */ hdmaOut.Init.Channel = DMA_CHANNEL_9; hdmaOut.Init.Direction = DMA_PERIPH_TO_MEMORY; hdmaOut.Init.PeriphInc = DMA_PINC_DISABLE; hdmaOut.Init.MemInc = DMA_MINC_ENABLE; hdmaOut.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; hdmaOut.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; hdmaOut.Init.Mode = DMA_NORMAL; hdmaOut.Init.Priority = DMA_PRIORITY_VERY_HIGH; hdmaOut.Init.FIFOMode = DMA_FIFOMODE_ENABLE; hdmaOut.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; hdmaOut.Init.MemBurst = DMA_MBURST_INC4; hdmaOut.Init.PeriphBurst = DMA_PBURST_INC4; hdmaOut.Instance = DMA2_Stream4; /* DeInitialize the DMA Stream */ HAL_DMA_DeInit(&hdmaOut); /* Initialize the DMA stream */ HAL_DMA_Init(&hdmaOut); /* Associate the DMA handle */ __HAL_LINKDMA(hjpeg, hdmaout, hdmaOut); HAL_NVIC_SetPriority(DMA2_Stream4_IRQn, 0x07, 0x0F); HAL_NVIC_EnableIRQ(DMA2_Stream4_IRQn); #endif } /** * @} */ /** * @} */ /** * @} */ /******************************************************************************/ /* STM32F7xx Peripherals Interrupt Handlers */ /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ /* available peripheral interrupt handler's name please refer to the startup */ /* file (startup_stm32f7xx.s). */ /******************************************************************************/ void JPEG_IRQHandler(void) { HAL_JPEG_IRQHandler(&JPEG_Handle); } #ifdef USE_DMA_BASED_JPEG_DECODING void DMA2_Stream3_IRQHandler(void) { HAL_DMA_IRQHandler(JPEG_Handle.hdmain); } void DMA2_Stream4_IRQHandler(void) { HAL_DMA_IRQHandler(JPEG_Handle.hdmaout); } #endif #ifdef __cplusplus } // extern "C" #endif