
建议论坛支持一下markdown。$ V% [$ M& J* o 后面STM32创客赛,我会放出2-3帧的人脸检测,非源码,比赛完了再放!!! # LVGL SD卡字库显示中文) r, ?4 b9 B+ Q* [- i; ? ## Step1---字库文件准备% W2 i! n0 q# a( d * lvglFontTool v0.3 由阿里大佬开发,请自行搜索下载 * 不赘述如何使用该工具,请将生成的bin文件和C代码分别放入SD卡和工程" S I6 D; y7 v( q! Z ## CubeMX生成工程 * 工程包含LCD驱动、SD卡驱动和其它需要的驱动 * 修改lvglFontTool的代码,如下:1 T! N, |. D4 I1 n --- static uint8_t *__user_font_getdata(int offset, int size){' }- r$ q( g( V //如字模保存在SPI FLASH, SPIFLASH_Read(__g_font_buf,offset,size);6 r: j3 f! \/ m9 ? //如字模已加载到SDRAM,直接返回偏移地址即可如:return (uint8_t*)(sdram_fontddr+offset);5 Z# |+ c. R' a( \5 g uint32_t br;$ A- x, Q. T4 p/ B3 J if( f_open(&SDFile, (const TCHAR*)"0:/system/font/lv_font_msyahei_20_AA4_GB2312.bin", FA_READ) != FR_OK ) {* n$ j4 F$ b/ i debug_print("lv_font_msyahei_20_AA4_GB2312.bin open failed\r\n"); } else { if( f_lseek(&SDFile, (FSIZE_t)offset) != FR_OK )9 z3 @) c. G" k/ `: t {" R7 i) J' C1 P+ j3 J! W$ I+ d debug_print("lv_font_msyahei_20_AA4_GB2312.bin lseek failed\r\n"); } if( f_read(&SDFile, __g_font_buf, (UINT)size, (UINT*)&br) != FR_OK ) _1 o y: L5 K* i( E; f3 _" n {9 G t% S/ M9 i7 H debug_print("lv_font_msyahei_20_AA4_GB2312.bin lseek failed\r\n");. P' f* P/ y b% i4 E4 D: n) ] }; `- d. t% T8 s2 U& v f_close(&SDFile); } return __g_font_buf; }* 修改 lv_conf.h #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_msyahei_20_AA1_GB2312) \5 l3 J7 ?8 d% n LV_FONT_DECLARE(lv_font_msyahei_14_AA4_GB2312) \ ## 使用字库显示 * 7.0之后的lvgl style修改了,不能像以前那样修改字库,特意分享这个,花了点时间。例子如下:5 L# _) H6 @! d/ z: ^6 _ --- char cn_str[] = "STM32中文论坛 \uF004 LVGL"; 0 {: g7 C7 O4 P9 X static lv_style_t style1;* r% S; E, m& _1 _! F4 q! E lv_style_init(&style1); lv_style_set_text_font(&style, LV_STATE_DEFAULT, &lv_font_msyahei_20_AA1_GB2312);! C8 Y+ x9 H+ \) j lv_obj_t * label = lv_label_create(lv_scr_act(), NULL); lv_obj_add_style(label, LV_LABEL_PART_MAIN, &style2); lv_label_set_text(label, cn_str); lv_obj_set_x(label, 0); lv_obj_set_y(label, 0); J- k8 _. I0 n* t * 显示结果: ( O+ v1 {; M7 K! q, u, K* ` <img src="./img1.jpg" width = "300" height = "200" alt="图片名称" align=center /> <img src="./img2.jpg" width = "300" height = "200" alt="图片名称" align=center />' H' ^$ |2 a5 z- z ![]() ![]() , z# q+ {, z8 [8 R: y ### 刷新速度和下一步优化: T" C) g+ y( X( e * 本人测试的平台Nucleo L4R5,三秒刷出来,取决于SD卡速度。 * 下一步加入使用QSPI falsh存储中文字库,还是bin文件,测试所用的bin文件约为2M。% y3 `0 s1 i( Q5 ]3 k1 h ! l- k9 F3 l# H- F0 { f" [ 5 x( r( `2 Y2 t |