最近学到LCD了,但是在将野火的代码转移到CubeMX时却遇到了大麻烦,屏幕一直是花的,只有一次正常显示一下下,但是过一段时间就又没了,好几天的时间都找不到问题。
说说如何找到问题的
找到问题的方法是我昨天才想到的,前些天就像无头苍蝇一样到处乱窜,花了很多时间,但是没有用对方法,都是无用功。
后来想到,LCD使用SDRAM最为显存,那么只需要读取SDRAM中的数据就知道为什么显示会有问题了。
通过访问SDRAM中的显存的地址,就可以直接得到SDRAM中的数据。
首先测试清屏函数,读取SDRAM中的数据在清屏前和清屏后的数据有什么不同。
1 printf("%s\n","-----D000 after clear-----");
2 uint32_t i;
3 uint8_t ubReaddata_8b=0;
4 for (i=0; i<200; i++) {
5 ubReaddata_8b = *(__IO uint8_t*)(0xD0000000 + i);
6 printf("%x ",ubReaddata_8b);
7 }
8
9 printf("\n%s\n","-----D000 after clear-----");
10
11 printf("%s\n","-----D020 after clear-----");
12
13 for (i=0; i<200; i++) {
14 ubReaddata_8b = *(__IO uint8_t*)(0xD0200000 + i);
15 printf("%x ",ubR