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