关于stm32h7使用HAL库的行中断疑问,今天移植lvgl时卡死在lv_timer_handle(),排查后发现ltdc竟然无法进入行中断,原来代码是这样的,
在bsp里我对
[C] 纯文本查看 复制代码
void bsp_init(void)
{
mpu_config();
SCB_EnableICache();
SCB_EnableDCache();
HAL_Init();
SystemClock_Config();
PeriphCommonClock_Config();
// SystemCoreClockUpdate();
HAL_Delay(1);
bsp_led_init(LED1_PORT, LED1_PIN);
ibsp_debug_uart_dma_init()
bsp_sdram_init(&sdram_handle,&sdram_cmd);
bsp_rgb_lcd_init();
bsp_ltdc_nvic_config();
bsp_lcd_bl_init();
#if LTDC_TEST == 1
bsp_rgb_lcd_test();
#endif
}
static void bsp_ltdc_nvic_config(void)
{
HAL_NVIC_SetPriority(LTDC_IRQn,2,0);
HAL_NVIC_EnableIRQ(LTDC_IRQn);
HAL_LTDC_ProgramLineEvent(<dc_handle, RGB_LCD_HIGH - 1);
}
static void bsp_dma2d_naiv_config(void)
{
HAL_NVIC_SetPriority(DMA2D_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(DMA2D_IRQn);
}
void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc)
{
fps++;
ltdc_lineinterrupt_callback();
HAL_LTDC_ProgramLineEvent(<dc_handle, 480 - 1);
}
void LTDC_IRQHandler(void)
{
HAL_LTDC_IRQHandler(<dc_handle);
}
这样子无法进入行中断,但是不用hal的ltdc的irqn直接如下,配置寄存器又可以了,请问这是啥问题,是配置的不对吗?
[C] 纯文本查看 复制代码 extern LTDC_HandleTypeDef ltdc_handle;
extern void ltdc_lineinterrupt_callback(void);
static volatile uint16_t fps = 0;
//void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc)
//{
// fps++;
// ltdc_lineinterrupt_callback();
// HAL_LTDC_ProgramLineEvent(<dc_handle, 480 - 1);
//}
void LTDC_IRQHandler(void)
{
LTDC->ICR = (uint32_t)LTDC_IER_LIE;
//LOG_I("Achieve the lin interrupt!");
ltdc_lineinterrupt_callback();
//HAL_LTDC_IRQHandler(<dc_handle);
}
|