ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH软件

发布者:琴弦悠扬最新更新时间:2015-09-17 来源: eefocus关键字:ucgui汉字库  flash  stm32 手机看文章 扫描二维码
随时随地手机看文章
最近项目中用到几种字体,stm32的内部flash以经入不敷出。没办法!只好找度娘及求助群里的高手,这里对Eric2013 ,洋洋kan世界等高手表示感谢。学习了他们的一些思想。

下面是找到的相关链接:

http://blog.chinaunix.net/uid-361890-id-2953183.html

http://www.openedv.com/posts/list/9736.htm;jsessionid=6B5FA51FE6BBC280B752D9B63BA57895

 

这里我主要用的是crazytyt文章的方法,在他的基础上进行一定的改进。解决控件用汉字居中等问题。

其实我的方法很简单,增加了每个字的元素一些标量(xSize, ySize, 字节等)就可以了。

因为ucGUI中对文字的高度宽度的取值不光只有取模时用到,在计算居中及文本长度时也同样被用到。这就是为什么,修改GUIPROP_DispChar(c)函数后控件文本中的字感觉变的很长!

 

下面是我的修改方法:

把{ 16, 16, 2, (void GUI_FLASH *)GUI_FontHZ16_Flash_BaseAddr},在它的下面复制94次就可以了。

OK到这里,问题就解决了。哈哈,是不是感觉也太简单了~ 事实确实是这样子。主要是站在巨人的肩膀上进行改进的。

 

还有个人认为ASCII码不算很多,就没有必要放到外部FLASH了。所以我对其保留。

下面是我的文件:

http://pan.baidu.com/share/link?shareid=157310&uk=118334538

效果:

 

补充:

在把自定义字体设定为默认字体时,控件没有对基默认指定。要手动去指定,在程序开始的地方加入如下代码:

1 TEXT_SetDefaultFont(GUI_DEFAULT_FONT); 2 BUTTON_SetDefaultFont(GUI_DEFAULT_FONT); 3EDIT_SetDefaultFont(GUI_DEFAULT_FONT); 4 LISTVIEW_SetDefaultFont(GUI_DEFAULT_FONT); 5FRAMEWIN_SetDefaultFont(GUI_DEFAULT_FONT);

省略了一定控件, 这里根据自己的需要去添加。

下面奉上4个字体文件:

http://pan.baidu.com/share/link?shareid=157719&uk=118334538

样本:

 

 

空的时候写了一个小软件,用来烧写字库到外部FLASH中,如果你也是用的stm32的话就也可以用上,不过要稍做改动。当然是FLASH驱动那部分。改动如下:

改了这三个地方就可以了。

上位机是用C#写的,与下位机的接口是rs232, 采用Modbus协议, 115200波特率。

下面是软件截图,附件中包括源码。

附件如下:

包括上下位机源码。

http://pan.baidu.com/share/link?shareid=157523&uk=118334538

 

 2013.3.12  补充

   用以上的操作方法, 在使用控件时,多多少少,还是会有一些问题。后来仔细的对“洋洋kan世界”的文章进行了研究,用他的方法,可以更好的规避控件中中文的 自动换行,光标停留等问题。MULTIEDIT中的应用,可以说完美的解决。

 总共需要修改GUI.h, GUI_UC_EncodeNone.c, GUIType.h三个文件,和追加一个GUICharPEx.c文件。上文中的四种字库也相应的做了一定的修改。

这些文件都在下面的附件中。 整个的移植过程,可以参考“洋洋kan世界”的文章。这里就不细说了。 部分的改进,在其文章中也有说明。可以用以下附件直接替换GUI源文件对应的文件。

在上文的下载字库工具可能过于繁琐,在后续文章中会进行改进,使用YMODEM高效的文件传输协议传送。

关键字:ucgui汉字库  flash  stm32 引用地址:ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH软件

上一篇:HardFault_Handler问题查找方法
下一篇:使用STM32F4XX自带数学库"arm_math.h"

推荐阅读最新更新时间:2024-03-16 14:32

STM8S_007_片内FLASH和EEPROM编程
Ⅰ、写在前面 我们都知道FLASH和EEPROM这两种存储器,但是大部分人了解的都是专门的FLASH和EEPROM芯片,如:W25Q16和ATAT24C08(外部)储存芯片。   外部存储芯片和本文说的内部FLASH和EEPROM最大的区别就是在于:内部FLASH和EEPROM是不需要SPI、I2C等进行操作,也就是说同等情况下,内部FLASH和EEPROM的读写要快一点。   STM8的FLASH除了储存程序代码之外,就是用于用户编程(存储数据),不像之前的51芯片不能利用内部储存代码的FLASH。   为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1i5uWhJR 作者
[单片机]
stm32 keil配置
出现这几个错误 \output\Buzzer.axf: Error: L6218E: Undefined symbol GPIO_Init (referred from main.o). .\output\Buzzer.axf: Error: L6218E: Undefined symbol GPIO_PinRemapConfig (referred from main.o). .\output\Buzzer.axf: Error: L6218E: Undefined symbol GPIO_SetBits (referred from main.o). .\output\Buzzer.axf: Error: L6218E: Un
[单片机]
<font color='red'>stm32</font> keil配置
第48章 STM32F429的内部Flash和SPI Flash都使用MDK下载
48.1 初学者重要提示 SPI Flash的相关知识点可以看第31章和32章。 操作本章配套例子前务必先将SPI Flash的下载算法放到MDK安装目录。 本章节配套例子实现了将12点阵,16点阵,24点阵和32点阵中文全字库下载到外置SPI Flash。 注意不可以STM32F4的内部Flash和外部SPI Flash同时下载,依次下载即可,详情看此本章48.5和48.6小节即可。 48.2 内部Flash和SPI Flash都使用MDK下载的优势 通过这种方式,可以方便的更新SPI Flash中的数据,特别是全字库,图库,主题等资源文件的下载。 48.3 下载算法存放位置 编译例子:V6-025_SPI Flas
[单片机]
第48章 STM32F429的内部<font color='red'>Flash</font>和SPI <font color='red'>Flash</font>都使用MDK下载
STM32 printf问题
STM32 printf问题 怎么老是出现idenfier FILE is Undefined ,问题出在哪啊?望指教,谢谢! 我程序代码配置如下: #include stm32f10x.h #include stm32_eval.h #include stdio.h #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io
[单片机]
STM32综合网上讲解的几种读保护措施
以下内容是在STM32F103系列单片机实验成功! STM32可以对存储在flash上的程序进行读保护. 启动读保护后,用户就不能再读写程序了. 所以,在烧写程序之前,需要程序调用关闭读保护.关闭读保护后,会自动清空flash上的程序 头文件位于:#include stm32f10x_flash.h 启动保护,用在main()函数初始化时调用: void Set_Protect(void) //启动保护 {   if(FLASH_GetReadOutProtectionStatus() != SET)   {     FLASH_Unlock(); //解锁     FLASH_ReadOutProtection(ENABLE
[单片机]
<font color='red'>STM32</font>综合网上讲解的几种读保护措施
MDK中使用STM32官方固件库
首先STM32官方固件库在Keil中的位置是: .h文件在\Keil\ARM\INC\ST\STM32F10x .c文件在\Keil\ARM\RV31\LIB\ST\STM32F10x 要使用官方固件库,首先要在MDK的工程建立以后将需要用到的相应的.c文件复制到工程下,例如在工程目录下新建一个FWLib的文件夹,然后复制到这里。STM32官方固件库的结构如下: 在stm32f10x_conf.h中类似如下的定义: #define _SPI2 #define _SPI3 在stm32f10x_map.h中 #ifdef _SPI2 #define SPI2
[单片机]
MDK中使用<font color='red'>STM32</font>官方固件库
STM32固件解密步骤
方法1:代码解密 FLASH_OBProgramInitTypeDef OBInit; __HAL_FLASH_PREFETCH_BUFFER_DISABLE(); HAL_FLASHEx_OBGetConfig(&OBInit); if(OBInit.RDPLevel != OB_RDP_LEVEL_0) { OBInit.OptionType = OPTIONBYTE_RDP; OBInit.RDPLevel = OB_RDP_LEVEL_0; (void)HAL_FLASH_Unlock(); (void)HAL_FLASH_OB_Unlock(); (void)HAL_FLASHEx_OBProgram(&OBInit
[单片机]
Hynix:无锡DRAM厂10月恢复,NAND Flash恐短缺
    韩国联合通讯社(Yonhap)、Thomson Reuters报导,全球第二大DRAM大厂SK hynix Inc. 13日宣布,遭祝融侵袭的无锡DRAM厂有望在10月起全面恢复正常运作,而该公司也会增加南韩厂房的DRAM产能来弥补损失的产量。 SK hynix表示,这项产能调整会导致NAND型快闪记忆体(NAND Flash)暂时陷入短缺。 SK Hynix甫于9月8日宣布,失火的无锡DRAM厂有一部份已在9月7日恢复运作。韩国时报(Korea Times)8日报导,SK Hynix无锡厂目前已有部份恢复运作,该厂主要生产智慧型手机、平板电脑专用的行动DRAM,包括中兴通讯(ZTE)、华为(Huawei)等中国大陆智慧机业
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved