说明一下,工程文件太大了,没办法上传,大家按照我的步骤一步一步即可完成移植$ x' V; p' i/ t4 n2 Q% N* _ + X8 u* Z2 p+ v2 R! ^0 i 昨夜折腾到3点,在移植一个比较小巧的GUI,用的st的库文件,不是HAL版本的,好不容易移植成功,在添加触摸驱动的文件时,出现了所找的驱动文件是用HAL库函数写的,真想骂ST啊,有毛病,搞那么多版本的驱动,是研发人员太多了,还是有病啊,叫人无语,一时间,也静不下来去仔细研究库文件了,就想直接改成HAL的库,结果悲剧啊,N多错误,把我搞得精疲力尽的,无奈啊。只好下载HAL的库,然后今天白天为了以后使用方便,把工程模板从HAL库中提取出来,本来单位的电脑只有4G内存,就跑不快,这个折腾啊,好不容易,断断续续,花了2个小时才把模板完全提取出来,不用在那一堆文件了折腾了。于是开始移植,有了昨晚的经历,便开始直接移植,上图吧,大家看了就明白了 这是整个工程的目录,大家参考着搭建,然后把lvgl和lv_examples2个目录直接拷贝到你的工程下,设置好路径,然后把对应的C文件加到工程中,见下面各图。0 ^* [( b: C* q 9 C! h1 G, k, l1 h 那些需要,那些不需要的,我没有深入研究,一股脑的全导进来了,先移植成功再说啊, 进来一编译,问题多多啊,不用着急,一个一个解决,当然大部分是头文件的路径问题,这些大家自己解决啊,5 g) P* z6 C S% n 我来说说和路径无关的错误。& r* T9 U# S1 T( A8 `5 K, O4 d4 m 在lv_color.h的60行加入. B3 U3 Y5 p i1 p! I* `/ O7 q- l2 @- V #pragma anon_unions这个大家一查就知,不多说 第145行的函数static inline uint8_t lv_color_to1(lv_color_t color)中的+ e; F7 a. z# q$ ]: ]+ V- E #elif LV_COLOR_DEPTH == 16 if((color.red & 0b10000) ||+ _1 z. k+ L3 f/ @5 d2 D3 v (color.green & 0b100000) || (color.blue & 0b10000)) {5 i4 z) e- [9 _0 j+ T+ y return 1; } else {8 o1 W6 h% L# s9 b; c% F return 0;0 ]/ a j8 ], Q' ?' M# ~4 A" ]8 f } ! X' q; `( F. _2 f 改成下面即可8 F: n. b" c; F #elif LV_COLOR_DEPTH == 16# p, l5 t1 n. P3 O if((color.red&0x10) ||(color.green & 0x20) ||(color.blue & 0x10)) {( C' ^ h0 n6 Q7 R+ p) R return 1; } % ?. [2 l1 x1 p5 ~* I, g. L9 s: e else ( d" u3 \6 N- {+ f- k5 s9 K* ` { return 0; }& r7 p% x5 c( K; A5 y; e lv_txt.c的303行函数, n5 ?5 S3 V2 e5 n+ j5 }3 P, u uint8_t lv_txt_utf8_size(uint8_t c)0 f, N0 d+ K: L9 r/ ~4 @1 v) |8 L { if((c & 0b10000000) == 0) return 1; else if((c & 0b11100000) == 0b11000000) return 2; else if((c & 0b11110000) == 0b11100000) return 3; else if((c & 0b11111000) == 0b11110000) return 4; return 0;2 ]- X C/ p( Z# Z, X* p( s }. T4 h9 ?* h/ T u j$ z 改成下面的即可 if((c & 0X80) == 0) return 1;* @# }1 d% p0 K% t+ p. T7 T ? else if((c & 0xE0) == 0XC0) return 2;4 c2 U& H' O$ n else if((c & 0XF0) == 0XE0) return 3;8 M m8 R2 v' p. `- ]4 W else if((c & 0XF8) == 0XF0) return 4; - {6 f1 Z. f1 ] 更改完成编译即可通过了。 下面就是在main函数中添加驱动了,添加如下代码,即可编译,下载了 lv_init(); tft_init();& r9 d3 c$ x! N8 E9 F( h touchpad_init(); demo_create(); /* Infinite loop */4 T; h; {1 p2 d& a7 F2 p3 V while (1)- n" a# N" S' ]/ u {. j( H$ x5 r6 H4 ]: {5 M4 n HAL_Delay(10); lv_task_handler(); 5 \! H6 H- Z. e- U4 U, U0 a; h+ h } 下载后的界面如下 触摸也是可以用的,所有的代码都是官方,直接使用即可。 3 F) Y& ]7 H* f' r 发稿与 2018年1月18日深夜# D; _; d& `. }8 P( H& D' P- _ |
https://www.stmcu.org.cn/module/forum/thread-614550-1-1.html
不晚,今年会多发原创
点评
支持并鼓励!!!
不错,支持下~