系统中使用过多的汉字会出现芯片容量不够用的问题,可将数据存储在外部FLASH中,在需要使用时进行调用即可。本文是通过STM32串口1实现对W25X16的汉字字库存储。软件层面,配置串口1和SPI1即可,程序初始化后,在对W25X16进行写之前,必须先擦除,可以一个字节、一页、一扇区、一块以及整片擦除。写字库前,我们用整片擦除方式,如下:

整个程序中,关键在于串口接收中断函数的编写,如下:

u32 WriteAddress=0;

void USART1_IRQHandler(void)

{

u8 Res;

if(USART_GeTITStatus(USART1,USART_IT_RXNE)!=RESET)

{

USART_ClearITPendingBit(USART1,USART_IT_RXNE);

Res=USART_ReceiveData(USART1);

SPI_Flash_Write_NoCheck(&Res,WriteAddress,1);

WriteAddress++;

}

}

也就是从地址0开始,一个字节一个字节进行写入。

代码为最简单的通信代码,不过多说,然后打开串口助手,进行配置,勾选启用文件数据源,选择下载或者自己做好的字库文件;勾选按十六进制发送,在芯片完全擦除后再进行发送:

经过几十秒的等待,字库会发送完成,通过看发送的字节数与字库的字节数对比,即可知道是否发送完毕。(上图中发送字节数不是字库字节数)前面的文章有写过汉字点阵获取的方法,此处不再赘述。如此,即可通过SPI访问外部FLASH来调用汉字,并将其显示在显示屏上。同样对于asiic码可以将其写入某个块中,然后通过地址的偏移来计算对应的字符。

对于图片的存储也是相同原理,在之前实现汉字显示的基础上,笔者测试了图片的显示,而且获得正确的显示。笔者使用的显示屏为TFT1.44的,为128*128,占用32768字节,两张图片正好占用65536字节,也就是64Kb,而W25X16一个块是64Kb,进行块擦除后,每个块可以载入两张图片,非常完美。基本程序相同,只是此时因为字库的写入,不使用片擦除指令,而使用块擦除实现对未使用块区的擦除:

计算了下,字库占用了3个块多点,因此彻底避开此区+在:

可以打开看下字库文件,然后对获取的图片文件进行编辑即可。下面贴出自己编写的图片显示的代码:

void ShowImage_W25X16(u32 WriteAddr)

{

int i;

u32 j;

unsigned char picH,picL;

u8 datatemp[2];

Lcd_Clear(WHITE);

Lcd_SetRegion(0,0,127,127);

for(j=0;j《1024;j++)

for(i=0;i《16;i++)

{

SPI_Flash_Read(datatemp,WriteAddr,2);

picL=datatemp[0];

picH=datatemp[1];

WriteAddr=WriteAddr+2;

LCD_WriteData_16Bit(picH《《8|picL);

}

}

stm32怎么加载字库_STM32如何实现W25X16的汉字字库存储相关推荐

  1. stm32分散加载学习_倡导联合学习的天才使隐私分散化

    stm32分散加载学习 Chances are, your phone is within five feet of you right now. 您的手机现在离您的五英尺以内. In fact, a ...

  2. stm32怎么加载字库_收藏 | STM32单片机超详细学习汇总资料(二)

    点击"蓝字"关注我们 3110月 收藏 | STM32单片机超详细学习汇总资料(一) ◆41.DMA仲裁器分为软件和硬件两种.软件部分分为4个等级,分别是很高优先级.高优先级.中等 ...

  3. 【IoT】STM32 分散加载文件 .sct 解析

    1.STM32 启动文件与 .sct 文件分析 1) 定义STACK段,{NOINIT,读写}:分配一段内存大小为0.5K; 2) 定义HEAP段, {NOINIT,读写}:分配一段内存大小为1K; ...

  4. STM32分散加载文件

    通过使用分散加载机制,可以为链接器指定映像的内存映射.分散加载为您提供了对映像组建分组和位置的全面控制.分散加载可以用于简单映像,但它通常仅用于具有复杂内存映射的的映像,即多个区在加载和执行时分散在内 ...

  5. 2020.4.23工作记录————Regsvr32加载控件失败:“请确保该二进制存储在指定路径中。。。”

    工作记录----Regsvr32加载控件失败: 之前的OCX控件今天我因为工作需要又重新写了个新的,跟之前不同的是这次的控件链接了第三方的动态库,但是在OCX控件生成完成后我使用管理员身份运行cmd对 ...

  6. python字库转文字图片,Python输出汉字字库及将文字转换为图片

    用python输出汉字字库 问题1:假设我们知道汉字编码范围是0x4E00到0x9FA5,怎么从十六进制的编码转成人类可读的字呢? 问题2:怎么把unicode编码的字写入文件呢,如果直接用open( ...

  7. stm32怎么加载字库_如何用STM32的片内Flash存储中文字库

    原标题:如何用STM32的片内Flash存储中文字库 在 中,成本往往是敏感的,如果你的Flash足够大,就可以省去片外Flash,我用结构体实现了该功能,并分享给广大网友,最后附有下载链接. 在fo ...

  8. STM32之MDK分析,分散加载

    STM32分散加载 我们知道MDK的分散加载主要是通过.sct文件实现的,链接器根据.sct文件的配置分配各个节区地址,生成分散加载代码,因此我们通过修改该文件可以定制具体节区的存储位置. 如何打开. ...

  9. 【C语言常识】Keil MDK的分散加载文件.sct

    https://blog.csdn.net/wuhenyouyuyouyu/article/details/71171546?ops_request_misc=%257B%2522request%25 ...

最新文章

  1. Notepad++使用技法
  2. 利用System.Net.Mail 的SmtpClient发送邮件
  3. NOSQL 之 cassadra 安装与集群配置
  4. 中国移动将向广大开发者开放了SDK/API等开发工具
  5. Android view转bitmap,byte[]转Bitmap
  6. 学习记录 php,PHP进阶篇学习专用记录
  7. flock lock ex php,php – flock有可能用LOCK_EX返回false吗?
  8. [Chatter] 看小说「数字风暴」有感
  9. 移动端页面滚动穿透问题解决方案
  10. Codeforces 1114C(数论+唯一分解)
  11. VS2017 无法使用XXX附加到应用程序
  12. JS动态呈现还可以输入字数
  13. 学习笔记(4):思科CCNA模拟器Packet Tracer使用入门-路由器的使用(2811、2911)
  14. Recoil的简单实践和思考
  15. BOMAPI和DOMAPI
  16. 通过PC控制、操作andriod 手机-androidscreencast
  17. 运营管理体系有何价值?
  18. 设置 app 不能在模拟器上运行
  19. PE中Ghost 使用详解
  20. 光伏多峰最大功率点跟踪MPPT MATLAB/Simulink仿真模型

热门文章

  1. android通讯录首字母分类,通讯录获取首字母并以首字母归类返回
  2. git 回退的三种方式
  3. 非常好看notepad++主题和字体
  4. 用canvas实现刮刮卡特效
  5. Arcgis Engine + GeoserverRestAPI实现高程点到高程热力图服务的自动处理
  6. 【论文笔记】Retro-Reader:基于回溯式阅读器的机器阅读理解模型
  7. Python Flask简介请求勾子
  8. ubuntu14下安裝及搜狗拼音输入法打不出汉字的解决方法
  9. C语言实现二叉树排序
  10. 倾斜摄影在道路测绘设计中的应用