
说明一下,工程文件太大了,没办法上传,大家按照我的步骤一步一步即可完成移植 % R( c2 H E# n7 C, r* t6 } 昨夜折腾到3点,在移植一个比较小巧的GUI,用的st的库文件,不是HAL版本的,好不容易移植成功,在添加触摸驱动的文件时,出现了所找的驱动文件是用HAL库函数写的,真想骂ST啊,有毛病,搞那么多版本的驱动,是研发人员太多了,还是有病啊,叫人无语,一时间,也静不下来去仔细研究库文件了,就想直接改成HAL的库,结果悲剧啊,N多错误,把我搞得精疲力尽的,无奈啊。只好下载HAL的库,然后今天白天为了以后使用方便,把工程模板从HAL库中提取出来,本来单位的电脑只有4G内存,就跑不快,这个折腾啊,好不容易,断断续续,花了2个小时才把模板完全提取出来,不用在那一堆文件了折腾了。于是开始移植,有了昨晚的经历,便开始直接移植,上图吧,大家看了就明白了 ![]() 这是整个工程的目录,大家参考着搭建,然后把lvgl和lv_examples2个目录直接拷贝到你的工程下,设置好路径,然后把对应的C文件加到工程中,见下面各图。3 G$ `" r3 ?4 c9 [ ![]() ![]() ![]() ![]() 那些需要,那些不需要的,我没有深入研究,一股脑的全导进来了,先移植成功再说啊,) r4 k" E' U9 [9 l. m8 D% n 进来一编译,问题多多啊,不用着急,一个一个解决,当然大部分是头文件的路径问题,这些大家自己解决啊, 我来说说和路径无关的错误。 在lv_color.h的60行加入 #pragma anon_unions这个大家一查就知,不多说 第145行的函数static inline uint8_t lv_color_to1(lv_color_t color)中的 #elif LV_COLOR_DEPTH == 16; ^6 }7 ]" ?. q5 f2 F2 b4 s" ~ if((color.red & 0b10000) || (color.green & 0b100000) || (color.blue & 0b10000)) { return 1; } else {) T: z7 s6 C8 p# V" R D, S return 0; }1 y+ P1 \7 p$ m# x: [7 [ 改成下面即可/ ~, Q/ l6 U8 J; P; b #elif LV_COLOR_DEPTH == 16 if((color.red&0x10) ||(color.green & 0x20) ||(color.blue & 0x10)) 7 b: U- |, r7 u. w( P {- K5 i- |9 Y& p& t" u) t; [( U- [ return 1;2 V( c$ w7 r# N- B } * B$ w; _( l& g- Y- `+ Q else { return 0;2 A& }9 r- i: V5 _* }$ y' _1 V }8 @ ^# ^9 t- P% H3 {5 \3 T" }5 |/ Q lv_txt.c的303行函数 uint8_t lv_txt_utf8_size(uint8_t c) {' z5 p3 k/ E+ F$ ^ if((c & 0b10000000) == 0) return 1;& D) A- I* B9 Q5 Q; ^" n. E1 E else if((c & 0b11100000) == 0b11000000) return 2; else if((c & 0b11110000) == 0b11100000) return 3;* a" K Q" K- s+ i% [. } else if((c & 0b11111000) == 0b11110000) return 4; 3 z* g0 S5 W. p0 u; T return 0; }. _6 j9 K* d) F& J 改成下面的即可 if((c & 0X80) == 0) return 1; else if((c & 0xE0) == 0XC0) return 2;9 g: l- C5 T) e9 ]& b8 ^ else if((c & 0XF0) == 0XE0) return 3; else if((c & 0XF8) == 0XF0) return 4; 更改完成编译即可通过了。 下面就是在main函数中添加驱动了,添加如下代码,即可编译,下载了, p: K" ?; u' k6 K; E* U; D/ H2 b lv_init(); tft_init();# q. G" D" P) C6 {9 B6 S touchpad_init();* M1 B ^: ^: u/ p$ A demo_create();5 |0 R4 U/ N- \7 T. F2 } /* Infinite loop */ while (1)/ V! l" U* d4 b; v8 m7 Z7 ~2 C* \ { HAL_Delay(10); lv_task_handler(); } 下载后的界面如下 ![]() ![]() ![]() 4 p: P$ @# _" C) }3 D 触摸也是可以用的,所有的代码都是官方,直接使用即可。& Y. Q: ?1 S1 @7 a 发稿与 2018年1月18日深夜8 s& o! F" T8 f+ }) @+ ~ |
https://www.stmcu.org.cn/module/forum/thread-614550-1-1.html
不晚,今年会多发原创
点评
支持并鼓励!!!
不错,支持下~