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