//code 字符指针开始
//从字库中查找出字模
//code 字符串的开始地址,GBK码
//mat 数据存放地址 size*2 bytes大小
void Get_HzMat(u8 *code,u8 *mat,u8 size)
{
u8 qh,ql;
u8 i;
u32 foffset;
qh=*code;
ql=*(++code);
if(qh<0x81||ql<0x40||ql==0xff||qh==0xff)//非常用汉字,汉字是从0x81区开始的
{
for(i=0;i<(size*2);i++)*mat++=0x00;//填充满格,“*”是指针运算符,*mat是取指针变量mat的值,
return; //结束访问
}
if(ql<0x7f)ql-=0x40;//注意!
else ql-=0x41;
qh-=0x81;
foffset=((u32)190*qh+ql)*(size*2);//得到字库中的字节偏移量
if(size==16)SPI_Flash_Read(mat,foffset+ftinfo.f16addr,32);//字体是16
else SPI_Flash_Read(mat,foffset+ftinfo.f12addr,24); //字体是12
}
问题:
1,qh=*code;代表什么意义?
2,ql=*(++code);代表什么意义?
3,ql-=0x40,是得出位码的起始号?
4,qh-=0x81;得出字符所在哪个区?
5,SPI_Flash_Read(mat,foffset+ftinfo.f16addr,32);形参32是字节数?
|