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