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

基于STM32CubeMX移植TouchGFX经验分享

[复制链接]
攻城狮Melo 发布时间:2023-6-28 13:57
本文基于STM32F429IGT6+RGB(800*480)硬件平台,详细记录了如何利用STM32CubeMX将TouchGFX移植到STM32F429IGT6,并驱动RGB屏幕。8 o4 F3 g4 q6 i/ v( e5 i

1 V, H6 [9 _/ X! O% H! x( Q
TouchGFX的应用框架如下图所示:! V' u" D! S* m( |  I( I% h

6 n5 [" e0 }7 z& \6 V
微信图片_20230628135738.png
8 t+ C# w0 ~0 |. y6 H8 w3 _* e, u
1. STM32CubeMX配置
STM32CubeMX主要用来配置上面所示的应用框架图中的硬件抽象层和中间件层
⏩ RCC系统时钟:高速外部时钟(HSE)配置为外部晶振8 G9 a) |, M) ]9 E; e
微信图片_20230628135735.png
  H6 V; I/ ?- F. B( k! G
⏩ 由于要使用FreeRTOS操作系统,因此建议将HAL库的Timebase Source从SysTick改为其他定时器,选好定时器后,系统会自动配置TIM,此处设置为TIM7

. R3 [; X! S+ z! B# Z 微信图片_20230628135732.png 5 G6 n8 U! i' V2 d  P" t& R& o' b
⏩ FMC设置:配置外部SDRAM来作为RGBLCD的显存,根据自已的硬件进行参数以及引脚配置1 e$ `( R' L- k8 K' k0 X
) D' i: F- u- r! X9 v* d, K
微信图片_20230628135727.png , J6 k" w1 l) X) u* g0 j$ s; p
6 g# i1 A7 W$ G) L4 E
微信图片_20230628135724.png
* h) ?8 Y! n! p, r3 x
⏩ DMA2D设置:激活DMA2D,配置颜色模式为RGB565,并开启DMA2D中断

4 w1 g9 {4 T! Y  |; _0 H 微信图片_20230628135722.png
) P" g2 V6 L* H( Z0 X
+ M8 ?2 Z0 \! ^ 微信图片_20230628135719.png ) T1 w; W. j- f4 M- c2 W
& n) n% e1 I& ]  p+ i
⏩ LTDC参数设置:根据使用的屏幕参数配置LTDC参数
2 K$ ~+ f, P- l& f3 r! o9 {7 ~2 F
( Y0 F: Y* A2 M3 \1 m* A. m
微信图片_20230628135715.png

3 _3 o1 |: e0 q9 M! z
⏩ LTDC层设置:此处选择使用1层,帧缓存地址设置为SDRAM的首地址0XC0000000

( Y) O3 G* K% g& D* v- } 微信图片_20230628135712.png
5 d. F; C) `' L: T$ i  Q4 y4 K' q; r6 c$ R; g$ `
) K# j& m/ `; K, N  p9 W6 g0 A
⏩ LTDC GPIO引脚设置:根据具体开发板的引脚连接,配置GPIO,注意要讲输出速度设置为“Very High”;并开启LTDC中断; |9 {5 t* Z6 F- n2 {
# c6 Y# V1 b6 K3 b( e
微信图片_20230628135709.png
) O6 f  ?: x; A5 _3 v
0 L5 x: _- D9 u+ {
微信图片_20230628135641.png
6 Z0 f* e; ?: {. `, F6 W. D2 }  f
# x4 `1 ?3 W3 y$ j, P) T
; e) X- w$ e- J! D9 X
⏩ 时钟树配置:像素时钟大小为1056*705*60/1024/1024=42M,像素时钟最大值为42M,此处设置为33M(1056为总宽,705为总高
/ L' D% H7 h. I3 J( ?2 y! D
微信图片_20230628135701.png $ g. A- O( p3 {  v% o  M4 C' m2 d

2 k- _$ O8 N& ^ 微信图片_20230628135652.png
7 _2 t) t# W  c8 ^  ?- z* [
5 }! C0 D$ N5 ~% s' D
; l4 N0 n5 v) Y' M9 g
⏩ 背光引脚设置:本文开发板使用PB5作为背光引脚,设置为推挽输出
8 h: p! T8 F8 z( q' o9 k0 j# o4 X' `# M0 K* A: D: B
微信图片_20230628135645.png
7 o/ s$ `+ L) W' {! e5 f  K2 m  ?0 ]: l2 M9 c8 k

  ~: A3 p( w, c" D) f⏩ 激活CRC:TouchGFX需要开启CRC功能
, \1 w9 e6 Z  R7 G( C. {3 c( u3 T
6 r! w/ _4 r) i% T
微信图片_20230628135705.png 8 h/ y, @, Y( Y' ]( @) p
/ b3 O6 s4 u9 @
5 @4 t, h& ?# c
⏩ 激活FreeRTOS系统:heap大小设置为32768字节,其余默认配置;并添加一个TouchGFX
4 a4 {+ ^9 Z8 U- R! B  I1 w
微信图片_20230628135636.png
% _. M6 V. Y( W/ c0 Y
. l! C6 h; o7 x- r4 } 微信图片_20230628135632.png
# X# X% Z8 i  H3 E! n' _
" U# d" a% m+ H8 s0 x

; A# q: h6 G% A* C7 b选择Touchgfx组件包% m  c, p2 [1 L. w4 n

. ?. _: @9 T5 `: j; L 微信图片_20230628135627.png & F' N& ]6 n5 c

5 H: j" T1 v3 ]+ v2 a' X. ] 微信图片_20230628135624.png
4 e* q6 ^' H6 l" W2 f7 e4 O
$ T+ ^2 [/ ~" a; v0 V9 a/ {

, ]1 V8 |/ x' n9 V⏩ TouchGFX参数设置:选择双缓存,RGB565,开启DMA2D加速0 `; O6 @  T8 }: T' ?, n7 }# q4 @  s
$ Q/ W- z) q) o) L/ \
微信图片_20230628135620.png
: L" p. {7 `3 ~/ V6 j
& d; B7 B& t  k( ?1 ^8 @
4 C; S0 \/ j8 g# o; {* y
⏩ 生成工程代码:最小堆栈大小设置为0X800
0 }/ q, g4 i. z1 h( a
6 W0 }& v4 T9 e1 D3 @6 W 微信图片_20230628135617.png
) h, ?+ Q% I& i% c0 }3 }+ V
# V8 V. L  \: J% J
9 Q. g/ e6 ~9 K; K+ C5 W
STM32CubeMX生成工程后,先不用打开Keil工程。若此时编译Keil工程,会出现大量报错
1 H$ g. F! F3 l

9 @+ v8 s( U. {
2. TouchGFX Designer界面设计
Keil工程生成后,还需要执行Touch Designer来设计UI部分
% k/ s7 X/ j& R1 m! p8 Z0 y1 O⏩ 生成工程后,在TouchGFX目录下有个ApplicationTemplate.touchgfx.part,点击即可打开TouchGFX Designer
+ K* U3 R5 P- z5 m" \9 \- O9 {, L5 _& }1 o+ L+ A5 s
微信图片_20230628135614.png - m$ Z1 a; }+ S4 r/ C: w
" A% @: n2 q' r. ~3 M& @

* ^$ S" |- u) [: ]# j⏩ 拖放一些控件后,点击Generate Code生成代码后,TouchGFX相关的代码就会自动添加进工程中1 C( [" }3 H% `0 z' s
) ]) g' [2 ]$ @1 h6 S- \# a
微信图片_20230628135610.png

9 L1 M4 E# ]! C& x" _: E! F# s( g4 b! ?6 X* H2 ]( n  y  a" q/ I
3. MKD-ARM Keil添加代码
⏩ 添加SDRAM驱动源文件和头文件
1 }/ `: h; q1 Y8 X$ a( W1 ?0 R% M
微信图片_20230628135607.png
& c0 q. q# q9 I+ P4 w3 N& ?9 E$ Q! K0 N

3 k* A- c, o* Z: T' i4 `+ |. Z" r. f⏩ 在fmc.c文件MX_FMC_Init()函数中添加SDRAM初始化函数,将外存芯片驱动起来& M$ S0 i" @" I3 P

7 o, x2 ^4 p! k, H* f0 c. ? 微信图片_20230628135603.png 4 S" y# h  w; p1 G4 M

" W4 I6 U3 |+ \2 C( N! m- T5 h0 d

3 T7 H: ?' k3 y# |; @4 ~1 U) L⏩ 在touchgfxhal.cpp文件中点亮屏幕背光- {8 l* E: L' w$ X4 M
% h7 Y8 j. j2 s& N1 E% Z
微信图片_20230628135558.png
1 k+ B8 T+ s6 Y0 ]! Q5 X0 I- n2 e4 ?- z8 N  V. T% ~# E

7 p! d% q, d  p3 G2 ~: C5 K7 D⏩ 添加相应任务中,添加TouchGFX处理函数" d5 R6 t3 t0 |4 H2 S
4 Z! I" B: K% O2 v' [7 I) l
微信图片_20230628135551.png

0 l" D* e0 ~6 X( A8 I4 p5 j
4. 下载测试
⏩ 编译无误后,下载到开发板中
3 Z2 B' P2 F6 D
+ @& n( j% l! o6 i. `4 b 微信图片_20230628135542.png
, W2 {" b1 p" N" P. C- B" U6 j+ d
. {1 \1 _- Y% o2 A5 P( ]7 E

* X. D) [' v/ L3 y) s& J⏩ 如TouchGFX移植成功,开发板屏幕会显示TouchGFX Designer中设计好的界面
' G- `/ {# a" ^" ^0 H: C7 m6 ^, e0 w+ g2 O+ t: o0 Y3 u" d( J! Y
微信图片_20230628135535.png

- }9 G# v: G4 T: z
转载自:安迪西
如有侵权请联系删除
. n( ]* J( M1 W: O. J
0 {( F; c* c* m3 s
6 E9 U) a5 N7 u7 W4 W  H3 n# K4 K2 S
3 P8 f' I6 S! }, @1 Z. y0 r4 @

  v' b* c' `  w6 h1 m% c. S/ s4 \' Q  p: f7 ~/ w

& B# I' x- N  l/ I+ f; B: v
  K2 K& _" G! |! ]& g0 t3 i& y/ ^6 W7 E2 ?, J
- F' c( |0 ]# m
# y/ c% O4 J* H  J6 K
$ E; M/ Y( p. o, g+ p  m
9 `& ^0 V0 _0 \
收藏 评论0 发布时间:2023-6-28 13:57

举报

0个回答

所属标签

相似技术帖

官网相关资源

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