这周的事奇葩连连看啊,至今我还无法判断到底问题出在哪。看看各位大侠有没有遇到这种事情的。
起因:原先在战舰上写好的工程,新作了板然后在移植过程中出现的各种奇葩事。主要移植的部分是IO和外设、LCD(R61529驱动),硬件部分已经实现测试完成,包括SPI驱动W25Q64、FSMC驱动SRAM和LCD,当移植到整个工程里时问题出现了。
过程:
奇葩事1:在移植LCD初始化程序是遇到一个地方不写一句“i++;”(位置:初始化完所有的LCD寄存器),LCD初始化后就什么也不显示,不要说这里需要是什么延时之类的,没用试过了,除了“i++;”加多大的延时它都不好使。死机位置同下。
奇葩事2:这也是迄今我仍未解决的问题。在工程中出现使用结构体的地方,只要编译进去,程序就会死在LCD初始化里面。位置:
配置第一个寄存器的的写数据时死机。。。
[mw_shl_code=c,true] WriteComm(0xB0);
printf("LCD1\r\n");
WriteData(0x04);
printf("LCD2\r\n");[/mw_shl_code]
这个问题非常严重,而且非常非常奇葩!!!因为同一个结构体,刚开始移植死,调着调着突然好了,其实代码一点也没变。。。然后下面在遇到使用这个结构体时,又开始死机,位置同上。
第一次死的起因(后来又好了):
[mw_shl_code=c,true]LCD_DrawRectangle(bar.sx, bar.sy, bar.ex, bar.ey);//画矩形[/mw_shl_code]
第二次死的起因(至今未好):
[mw_shl_code=c,true]// bar.val_old = bar.val;
// bar.val = ((u8)bar.val-1)%100;[/mw_shl_code]
这个工程实在战舰上写好的,硬件部分已经全部单独调试通过了,所以不应该是硬件问题。LCD也是裸跑加实时操作系统跑过的,况且在战舰上搭线驱动新屏也是状况相同的。试过了我能想到的所有办法去调试了,重建工程、换屏、用战舰测试、keil换版本、在别的电脑编译,都无法解决。不过矛盾还是比较明显的,1、问题始终围绕着LCD;2、keil时好时坏(也可能是液晶时好时坏)。
硬件:
单片机:STM32F103ZE
液晶:信利IPS3.5寸,320X480,驱动R61529
电脑:
windows8,64位
keil5.11a,后又卸掉改装keil4.7
|