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

基于STM32CubeMX移植TouchGFX经验分享

[复制链接]
攻城狮Melo 发布时间:2023-6-28 13:57
本文基于STM32F429IGT6+RGB(800*480)硬件平台,详细记录了如何利用STM32CubeMX将TouchGFX移植到STM32F429IGT6,并驱动RGB屏幕。
" u3 b$ S; N, v, Y  w5 |/ b6 h

, N" \7 L) v6 k% j$ B# V5 v/ R
TouchGFX的应用框架如下图所示:
, }0 r, [+ _( e
8 \1 A! t4 z5 Z. p6 L+ S* O
微信图片_20230628135738.png
5 }% p1 j  i/ W5 d
1. STM32CubeMX配置
STM32CubeMX主要用来配置上面所示的应用框架图中的硬件抽象层和中间件层
⏩ RCC系统时钟:高速外部时钟(HSE)配置为外部晶振
1 q& D; `; p) Q, B8 L6 r$ O3 n
微信图片_20230628135735.png
) P6 o) I. a& R2 P# v* Q
⏩ 由于要使用FreeRTOS操作系统,因此建议将HAL库的Timebase Source从SysTick改为其他定时器,选好定时器后,系统会自动配置TIM,此处设置为TIM7

9 _6 u& w0 `+ V7 }4 s 微信图片_20230628135732.png
$ B) ?* G4 H  n6 I⏩ FMC设置:配置外部SDRAM来作为RGBLCD的显存,根据自已的硬件进行参数以及引脚配置
' B2 {( u3 e' a
5 L9 ^# V2 z$ A9 p. h 微信图片_20230628135727.png " p5 Y; T% `2 `" t) g& U
+ V8 G/ y* x7 A, m, g
微信图片_20230628135724.png

  T+ O2 e1 v2 U9 t: T
⏩ DMA2D设置:激活DMA2D,配置颜色模式为RGB565,并开启DMA2D中断

% s% O! h6 H; e# D 微信图片_20230628135722.png $ @5 g# E7 B8 l# f# ^+ r2 e
: W: S+ K7 z' _6 ^# s
微信图片_20230628135719.png
) t7 x, y; O; e. h  I, x

( y7 V- C! l: H: [, i+ N1 A⏩ LTDC参数设置:根据使用的屏幕参数配置LTDC参数
6 _1 _$ [8 j% H# P/ A+ Z3 ~
- z  X1 g& }9 d
微信图片_20230628135715.png
+ |4 o2 k9 E8 J( a/ M
⏩ LTDC层设置:此处选择使用1层,帧缓存地址设置为SDRAM的首地址0XC0000000

: l' q: \" Y, ?* |( t- l 微信图片_20230628135712.png 4 F* |4 l) D. ~! ?

& j1 K* A* N1 N; X
8 s% Y# e! I. |) |# n, ~4 X, R. U
⏩ LTDC GPIO引脚设置:根据具体开发板的引脚连接,配置GPIO,注意要讲输出速度设置为“Very High”;并开启LTDC中断
* o& T& @& c7 E& U  N
0 j$ b$ f! O3 `' P! C; P. b7 T# z 微信图片_20230628135709.png
+ H! w) W2 I# ?) V! z

2 p8 v6 j5 C- u* _/ @ 微信图片_20230628135641.png . U* G/ Q9 ]" A/ }% |: z
, ?5 v: E( f) e+ c7 v, S
2 Q" G$ z2 }9 W9 c# |/ T. U* S
⏩ 时钟树配置:像素时钟大小为1056*705*60/1024/1024=42M,像素时钟最大值为42M,此处设置为33M(1056为总宽,705为总高
. n: K! d- Z  K" U: i. O
微信图片_20230628135701.png + r4 V7 P; f* E9 {7 E

% \' x7 r4 O* R) Q1 r 微信图片_20230628135652.png

  b; y; J" o! k4 V) Q
8 ]- n; u% N; |; ?2 g
$ m, r9 |/ d' S# f
⏩ 背光引脚设置:本文开发板使用PB5作为背光引脚,设置为推挽输出: l* o) F% ~' B4 r

! ?; }! m, z5 Z4 x. ?" x4 r 微信图片_20230628135645.png ! X6 y7 E+ F6 F9 c, E6 V
1 |3 n5 j9 k$ u. C3 X& J# m& P

$ h$ \- Q% u& @. q  s3 s4 S⏩ 激活CRC:TouchGFX需要开启CRC功能8 o; m; O5 M5 A" [. s4 Q3 E4 z
/ W% m( l+ Z6 [2 i5 S
微信图片_20230628135705.png
* ^6 B' o7 ?3 `2 {+ ], n3 v9 |. C' _/ B2 p
: Y" f, }2 y& c6 O
⏩ 激活FreeRTOS系统:heap大小设置为32768字节,其余默认配置;并添加一个TouchGFX) q* g, ~% `8 f4 S3 t# i& C% S- X! j
微信图片_20230628135636.png 6 }% m& E, Q9 ^( F

/ ^/ G; F+ ?. U8 N9 _- i* L& B9 p7 o 微信图片_20230628135632.png & B; i$ M, R( B% e6 m

: k  n# b$ {. D% B! W

8 P9 G; h4 |6 @4 S" |+ y' o) w选择Touchgfx组件包4 u0 ~" I9 a3 v$ o

( M8 u8 h3 L4 d! ~" V 微信图片_20230628135627.png
/ S8 n# w- v# s* r# Q6 q" t" |4 U+ U2 P
微信图片_20230628135624.png
4 O. ~: t0 q0 G9 q, y2 R$ S8 |: C5 N4 `0 ]

, a' f. e$ `% }⏩ TouchGFX参数设置:选择双缓存,RGB565,开启DMA2D加速
( m9 ^1 k5 i( [5 l5 I3 V

9 p( b9 X2 h; Y  ]& _: H 微信图片_20230628135620.png 2 ?, x2 ?9 o' {( A
4 l% v" |" N/ C" L& P' V2 P: b

3 X0 q! f+ @- |' \& J% m⏩ 生成工程代码:最小堆栈大小设置为0X8007 m% m# L5 u, d2 g0 Q0 S
+ L" t' p" d; G" k: G2 v. e
微信图片_20230628135617.png
2 Y1 m- [: L2 S  E7 A9 |  c7 W7 W' y1 r
) r( H! t% p' m2 M' X
STM32CubeMX生成工程后,先不用打开Keil工程。若此时编译Keil工程,会出现大量报错/ W- M6 A: y1 X

  y" ^6 W# u! W# D+ }3 e5 F( d
2. TouchGFX Designer界面设计
Keil工程生成后,还需要执行Touch Designer来设计UI部分. X' F( r' c' Q1 i
⏩ 生成工程后,在TouchGFX目录下有个ApplicationTemplate.touchgfx.part,点击即可打开TouchGFX Designer
9 k: u  \- x) Q1 O7 [
6 w6 J0 J8 H3 N7 I- F 微信图片_20230628135614.png
1 v! ]. `& X/ V2 @3 H* f7 |- ~% N2 A) H8 |1 m/ a3 B  f
" w3 M, s3 U+ s( s) [! P
⏩ 拖放一些控件后,点击Generate Code生成代码后,TouchGFX相关的代码就会自动添加进工程中
/ m# N6 A; e9 U
& ^0 N, g/ r! d0 X
微信图片_20230628135610.png
) ^$ H4 P; w7 D/ W" Q- @

* a: ]/ c& @6 E; g" \& Q' N
3. MKD-ARM Keil添加代码
⏩ 添加SDRAM驱动源文件和头文件

  {0 F  }  ?  o" r( W3 \1 d7 T 微信图片_20230628135607.png / ~% ]9 S5 k5 O7 g( G* E

0 v3 F$ q4 m' ^8 \1 `; Z' S: S
) z: I9 V/ V: N/ B
⏩ 在fmc.c文件MX_FMC_Init()函数中添加SDRAM初始化函数,将外存芯片驱动起来
+ O# I8 k6 y6 P9 ?8 ?
- E1 P9 o  `9 A* W: F, p 微信图片_20230628135603.png
2 E8 Z4 s) |* s; X( n" ]3 b8 A; X# r. b) H0 v6 w- w. b

* q0 V, {4 [* r+ w, u⏩ 在touchgfxhal.cpp文件中点亮屏幕背光( d+ i: T% i2 Y/ I9 X. q, D

( H% ~7 F% b! \! r# u( \ 微信图片_20230628135558.png
1 q/ a( |2 U9 I0 W" O5 ?- {# s/ X( D, c$ ^) l4 J

! V0 p# V  u) X( k: T, W$ {⏩ 添加相应任务中,添加TouchGFX处理函数: s. l/ C; a( y
9 B: k. Z: R) k$ }: _3 U
微信图片_20230628135551.png
2 }3 E: X# g( M$ t
4. 下载测试
⏩ 编译无误后,下载到开发板中; Y5 s: C4 e4 m! M
( X2 `3 [  c8 A0 |; q* \; w7 w
微信图片_20230628135542.png " |. j' p# ~, F5 ^5 A8 F" A

0 t  x+ P) }7 Q. J: e5 ~& y

- v% s8 J  {( q/ M0 P⏩ 如TouchGFX移植成功,开发板屏幕会显示TouchGFX Designer中设计好的界面
4 |. l3 ^. R5 T* `; P$ e/ S* t4 {5 X+ I3 M
微信图片_20230628135535.png

3 A: ?- O! Q! O3 |2 M% T0 G
转载自:安迪西
如有侵权请联系删除
( i: E6 V6 {( @4 H6 r  Q' \  f
" v4 R' x8 }9 |' b
8 W1 S( l% t2 i# }
! H- x6 k+ c+ [& B" q' f7 I- W
; Z3 m' Z7 E0 R# O7 @) G) }. F/ {
9 e1 v0 B; Y  D7 Q

  ?/ @; E1 l$ `2 O# a6 R) v8 J  j7 K0 d# s- F  O+ p/ v
9 L* }; f! y' F5 H& c$ g2 O4 c! _7 j
) J1 O9 O0 Z4 X
7 N( g! M/ \, l1 P+ k/ Z
# o3 a7 J; F. k' `

) D; }; y( M& t0 \1 D$ T" P
收藏 评论0 发布时间:2023-6-28 13:57

举报

0个回答

所属标签

相似分享

官网相关资源

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