有屏幕的地方就有华强买瓜(STM32H743VIT6重制版还有中文字库

在我自制的字库里面,字模是和unicode编码一一对应的.具体来说就是unicode编码表的汉字区域首字符0x4e00放到字库文件第0到31字节处,0x4e01放到第32到63字节处,以此类推可以得到所有字模在文件中的位置.
在初始化的时候先调用FATFS把文件打开,然后根据unicode计算偏移量并移动文件指针到相应位置然后读32字节得到字模.
但是utf8编码毕竟不是unicode编码,不能直接输出到oled屏幕上,需要先转码,虽然windows api提供了编码转换的函数,csharp有System.Text.Encoding类实现这个操作,不过显然对于STM32上面方法都不好使,只能用C语言自行实现.好在这个函数如果会指针和位运算就能写出来,可以参考下面这个图.

至此STM32的中文OLED显示就基本完成了.由于编程时采用HAL库和封装底层,可以较易的移植到STM32F411CEU6和STM32F103C8T6等其他最小系统板上.