C
Qt Quick Ultralite imagedecoder Example
/**
******************************************************************************
* @file stm32u5xx_hal_msp.c
* @brief This file provides code for the MSP Initialization
* and de-Initialization codes.
******************************************************************************
* @attention
*
* Copyright (c) 2023 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.
*
******************************************************************************
*/
#include "stm32u5xx_hal.h"
#include "stm32u5xx_it.h"
#ifdef __cplusplus
extern "C" {
#endif
extern DMA_HandleTypeDef handle_GPDMA1_Channel1;
extern DMA_HandleTypeDef handle_GPDMA1_Channel0;
extern JPEG_HandleTypeDef JPEG_Handle;
extern void Error_Handler();
void HAL_JPEG_MspInit(JPEG_HandleTypeDef *hjpeg)
{
if (hjpeg->Instance==JPEG) {
/* Peripheral clock enable */
__HAL_RCC_JPEG_CLK_ENABLE();
#ifdef USE_DMA_BASED_JPEG_DECODING
/* JPEG DMA Init */
/* GPDMA1_REQUEST_JPEG_TX Init */
handle_GPDMA1_Channel1.Instance = GPDMA1_Channel1;
handle_GPDMA1_Channel1.Init.Request = GPDMA1_REQUEST_JPEG_TX;
handle_GPDMA1_Channel1.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST;
handle_GPDMA1_Channel1.Init.Direction = DMA_PERIPH_TO_MEMORY;
handle_GPDMA1_Channel1.Init.SrcInc = DMA_SINC_FIXED;
handle_GPDMA1_Channel1.Init.DestInc = DMA_DINC_INCREMENTED;
handle_GPDMA1_Channel1.Init.SrcDataWidth = DMA_SRC_DATAWIDTH_WORD;
handle_GPDMA1_Channel1.Init.DestDataWidth = DMA_DEST_DATAWIDTH_WORD;
handle_GPDMA1_Channel1.Init.Priority = DMA_LOW_PRIORITY_HIGH_WEIGHT;
handle_GPDMA1_Channel1.Init.SrcBurstLength = 8;
handle_GPDMA1_Channel1.Init.DestBurstLength = 8;
handle_GPDMA1_Channel1.Init.TransferAllocatedPort = DMA_SRC_ALLOCATED_PORT0|DMA_DEST_ALLOCATED_PORT1;
handle_GPDMA1_Channel1.Init.TransferEventMode = DMA_TCEM_BLOCK_TRANSFER;
handle_GPDMA1_Channel1.Init.Mode = DMA_NORMAL;
if (HAL_DMA_Init(&handle_GPDMA1_Channel1) != HAL_OK) {
Error_Handler();
}
__HAL_LINKDMA(hjpeg, hdmaout, handle_GPDMA1_Channel1);
if (HAL_DMA_ConfigChannelAttributes(&handle_GPDMA1_Channel1, DMA_CHANNEL_NPRIV) != HAL_OK) {
Error_Handler();
}
/* GPDMA1_REQUEST_JPEG_RX Init */
handle_GPDMA1_Channel0.Instance = GPDMA1_Channel0;
handle_GPDMA1_Channel0.Init.Request = GPDMA1_REQUEST_JPEG_RX;
handle_GPDMA1_Channel0.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST;
handle_GPDMA1_Channel0.Init.Direction = DMA_MEMORY_TO_PERIPH;
handle_GPDMA1_Channel0.Init.SrcInc = DMA_SINC_INCREMENTED;
handle_GPDMA1_Channel0.Init.DestInc = DMA_DINC_FIXED;
handle_GPDMA1_Channel0.Init.SrcDataWidth = DMA_SRC_DATAWIDTH_WORD;
handle_GPDMA1_Channel0.Init.DestDataWidth = DMA_DEST_DATAWIDTH_WORD;
handle_GPDMA1_Channel0.Init.Priority = DMA_LOW_PRIORITY_HIGH_WEIGHT;
handle_GPDMA1_Channel0.Init.SrcBurstLength = 8;
handle_GPDMA1_Channel0.Init.DestBurstLength = 8;
handle_GPDMA1_Channel0.Init.TransferAllocatedPort = DMA_SRC_ALLOCATED_PORT0|DMA_DEST_ALLOCATED_PORT1;
handle_GPDMA1_Channel0.Init.TransferEventMode = DMA_TCEM_BLOCK_TRANSFER;
handle_GPDMA1_Channel0.Init.Mode = DMA_NORMAL;
if (HAL_DMA_Init(&handle_GPDMA1_Channel0) != HAL_OK) {
Error_Handler();
}
__HAL_LINKDMA(hjpeg, hdmain, handle_GPDMA1_Channel0);
if (HAL_DMA_ConfigChannelAttributes(&handle_GPDMA1_Channel0, DMA_CHANNEL_NPRIV) != HAL_OK) {
Error_Handler();
}
#endif // USE_DMA_BASED_JPEG_DECODING
/* JPEG interrupt Init */
HAL_NVIC_SetPriority(JPEG_IRQn, 8, 0);
HAL_NVIC_EnableIRQ(JPEG_IRQn);
}
}
void HAL_JPEG_MspDeInit(JPEG_HandleTypeDef *hjpeg)
{
if(hjpeg->Instance==JPEG)
{
/* Peripheral clock disable */
__HAL_RCC_JPEG_CLK_DISABLE();
#ifdef USE_DMA_BASED_JPEG_DECODING
/* JPEG DMA DeInit */
HAL_DMA_DeInit(hjpeg->hdmaout);
HAL_DMA_DeInit(hjpeg->hdmain);
#endif // USE_DMA_BASED_JPEG_DECODING
/* JPEG interrupt DeInit */
HAL_NVIC_DisableIRQ(JPEG_IRQn);
}
}
void JPEG_IRQHandler(void)
{
HAL_JPEG_IRQHandler(&JPEG_Handle);
}
#ifdef USE_DMA_BASED_JPEG_DECODING
void GPDMA1_Channel0_IRQHandler(void)
{
HAL_DMA_IRQHandler(&handle_GPDMA1_Channel0);
}
void GPDMA1_Channel1_IRQHandler(void)
{
HAL_DMA_IRQHandler(&handle_GPDMA1_Channel1);
}
#endif // USE_DMA_BASED_JPEG_DECODING
#ifdef __cplusplus
} // extern "C"
#endif