
说明一下,工程文件太大了,没办法上传,大家按照我的步骤一步一步即可完成移植9 \/ x; @" {1 [3 B, A. ?4 K* B. j1 P 昨夜折腾到3点,在移植一个比较小巧的GUI,用的st的库文件,不是HAL版本的,好不容易移植成功,在添加触摸驱动的文件时,出现了所找的驱动文件是用HAL库函数写的,真想骂ST啊,有毛病,搞那么多版本的驱动,是研发人员太多了,还是有病啊,叫人无语,一时间,也静不下来去仔细研究库文件了,就想直接改成HAL的库,结果悲剧啊,N多错误,把我搞得精疲力尽的,无奈啊。只好下载HAL的库,然后今天白天为了以后使用方便,把工程模板从HAL库中提取出来,本来单位的电脑只有4G内存,就跑不快,这个折腾啊,好不容易,断断续续,花了2个小时才把模板完全提取出来,不用在那一堆文件了折腾了。于是开始移植,有了昨晚的经历,便开始直接移植,上图吧,大家看了就明白了 ![]() 这是整个工程的目录,大家参考着搭建,然后把lvgl和lv_examples2个目录直接拷贝到你的工程下,设置好路径,然后把对应的C文件加到工程中,见下面各图。 ![]() ![]() ![]() ![]() 0 F2 V; V* H* R9 P, Q) K 那些需要,那些不需要的,我没有深入研究,一股脑的全导进来了,先移植成功再说啊,3 t- B* B- e' }, W 进来一编译,问题多多啊,不用着急,一个一个解决,当然大部分是头文件的路径问题,这些大家自己解决啊,; w* l2 w, b. `9 v# N 我来说说和路径无关的错误。+ t" v$ u2 ?* B 在lv_color.h的60行加入/ i8 Y1 y5 a8 p9 e" b( ^; Z #pragma anon_unions这个大家一查就知,不多说; L; i' ^1 d- t7 ~: u& o+ R j 第145行的函数static inline uint8_t lv_color_to1(lv_color_t color)中的- `5 I9 m8 ]- {4 g #elif LV_COLOR_DEPTH == 16. h; v) F3 G; n- S" [6 @" g! N5 Y% g if((color.red & 0b10000) ||6 s, d# |" K1 K1 z' \+ u& B, w (color.green & 0b100000) ||9 y, F8 X( J) {" A( \2 c8 x4 @% V (color.blue & 0b10000)) { return 1;; K) R9 j3 J5 O9 R } else { return 0;5 R+ C% N5 b# b } 9 I' r3 ^& \7 ]0 G* o' u 改成下面即可$ f1 }6 [1 F0 H- t! T5 p! `6 U #elif LV_COLOR_DEPTH == 16 if((color.red&0x10) ||(color.green & 0x20) ||(color.blue & 0x10)) { return 1; } else ) v. C. B' [5 {$ \' R& R- N. z { return 0; } lv_txt.c的303行函数 uint8_t lv_txt_utf8_size(uint8_t c). C2 E# {0 G0 O% z/ K9 q {* {' o, w+ a! |" B if((c & 0b10000000) == 0) return 1; else if((c & 0b11100000) == 0b11000000) return 2; else if((c & 0b11110000) == 0b11100000) return 3;$ `/ I: m4 d8 S- [6 D* h4 I else if((c & 0b11111000) == 0b11110000) return 4; return 0;' k' W" {/ `/ _; Q. W7 f }0 k- R. |2 C4 t9 b% j 改成下面的即可 if((c & 0X80) == 0) return 1;$ U" x1 b3 Q( ?" \8 K else if((c & 0xE0) == 0XC0) return 2; else if((c & 0XF0) == 0XE0) return 3; else if((c & 0XF8) == 0XF0) return 4; 更改完成编译即可通过了。6 T, k1 W7 ?" s3 K; d ^ 下面就是在main函数中添加驱动了,添加如下代码,即可编译,下载了 lv_init(); tft_init(); touchpad_init(); 7 |. I! [+ I4 d; I" o demo_create(); ! h( K2 g, u3 H( N+ C1 _( r /* Infinite loop */ while (1) { HAL_Delay(10);- p: g( v2 E/ I lv_task_handler(); }7 K3 m7 B( `; N4 e" G8 P 下载后的界面如下0 ^+ t ]+ k, R% z* f# A0 j ![]() ![]() ![]() 3 A2 W6 n9 T6 v e8 ?; ]& D2 d. T 触摸也是可以用的,所有的代码都是官方,直接使用即可。+ S0 b- i6 ^5 m* { 7 ?8 X# Z o* R9 B- n( O 发稿与 2018年1月18日深夜1 @, J& @; m& P6 a$ `5 c |
https://www.stmcu.org.cn/module/forum/thread-614550-1-1.html
不晚,今年会多发原创
点评
支持并鼓励!!!
不错,支持下~