emWin使用SPI外挂Flash显示xbf字库
最近在学习emWin,在走到显示汉字时,发现想要使用字库要么使用UCODS字库,和LCD屏自带函数原来类似的显示方式自己重建字库类型。但是UCODS字库我目前真是没有找到可以自己做的,连字库也要去下载,很不方便。使用官方推荐的软件生成xbf文件,可以自己建字库了,但是能找到的教程基本是SD卡的,真是。。。心累。时常SPI外挂flash使用习惯了,想找找这方面的内容,但是这方面的内容要么太少,要么写的不清楚。所以最后就决定自己研究研究,记录下调试的过程。
-
建立xbf字库
这个使用emWin自带的FontCvtST.exe软件即可生成,不多说 -
把这个文件烧录进外挂的Flash里
这个文件不需要转成其他格式,我是通过串口连接STM32单片机串口直接烧录进去的 -
修改添加程序,这部分可以多比对参考一下,程序很少,特别好移植
static GUI_FONT xbfFont; /* GUI_FONT structure in RAM */ static GUI_XBF_DATA XBF_Data; /* GUI_XBF_DATA structure in RAM */ //这个是使用SPI读取字库的信息,第一个是偏移地址,第二个是读取长度,最后一个是存储的buff static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer) { SPI_Flash_Read(Off, NumBytes, pBuffer); return (0); } //建立这个字体 void CreateXBF_Font(void) { GUI_XBF_CreateFont(&xbfFont, /* Pointer to GUI_FONT structure */ &XBF_Data, /* Pointer to GUI_XBF_DATA structure */ GUI_XBF_TYPE_PROP, /* Font type to be created */ _cbGetData, /* Pointer to callback function */ NULL); /* Pointer to be passed to callback */ }
-
使用前先初始化,设置字体
CreateXBF_Font(); //创建XBF字体 GUI_UC_SetEncodeUTF8(); //这个必须要有 //这个xbfFont是前面定义好的 GUI_SetFont(&xbfFont)
-
测试显示了,使用基本的显示字体即可
GUI_DispStringAt("123456ABCDEF测试", 10, 10);
来源:https://blog.csdn.net/weixin_42831633/article/details/100524863