初级会员

- 积分
- 114
- 金钱
- 114
- 注册时间
- 2017-9-30
- 在线时间
- 33 小时
|
20金钱
本帖最后由 573509357 于 2023-4-15 09:20 编辑
问题如下:用STM32F407ZET6直接驱动SSD1963内部LCD GRMA后,屏幕显示乱码。参考例程是正点原子STM32F407的图片显示里程,我用LMG2LCD这个软件生成BIN文件,存到内存卡。程序读取内存卡的BIN文件,直接写入到SSD1963内部LCD GRMA,但是屏幕显示乱码?用的是横屏模式。
显示部分如下:
buf=mymalloc(SRAMIN,bufcom); //为带路径的文件名分配内存
f_mount(fs[0],"0:",1); //挂载SD卡
res = f_open(&fsrc, "0:背景.bin", FA_OPEN_EXISTING | FA_READ);//打开外部文件
printf("测试点1=%u\r\n",res); //
if(res==FR_OK)//打开成功
{
LCD_SetCursor(0,0); //光标位置
LCD_Set_Window(0,0,800,480); //工作窗设定
LCD_WriteRAM_Prepare(); //开始写入GRAM
// LCD_WR_REG(0x2c);
while(1){
res = f_read(&fsrc,buf, bufcom, &br);//读外部文件
printf(" 测试点2\r\n"); //打印LCD ID
if (res || br == 0) break; // error or eof//错误或文件结束跳出
for(i=0;i<bufcom;i=i+2)
{
temp=(uint16_t)(( buf<<8)+buf[i+1]);
LCD_WriteRAM(LCD_BGR2RGB(temp)); //写16位数据
// LCD_WR_DATA(temp); //写16位数据
// delay_ms(1);
}
// for(i=0;i<bufcom;i++)
// {
// printf("%c",buf); //打印LCD ID
// }
}
printf(" 测试点3\r\n"); //打印LCD ID
}
myfree(SRAMIN,buf); //释放内存
LCD_Set_Window(0,0,800,480);//工作窗设定
f_close(&fsrc); //关闭文件
生成BIN文件按照如下规则:

完整的资料我上传包里了
|
最佳答案
查看完整内容[请看2#楼]
这个问题找到了,内存块数组设置太大,设置的为800*480,为360K远远大于407的内存100k,读取BIN文件出错,导致后面的乱码。
|