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

基于STM32CubeMX移植TouchGFX经验分享

[复制链接]
攻城狮Melo 发布时间:2023-6-28 13:57
本文基于STM32F429IGT6+RGB(800*480)硬件平台,详细记录了如何利用STM32CubeMX将TouchGFX移植到STM32F429IGT6,并驱动RGB屏幕。
$ e8 \/ y5 M4 W9 d; u
- c* _1 D  s# N1 n1 O5 b1 j
TouchGFX的应用框架如下图所示:
2 F5 X! _3 N8 G! n, w

/ D& y! ]: K& z  ^
微信图片_20230628135738.png

' d. B# n& n* z. s8 W
1. STM32CubeMX配置
STM32CubeMX主要用来配置上面所示的应用框架图中的硬件抽象层和中间件层
⏩ RCC系统时钟:高速外部时钟(HSE)配置为外部晶振4 a9 Z( m* }6 o( Z; t
微信图片_20230628135735.png
1 f- ^, d- |0 W
⏩ 由于要使用FreeRTOS操作系统,因此建议将HAL库的Timebase Source从SysTick改为其他定时器,选好定时器后,系统会自动配置TIM,此处设置为TIM7

4 O' P7 V& c/ [/ l 微信图片_20230628135732.png 4 `+ Y5 K7 {; ?! ^2 g
⏩ FMC设置:配置外部SDRAM来作为RGBLCD的显存,根据自已的硬件进行参数以及引脚配置+ {9 Y. b  \- K! K5 u1 S
' }' \3 J! _9 U0 B( z" j
微信图片_20230628135727.png
9 e( H4 `4 b( c: |: l
, `0 v; _& N- x6 F# n& |7 h
微信图片_20230628135724.png

: P3 Z" F( t) t7 Y' ~: q1 P
⏩ DMA2D设置:激活DMA2D,配置颜色模式为RGB565,并开启DMA2D中断

& o- I" a3 a4 ?, Q 微信图片_20230628135722.png " W! l' q! X0 b; W) ?+ r

+ n- b9 ]2 t: c0 w. y 微信图片_20230628135719.png ! Q8 ?6 W+ `! Y! {4 G  _

2 A* `1 g& v8 ]5 U5 F# r4 V+ M⏩ LTDC参数设置:根据使用的屏幕参数配置LTDC参数
/ x; ]4 u1 [; i$ Q/ o- @5 a: D
/ M% S4 S( g7 t; v& f
微信图片_20230628135715.png
& h' [3 u6 |& Z4 W9 U
⏩ LTDC层设置:此处选择使用1层,帧缓存地址设置为SDRAM的首地址0XC0000000
# A* C" C9 S$ `; |( j) c
微信图片_20230628135712.png ) i4 ~( A& M5 O. m' F' v9 I
. v+ H! L) c5 `$ D8 N0 S( M! ?
& t% M# m  s8 t; w
⏩ LTDC GPIO引脚设置:根据具体开发板的引脚连接,配置GPIO,注意要讲输出速度设置为“Very High”;并开启LTDC中断
( U5 R- j% k$ L$ c& p: K! b, S! K8 R  L! N& V6 a! u/ f4 Z
微信图片_20230628135709.png $ \; \' [2 U4 U( g

( n* h* C: H0 c+ _6 `3 S 微信图片_20230628135641.png 7 K+ n2 }1 u. R
7 y+ N; y3 a! g# u: ^! m
/ E* L  u: e! }7 ?( _  I7 X
⏩ 时钟树配置:像素时钟大小为1056*705*60/1024/1024=42M,像素时钟最大值为42M,此处设置为33M(1056为总宽,705为总高- S: C) n# o$ U; y
微信图片_20230628135701.png - }: Z8 ]; n( }( T

+ Q9 o' `% T- z, ` 微信图片_20230628135652.png

1 s5 G( n% X% y% Y. N* d+ i4 J" l
' i* q0 t! g7 P4 v! m

) P( h9 P/ x0 W; Z⏩ 背光引脚设置:本文开发板使用PB5作为背光引脚,设置为推挽输出
. j6 n( K" y! C- @; z& ]/ F1 G+ U
* \+ ^. ^$ ]6 |. b: V 微信图片_20230628135645.png
; Q4 A2 ~, y9 D3 s) F4 x2 M+ y4 _  d$ Y3 k" N! i
0 j% O/ z' s* X; k/ ^
⏩ 激活CRC:TouchGFX需要开启CRC功能- P7 |7 U( c/ B

6 T( I* g2 x2 |( Q! P$ A8 m1 Z
微信图片_20230628135705.png
, g8 p, ^) W' R3 Z+ _' w  R, h: W- e( b* c' r

- f  v5 O6 N* ~; V9 s& Y# v⏩ 激活FreeRTOS系统:heap大小设置为32768字节,其余默认配置;并添加一个TouchGFX
7 X: q# J9 g/ T- O5 `  z
微信图片_20230628135636.png
5 O; K- k5 P. f; l) T
+ l9 ~; ~' S" c 微信图片_20230628135632.png
/ J: Q7 n/ I! W- K0 z- x& y2 U" J7 S( V3 a( W& K# d; ?+ R
+ d7 R6 G$ G' t! h
选择Touchgfx组件包
! e, U3 k* W& w5 Z& Z- A

1 H& J/ ~( l4 s0 u& I- k 微信图片_20230628135627.png
, z  d4 L9 F+ k5 W
3 G7 B% f: q2 k- n" @ 微信图片_20230628135624.png
6 B# `8 Y9 ^& P2 q$ _6 Z4 V0 v" `( z
" T1 e9 R: A0 E  }, M

, ~1 m( L$ M( M6 k, n8 w% Y- E⏩ TouchGFX参数设置:选择双缓存,RGB565,开启DMA2D加速) f+ W( ]/ V1 b1 [
1 U% O6 y  U3 u4 C
微信图片_20230628135620.png 1 ]1 @3 U& k# i( \+ s& J' w

7 W7 H! j8 M9 ?, y$ k$ C( W8 W

' a% u. w1 k/ k⏩ 生成工程代码:最小堆栈大小设置为0X8007 f; h; Q! b# C6 P2 F2 R
( `+ t1 F" T% B* g/ |& B" v- `+ g. G
微信图片_20230628135617.png
: z0 [6 x" N: N8 {8 n* F" ?8 M9 F8 `& [4 `
, z9 v' b6 r' k' E" ~
STM32CubeMX生成工程后,先不用打开Keil工程。若此时编译Keil工程,会出现大量报错6 C" W" ^$ p$ I  F6 V6 J5 A& F
$ A8 ~" c" H7 M" i( Y! r- A
2. TouchGFX Designer界面设计
Keil工程生成后,还需要执行Touch Designer来设计UI部分
5 N1 z( T7 i0 g# \⏩ 生成工程后,在TouchGFX目录下有个ApplicationTemplate.touchgfx.part,点击即可打开TouchGFX Designer
% g- A, |( E, |: a
! ?4 n" e. T, Y. j$ V$ x1 U 微信图片_20230628135614.png
; v+ d+ t9 l0 }" C- f0 ^8 y; l( C. e- G

, d1 C7 o0 C9 Z9 Z" ^3 e* Y# Q1 W⏩ 拖放一些控件后,点击Generate Code生成代码后,TouchGFX相关的代码就会自动添加进工程中
4 S  E" E) p) L0 U$ P
3 T: b! O& |/ ]
微信图片_20230628135610.png

5 {! ]  q) {, f9 k+ D$ u
3 J* N4 S; p: }9 V: n, ^7 T
3. MKD-ARM Keil添加代码
⏩ 添加SDRAM驱动源文件和头文件

9 O, Z/ o* e/ l0 b 微信图片_20230628135607.png , T+ g5 o! E$ K, U0 E* \
6 r) l' k, \% a3 L1 O% r

! t7 I+ y& s; H8 g⏩ 在fmc.c文件MX_FMC_Init()函数中添加SDRAM初始化函数,将外存芯片驱动起来
" w2 c6 P) K7 |$ s1 z5 t7 Q/ U' Q( R$ S8 J- z& U% @; V
微信图片_20230628135603.png 5 j0 U0 d& P- |. e: {$ d3 ]

8 Y- {+ V8 r1 B2 i; Y; s8 z

; p; J/ m/ y8 D+ H/ y* Y  C⏩ 在touchgfxhal.cpp文件中点亮屏幕背光
3 y& x  E3 R# h( R4 K8 |$ B. U: P# Y0 o: ~' Z' ^
微信图片_20230628135558.png - Q; F0 h" {( H) F* \$ C
6 N" p7 a( F, d' a. R- R! f/ H

( a8 C0 c8 G$ V6 l% d3 `⏩ 添加相应任务中,添加TouchGFX处理函数8 a9 h3 n- [$ N5 Z8 s% `

9 Z4 L; z% G4 }+ r" R% M
微信图片_20230628135551.png
, _; b8 G  m3 {) Z0 \  Y
4. 下载测试
⏩ 编译无误后,下载到开发板中
7 `. f. ]1 u. x6 P2 Q
5 |  U2 \- w( L  V 微信图片_20230628135542.png
9 l+ H2 P! W1 R- o- d  T0 n9 U; C

4 t, ?' C: u6 R0 P+ m. W& x% `⏩ 如TouchGFX移植成功,开发板屏幕会显示TouchGFX Designer中设计好的界面
8 ~+ ~! G0 T2 d* H7 K& O4 {# D3 m
5 x, Y# V' [2 O3 L  a
微信图片_20230628135535.png
0 A* F! R5 r9 z1 A8 n
转载自:安迪西
如有侵权请联系删除

9 {3 E' E$ T3 Q( I
5 d+ |7 K' S$ m4 @
8 X4 f' {& r8 v1 i* a5 W$ ?, K
1 r. ~7 U0 c) W" p; f- R
: J% Q: t$ t" `% `6 K' u

2 f% q/ F. t5 ^& B$ Q0 D4 L' c* y& [: O- A

$ _. A+ T% O* h5 M& j
7 m) O) A. Y: P) c7 ~, P$ k- M+ P- J4 L1 Q
# |6 b* i/ r% q5 F5 u

9 L4 s$ s7 n: `+ x* v: ~2 s
  l$ }' T' d1 k! c
收藏 评论0 发布时间:2023-6-28 13:57

举报

0个回答

所属标签

相似技术帖

官网相关资源

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