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

基于STM32CubeMX移植TouchGFX经验分享

[复制链接]
攻城狮Melo 发布时间:2023-6-28 13:57
本文基于STM32F429IGT6+RGB(800*480)硬件平台,详细记录了如何利用STM32CubeMX将TouchGFX移植到STM32F429IGT6,并驱动RGB屏幕。
( J! X1 Y3 U4 R! Z

, T, b+ Z& b" m6 O
TouchGFX的应用框架如下图所示:8 h* ^; w) o. @8 B. }  ?. l+ D

+ }; I3 X" x$ M2 {: O. c! V6 r* z
微信图片_20230628135738.png
" P' t/ K% @! k6 s8 W
1. STM32CubeMX配置
STM32CubeMX主要用来配置上面所示的应用框架图中的硬件抽象层和中间件层
⏩ RCC系统时钟:高速外部时钟(HSE)配置为外部晶振8 b( y' ]8 \6 }  M
微信图片_20230628135735.png
5 x( C6 T1 S& a/ {/ q
⏩ 由于要使用FreeRTOS操作系统,因此建议将HAL库的Timebase Source从SysTick改为其他定时器,选好定时器后,系统会自动配置TIM,此处设置为TIM7

& b) _! D0 G# x2 ^+ k 微信图片_20230628135732.png 1 J+ Y& \% I! d/ @2 p( T
⏩ FMC设置:配置外部SDRAM来作为RGBLCD的显存,根据自已的硬件进行参数以及引脚配置
+ ?# D. ~9 X* n" y. M4 g- u) K7 P# Y# {7 J
微信图片_20230628135727.png * m  m0 D. E4 S1 l: X
! P9 [( e* S# p1 m: m
微信图片_20230628135724.png

1 ]+ c2 x# I8 H0 i; r6 B
⏩ DMA2D设置:激活DMA2D,配置颜色模式为RGB565,并开启DMA2D中断

. y1 c7 U6 ?, K2 H' z7 o  f6 g 微信图片_20230628135722.png " |3 n+ V" ^8 D& J; T
, n0 b$ u! j; U4 _6 |" C1 ?+ z
微信图片_20230628135719.png - t2 H# f9 i, o1 o
' N8 ]( P, N0 L# i6 ^
⏩ LTDC参数设置:根据使用的屏幕参数配置LTDC参数. V8 @! G5 S2 p& X# A' z/ n

1 I9 i: N8 p3 Q; o; p7 ~. q
微信图片_20230628135715.png
6 K" b* F9 @0 n) p* V" W/ |
⏩ LTDC层设置:此处选择使用1层,帧缓存地址设置为SDRAM的首地址0XC0000000
4 G' J, O; s7 `, f
微信图片_20230628135712.png 7 d- ^2 F( d/ j, B7 G3 z* X

0 a4 ?: T$ u! l4 G! T3 }: l
. }1 ^. L7 W- f9 X
⏩ LTDC GPIO引脚设置:根据具体开发板的引脚连接,配置GPIO,注意要讲输出速度设置为“Very High”;并开启LTDC中断! u0 j% K( X+ w0 T6 P+ o

: z+ ]# V: F; e2 T3 P 微信图片_20230628135709.png
( }) b, X7 d+ ~7 K
6 p% e% r/ x# R( r
微信图片_20230628135641.png ! M' U  @8 v( N/ A' D8 V

+ e+ T1 R- b; [" h9 H, a

7 [6 N2 |4 o; ]" E# ?⏩ 时钟树配置:像素时钟大小为1056*705*60/1024/1024=42M,像素时钟最大值为42M,此处设置为33M(1056为总宽,705为总高
2 R  [3 S: X' h) P
微信图片_20230628135701.png
, r% v* Z- u0 b& x) X4 v4 E$ A! i. a3 z
微信图片_20230628135652.png
& \. a5 [, U4 A& T* ?0 r
$ n, ^3 s) C6 N; t. ]

: U: s! _3 s9 S9 F/ K' T$ h9 y⏩ 背光引脚设置:本文开发板使用PB5作为背光引脚,设置为推挽输出
% T% r# \& r7 t) n5 k/ j
9 Q& E4 U$ M7 R& a/ b0 Q  a4 t9 M! c 微信图片_20230628135645.png 6 [* n' f* ?$ _7 o+ d8 H

( w. ]+ I6 D& H7 I1 |4 i+ F9 Y

# E# l! I! {0 ?% y⏩ 激活CRC:TouchGFX需要开启CRC功能/ V1 x/ \1 K, R9 x4 \0 B. _. I
0 y+ k0 n8 m9 {, R
微信图片_20230628135705.png 4 F6 _. e, X; G$ N

7 j" ?+ a% V' b8 H8 j. P7 |3 Z7 g

9 h3 b% _+ |/ F8 b7 n2 M⏩ 激活FreeRTOS系统:heap大小设置为32768字节,其余默认配置;并添加一个TouchGFX% B# K5 e. I$ {  L) i$ T$ n
微信图片_20230628135636.png 4 f" t& @. s' w5 M

9 B; c& W5 s/ P; b0 ?$ l. ]) O 微信图片_20230628135632.png 8 f5 }. ]( f5 p9 u- f

% v+ H) l7 p; f4 ?2 u; r5 t
/ J. C  D) D9 c! U" u
选择Touchgfx组件包: e8 u8 ?. z8 Y" n; D9 ]9 s
$ A, i( Q1 ?* m5 j! ?+ _
微信图片_20230628135627.png
* Y( M8 H' d5 e; Y* n. f  s& \6 w9 A  A, s' G7 T
微信图片_20230628135624.png
& p9 T& c# Z7 c* w/ I) C, q( X
% F8 p- O1 f! w4 P$ r5 ]

" E+ D  [/ d! I9 V5 v. p⏩ TouchGFX参数设置:选择双缓存,RGB565,开启DMA2D加速
( ~4 a2 f# H: E/ y3 [4 z, |  f; ?3 }
# s+ p- E. i! x' ?; R/ t
微信图片_20230628135620.png 7 t6 g) I4 {; R
: K5 w4 F+ x% d! V9 R/ ~4 y

4 w8 p& o0 ?8 a8 h, J* Z& s⏩ 生成工程代码:最小堆栈大小设置为0X800' Q6 S& N3 \! q6 t3 C

4 E" Y$ e* |# E7 i% @7 Y9 A 微信图片_20230628135617.png
; Z! `; C% b' g6 s" s7 E5 i
; D" M( M) R9 L: V
" r6 ?- t, s. v! e% i) H
STM32CubeMX生成工程后,先不用打开Keil工程。若此时编译Keil工程,会出现大量报错2 s( @0 q3 p8 h. m
$ Y9 B  K. g: F) Q$ H
2. TouchGFX Designer界面设计
Keil工程生成后,还需要执行Touch Designer来设计UI部分5 I; H+ c  d; W5 A5 z. O% H
⏩ 生成工程后,在TouchGFX目录下有个ApplicationTemplate.touchgfx.part,点击即可打开TouchGFX Designer; J7 ?. F* `# d8 O

/ d% d; ^1 v2 b2 Y$ V# ?! ^ 微信图片_20230628135614.png
3 l, N% f# @1 }6 r0 Q' d9 h2 w7 ~

) q: N) E* Z( V/ [7 m6 h⏩ 拖放一些控件后,点击Generate Code生成代码后,TouchGFX相关的代码就会自动添加进工程中: B6 T9 U. n# ~& O* S) p) q
% V3 A& \4 z, E  u( B! T2 ?9 G( z
微信图片_20230628135610.png
% |# b& x3 U, A
: H1 O8 R9 y* s! [
3. MKD-ARM Keil添加代码
⏩ 添加SDRAM驱动源文件和头文件

- v: _% P& G7 h. t1 h" p3 q 微信图片_20230628135607.png
* \& \+ P& C! v/ k- r4 j2 {( C, H/ }  A9 w% ^& l; R
* J8 O' _5 @" |9 `5 C: s3 l; K
⏩ 在fmc.c文件MX_FMC_Init()函数中添加SDRAM初始化函数,将外存芯片驱动起来2 ]4 \  f0 g7 `' G  p/ V! y
  w9 d% F' i+ A( b
微信图片_20230628135603.png
+ \$ w0 c( H; [5 K
0 X$ W3 U! @3 ~: H
  a! N; s; o% c; p
⏩ 在touchgfxhal.cpp文件中点亮屏幕背光
0 p$ ^7 i7 a9 e7 l9 l8 I; K! a6 r7 R: z7 Y, _
微信图片_20230628135558.png 3 o7 m! ~6 W+ _! }9 G/ i! A# z
2 y. c8 N# t% V  U4 B

1 b6 F9 L7 o4 T: R% J6 `7 x⏩ 添加相应任务中,添加TouchGFX处理函数
1 y* ~) f! [( X) q0 n2 \5 X) _# J; f! Q, o8 r* s6 m
微信图片_20230628135551.png

' P& q9 v% ?5 o2 M2 r
4. 下载测试
⏩ 编译无误后,下载到开发板中' @$ Z! T  k' I0 b) k

  T7 }! F) ~7 i1 g" y& w 微信图片_20230628135542.png # g2 q2 ?% b9 g, n2 \

  b& X4 H) D3 s

9 S, B2 K* b2 v( P; d5 {⏩ 如TouchGFX移植成功,开发板屏幕会显示TouchGFX Designer中设计好的界面- N4 q3 _. r: ?2 ]. h

9 Y3 `% O2 e5 F4 F. y; `
微信图片_20230628135535.png

* r& w) x' F$ O
转载自:安迪西
如有侵权请联系删除
1 n3 a$ \6 {/ v4 |2 k. o

' E3 k  j: A0 |# ?5 Q2 I( C& X: c
: M; _  M0 U3 {- D2 G3 N3 V  @9 a" S
, |) N# s. K. p
0 \. D: {0 t# w- [3 B+ e- ]$ f+ o; m
  r2 r$ M3 Y  b  T3 _

, I+ N  v: H& c' f. _" }/ i& r' L3 b' c

5 A$ a/ L1 J% u/ x: F& @
7 `: B- a. L7 ~$ I  o5 l' w. s. l6 \
) g6 z3 o3 S2 C4 Q6 b) e
6 Y! t3 P. E9 n. h! g+ B
收藏 评论0 发布时间:2023-6-28 13:57

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版