What I can't understand, is why LTDC_IRQHandler never called.
Steps I done:
Code: Select all
(example copy /paste:
// Set LTDC Interrupt to the lowest priority
HAL_NVIC_SetPriority(LTDC_IRQn, 0xF, 0);
HAL_NVIC_EnableIRQ(LTDC_IRQn);
than:
#ifdef __cplusplus
extern "C" {
#endif
void LTDC_ER_IRQHandler(void);
void LTDC_IRQHandler(void);
void HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc);
void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc);
void HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc);
/*#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1)
HAL_StatusTypeDef HAL_LTDC_RegisterCallback(LTDC_HandleTypeDef *hltdc, HAL_LTDC_CallbackIDTypeDef CallbackID,
pLTDC_CallbackTypeDef pCallback);
*/
#ifdef __cplusplus
}
#endif
void LTDC_IRQHandler(void)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_0, GPIO_PIN_SET);
HAL_LTDC_IRQHandler(&LtdcHandle);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_0, GPIO_PIN_RESET);
}
void HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_0, GPIO_PIN_SET);
ReloadFlag = 1;
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_0, GPIO_PIN_RESET);
}
just importing as "extern" IRQHandler. But with LTDC I'm running out of ideas, testing with a scope GPIO I see that LTDC_IRQHandler never triggered, same time I know that two bits IE in interrupt register of the LTDC are set and if I push a button (example : LTDC_ColorKeying) everything just hangs up.
I also try to change:
#define USE_HAL_LTDC_REGISTER_CALLBACKS 1U /* LTDC register callback
0 to 1 and back, compiled code size is changed but no defference with LTDC_IRQHandler
.word LTDC_IRQHandler /* LTDC */
is in startup_stm32h743xx.s, so I don't know if it referenced somewhere - directory is "templates"