你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

KEIL&Stm32 LVGL显示移植配置

[复制链接]
STMCU小助手 发布时间:2022-8-27 18:56
1.显示部分移植准备
* H) J4 J5 H, F" c; r9 q将KEIL_LVGL\Simulator\LVGL.Simulator\lvgl文件夹下面的lv_conf_template.h、lvgl.h复制到KEIL_LVGL\USER\LVGL文件夹下面,并将lv_conf_template.h改名为lv_conf.h并在LVGL文件夹下面新建Porting文件夹
3 S0 e% d+ ?" s" f  O
$ S8 c0 l. W+ \+ U# K HRQG5RGEL9_E{G0{VG@A`}L.png
* z, Q1 o+ t$ p2 t7 E
1 _1 `5 @6 Q  T' V4 U8 V        将KEIL_LVGL\Simulator\LVGL.Simulator\lvgl\examples\porting下面所有文件复制到上一步新建的KEIL_LVGL\USER\LVGL\Porting文件夹下面去除去掉文件名中的template。
, \$ m5 L$ ^  u0 q" l" K
: y3 a0 d' m$ E" N  m BY2PL`WUBF6)9[NF)_PCQDL.png
# l6 i( a0 @7 I+ d! V+ M. _. y6 p3 m. _) [3 M+ @8 q2 _
2.KEIL配置' P! ?0 u% d8 j  V' z% q
    2.1 keil中添加头文件路径
) C  L3 e2 Y& ]) K+ j$ ?5 v        KEIL_LVGL\Simulator\LVGL.Simulator\lvgl: M3 @) q, _/ d. Y( ]

: h3 Z( k: y% A, \( J0 v) i6 S  y# r        KEIL_LVGL\USER\LVGL4 Y7 N+ N5 e9 W5 {- B& T% v3 F. P

# O6 x  x- T: o2 F+ Y Q)O%`AVPFA[YX4EQ2)H0Y$W.png 4 [( @* g  h) o6 J, o% ^7 D
    2.2 新建分组LVGL、LVGL_PORT# D' q% p1 t- N; H' m
) k! {' x) U0 C* _& c8 [" T
O}]EUAB1$J44YRIB}J2FQ{C.png % p4 T) }4 B9 E) z

" }' I9 U' `, @$ t  R( y( d    2.3. 在LVG分组添加文件
, X" e; \. C, d; e            将KEIL_LVGL\Simulator\LVGL.Simulator\lvgl\src文件下面所有的.c文件添加到分组LVGL中,文件较长无法显示。: V) W/ {+ H/ K3 J$ G% i/ v* Z

) Q# s2 J) `2 z! O6 Z            将KEIL_LVGL\USER\LVGL\Porting下面的.c文件添加到LVGL_PORT分组下面。- q6 c0 F0 g- h' F# R6 z5 Z

! X! i7 x9 H# O/ Q; i  T6 c QJ02Q_MMQZ9IA}6K6QWPV3A.png , J8 D& a5 H- _1 L, _
  Z0 G6 |8 y# R6 m+ ]! n$ O
& z# q' S; U3 |' _$ I$ i$ e$ K
3. 显示驱动移植 lv_conf配置
+ K+ q: G, u3 F/ }4 V/ L3 z打开lv_conf.h文件并使能。
' I' i+ b  k6 ~: j; c6 o; K; t3 p$ A8 b, d- I8 l  t* q# @
修改v_conf.h
( a. g3 n1 m  e& @; c7 `0 v. }4 j, j: o  R$ v3 [; H7 U8 M7 p
#define LV_COLOR_DEPTH 16 // 颜色深度
6 Q$ h  i5 ?, f7 @, ?7 Y2 P. }& O4 p) m2 M- a
#define LV_USE_PERF_MONITOR 0 // 关闭FPS显示+ ]7 ^$ b# t& j2 k3 F$ a  P2 y) I

, C& [$ N% O8 M$ ]#define LV_USE_MEM_MONITOR 0 // 关闭内存显示1 H" |! t' B2 N0 x

: p* X$ }9 d* O  @0 a- [ 5KFK492H[_{1[}U)H6Z`HJ8.png : u2 `3 x8 g2 d( w  |# x

1 Y- T& l# q) Q, U( X        编译一下如果有以下报错  |, f- n' n) N7 n3 o9 O
/ Y, ~' Q1 m2 W7 u% u! _
..\..\Simulator\LVGL.Simulator\lvgl\src\extra\libs\fsdrv\lv_fs_win32.c(13): error:  #5: cannot open source input file "windows.h": No such file or directory' I+ |! h) i8 Z. g$ _* [  C4 a( h

: i: r' F9 @3 X1 _$ {6 L0 ]+ s        直接将LVGL分组下的lv_fs_win32.c文件移除掉就行9 R1 w. S+ J3 w+ l: g! [
- l) k9 b6 `6 n: [" T' q
..\..\Simulator\LVGL.Simulator\lvgl\src\hal\lv_hal_tick.c(13): error:  #5: cannot open source input file "Windows.h": No such file or directory
# a: O5 l% c) R" @4 x
& ^/ R" u+ U. I' G( t, [        我们在报错的位置Go to Definition Of "LV_TICK_CUSTOM"之后发现进入的lv_config.h文件不是我们修改的文件。
/ g& s3 m1 C3 v9 ?( E& ]0 f) g5 T$ l2 U
解决办法:
. T9 n$ {7 X/ f3 l
/ @" g8 f5 }, M5 d4 R! V        打开lv_conf_internal.h文件找到31行#ifndef LV_CONF_SKIP, Q" @6 m8 m6 O0 t; L
0 X: \' p6 o. O  L' i
        注释: #include "../../lv_conf.h"  
$ I% O/ j) Y+ m$ p. _" \( ~7 o; j7 `: R& p
        改为#include "lv_conf.h" " n# c" a$ l1 s# s" u' q

4 w) f/ t) U' |4 Q1 m+ w6 [4 ` 3Q066M7}4~${@RW2GSFTMSI.png
. P% q/ T3 ~; q( [5 v. v7 ^2 a$ e- _. V0 d/ ?/ p0 q; v
8MJJZJFQSQ~9}OV${TS~YL5.png
6 g8 O3 q6 c, {+ i2 x9 D4 ]
, r4 P: D  G; F4 屏幕显示驱动移植
5 s, p) z4 M4 r3 S% y& }, x            上面修改的文件编译无错误时,打开lv_port_disp.c、lv_port_disp.h,#if 0改为#if 1 使能文件。并更改包含的头文件名,加入显示屏驱动头文件。) c1 r1 f) Q7 `2 U( U9 Q

* X4 U2 T+ e: f6 Y1 O( N" S修改lv_port_disp_init(void)函数。这个函数根据自己的硬件情况进行配置。我这个开发板比较简单,这里就简单的进行配置一下。$ r$ E; n6 i/ }
9 U; L: s) p7 G
9Z8Z]%[PZ)``9X4OAL[DM~7.png " ?5 w; e9 U, |+ ]9 y
* f  X! x' ~2 R8 O
5.触摸屏驱动配置
! D/ E' H7 N9 m/ p7 P            打开lv_port_inde.c、lv_port_inde.h,并使能。打开lv_port_inde.c文件进行修改。
9 o# d* ~  k$ ?- I" `& }5 C
1 ~9 L) f- o, D            加入触摸屏触摸驱动程序头文件,修改void lv_port_indev_int()、static void touchpad_read。其他的外设函数可以根据自己的需要进行配置。( p4 I" K+ d* Y4 X

% e" t1 e* M2 f" k! R% f F`6{}MXM@2[1HPTHPIAZN.png 8 `% P  z- y( b$ F1 Q/ _
7 W5 E6 w* D) P6 h' \3 W" S
6.测试移植
1 Q: D0 d  b$ P$ t在初始化外设时顺便初始化一下两个函数,一定要先初始化lv_init()函数。
. W% Z4 c' C: ^) V2 H' ^/ C( t/ m, {  {1 l/ ?7 M. p
E9A7_G)[J]0LEO(%9~4KJZL.png / U/ m' N+ K! x7 Q, ]

; l) W# I+ _  ?            在定时器中断中添加lv_tick_inc函数,用于处理LVGL事务。这个函数可以在通用定时器中断中,也可以在滴答定时器中断中,具体看需要进行配置。
; }- d! B# P: `; @' p
& _  O: \0 G; D/ N) x, d  c4 _3 g YAF1{R3Y4Q@{4[0QU6}KPP3.png . ]5 g, N4 }8 P7 G" Q
% U+ q6 A7 q  i9 b5 a$ ]/ m
            在main函数中添加一个按钮、按钮动画、标签、按键事件函数。可以复制到模拟器的main函数运行一下。% f. R% Z) i4 b# ?
1 b! ]: J8 d% k! k3 E0 s
X`J622QXNNICCL(Y30%X(7V.png / U8 ]5 x+ e9 ^

  o" O# @! M  N% j. S6 W( `        模拟器显示,点击按钮、按钮上面的数字依次增加。
  L' H. }& \; Z" _
8 _3 Q' K7 T" {; H! P  [0 i( y L%VIL5DP8J2(2V%V%Y7G(QJ.png
+ g6 x: A% i+ u. i+ ]$ {
0 n* }2 z0 U& p: w" \1 K8 S* d% h2 W' P! @
开发板显示效果。
( M3 }0 t$ W* U: U  a5 L# D- G1 k
S5GUU{99QOTZ31W]NHQ51~7.png 5 H3 _5 v7 r: Q- m$ A7 D

. x' i) D  B8 t! s( c% E% s7 P" m 作者:鹰头猫咪喵喵鱼8 f' S  _+ u4 |/ T( ?4 Z
6 D- ?0 C: d9 `: `& j) |

% R/ x) M& M0 W+ d. C9 u- d
AM9IQKPJD%Q%5$V4(ATIOA6.png
赞 收藏 评论0 发布时间:2022-8-27 18:56

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版