初级会员

- 积分
- 127
- 金钱
- 127
- 注册时间
- 2013-8-3
- 在线时间
- 1 小时
|

楼主 |
发表于 2013-8-26 08:54:34
|
显示全部楼层
回复【3楼】 正点原子 :
------------------------------
回复【3楼】 正点原子 :
---------------------------------
原子哥,是不是那个4096如果改成bread,则可以避免这个现象?
还有一个问题就是,在同样一页的另一个函数u8 update_font(u16 x,u16 y,u8 size,u8 src),在我的理解看来,也是有问题的,
现复制原函数如下:
u8 update_font(u16 x,u16 y,u8 size,u8 src)
{
u8 *gbk16_path;
u8 *gbk12_path;
u8 *unigbk_path;
u8 res;
if(src)//从25qxx更新
{
unigbk_path=(u8*)UNIGBK_25QPATH;
gbk12_path=(u8*)GBK12_25QPATH;
gbk16_path=(u8*)GBK16_25QPATH;
}else//从sd卡更新
{
unigbk_path=(u8*)UNIGBK_SDPATH;
gbk12_path=(u8*)GBK12_SDPATH;
gbk16_path=(u8*)GBK16_SDPATH;
}
res=0XFF;
ftinfo.fontok=0XFF;
SPI_Flash_Write((u8*)&ftinfo,FONTINFOADDR,sizeof(ftinfo)); //清除之前字库成功的标志.防止更新到一半重启,导致的字库部分数据丢失.
SPI_Flash_Read((u8*)&ftinfo,FONTINFOADDR,sizeof(ftinfo)); //重新读出ftinfo结构体数据
LCD_ShowString(x,y,240,320,size,"Updating UNIGBK.BIN");
res=updata_fontx(x+20*size/2,y,size,unigbk_path,0); //更新UNIGBK.BIN
if(res)return 1;
LCD_ShowString(x,y,240,320,size,"Updating GBK12.BIN ");
res=updata_fontx(x+20*size/2,y,size,gbk12_path,1); //更新GBK12.FON
if(res)return 2;
LCD_ShowString(x,y,240,320,size,"Updating GBK16.BIN ");
res=updata_fontx(x+20*size/2,y,size,gbk16_path,2); //更新GBK16.FON
if(res)return 3;
//全部更新好了
ftinfo.fontok=0XAA;
SPI_Flash_Write((u8*)&ftinfo,FONTINFOADDR,sizeof(ftinfo)); //保存字库信息
return 0;//无错误.
}
红色的代码表明是从flash开始更新,我有点不理解,意思是从外部flash中读取数据,然后再刷入外部flash里面,对吗?
如果是这样的,好像这样做,没什么意义。。。。。。只要保留从SD卡刷flash,这一步,不就行了吗??
是不是我哪里对这段程序理解不对啊,望原子哥给点提示。。。。。。。。
|
|