OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5584|回复: 2

请高人讲解一下:Get_HzMat(u8 *code,u8 *mat,u8 size)函数

[复制链接]

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-1-26 16:28:14 | 显示全部楼层 |阅读模式

//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是字节数?






手艺人要内外兼修。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-10-30
在线时间
0 小时
发表于 2014-1-26 17:42:51 | 显示全部楼层
回复【楼主位】wangyan915205:
---------------------------------
1,qh=*code;代表什么意义?
*code这是一个指针,把*code指向的值赋给qh
 2,ql=*(++code);代表什么意义?
如上基本一样,只是把*code+1后赋值给ql
 3,ql-=0x40,是得出位码的起始号?
 4,qh-=0x81;得出字符所在哪个区?
 5,SPI_Flash_Read(mat,foffset+ftinfo.f16addr,32);形参32是字节数?
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
 楼主| 发表于 2014-1-26 18:37:21 | 显示全部楼层
谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 05:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表