[C] 纯文本查看 复制代码 volatile uint8_t abi = 0;
/*TCON中断*/
void TCON_ISR(void)
{
//这里TCON_INT_REG0需要写0清除中断标志-参考数据手册183页
C_BIT(TCON_Base_Address+0x04,15);//清除TCON0消隐中断
abi = 0;
}
void wait_abi(void)
{
abi = 1;
while(abi == 1)
{
}
}
static ret_t lcd_mem_swap(lcd_t* lcd)
{
lcd_mem_t* mem = (lcd_mem_t*)lcd;
uint8_t* tmp_fb = mem->offline_fb;
wait_abi(); /* 调用系统API加入垂直同步等待来保证画面没有撕裂 */
/*
* 调用系统API把 offline_fb 设置为系统 LCD 使用的显存地址,
* 随后交换 offline_fb 和 online_fb 地址。
*/
f1c100s_debe_set_address(lcd_pdat, mem->offline_fb);
lcd_mem_set_offline_fb(mem, mem->online_fb);
lcd_mem_set_online_fb(mem, tmp_fb);
return RET_OK;
}
lcd_t* platform_create_lcd(wh_t w, wh_t h)
{
/* 根据 LCD 类型调用对应 lcd_mem_t 构造函数创建 lcd_t 对象 */
lcd_t* lcd = lcd_mem_bgr565_create_double_fb(w, h, LcdBuffer1, LcdBuffer2);
lcd->swap = lcd_mem_swap; /* 重载 swap 函数 */
return lcd;
}
没找到LVGL的,这个是AWTK双BUFFER的移植,你可以参考 |