系统中使用过多的汉字会出现芯片容量不够用的问题,可将数据存储在外部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开始,一个字节一个字节进行写入。
代码为最简单的通信代码,不过多说,然后打开串口助手,进行配置,勾选启用文件数据源,选择下载或者自己做好的字库文件;勾选按十六进制发送,在芯片完全擦除后再进行发送: