|
楼主 |
发表于 2018-3-8 21:05:09
|
显示全部楼层
while (1) {
vTaskDelay(1000);
// GUI_DispStringAt("Hello, World!", 200, 200);
lcdisplay_red();
LTDC_LayerAddress(LTDC_Layer1, SDRAM_BANK1_ADDR + AT800480_WIDTH * AT800480_HEIGHT * 0);
LTDC_LayerPosition(LTDC_Layer1, 0, 0);
LTDC_ReloadConfig(LTDC_IMReload);
}
以上是LCD任务的代码:
GUI_DispStringAt("Hello, World!", 200, 200); ===> ucgui往SDRAM写入字符串
lcdisplay_red(); ===> 往SDRAM写入半屏红色
两个写入函数任选其一,LCD显示就会跳动;
如果没有这两个写入函数的话,显示正常。
我猜想是,LTDC周期性的通过DMA从SDRAM读取数据后显示,一旦有写入动作而没有互斥处理的话,势必会出现时序上的冲突。
不知道这样分析是否正确,还请大家帮忙,谢谢了! |
|