1.开发介绍:
: o9 R7 U& V7 x% Y, u5 z硬件是中景园1.47英寸 172*320 屏幕
+ e( h6 l- v* `stm32h750. d9 ^$ z+ l ~# h1 U, l+ Y# h- w% J
是用stm32cubemx+hal库
4 c3 x ~: Y7 Q% J) Y开发环境 vscode+eide8 r, n2 L, ]) `: _8 c4 C1 t
编译器 ARMCC6
+ D7 E& Y) K; V+ E( e& ~0 t, ]& G/ b屏幕引脚定义:
' m5 q) _) f; b; _
( M9 n& y( q' V% l' i5 I5 c1 j
/ ]1 Z- q6 f+ F4 G4 x1 U2.cubemx配置2 h; f3 b( W5 {+ F! G
stm32H7时钟配置
! F j7 Y- o5 U" U! f7 b2 x; |2 A0 f8 I! I0 z# m
4 u- T9 a5 R, v/ r- c' U' p1 ^
- j' h" q6 r+ |$ S1 ?* K8 J
实测30MBITS能够正常显示,60MBITS就不行了* U+ a. ?& P3 w* r4 j* U
/ A n8 [ ~2 r9 I
5 b; F) Q* Z- R2 J; [
) c& v8 p! T8 o1 x定义相关IO输出:
* N7 m9 I; z4 v5 o" p. F
1 l& Y& r# f& K6 ]* o2 L
4 ]* {. p6 {/ O0 c" g
7 i$ x5 K1 N( D. O
3.注释事项
9 j/ e4 j$ t5 _1 w! l3 i源码基础中景园例程修改,主要修改内容可以往下看
1 D, a. O; z; M+ H0 t
$ F& r* s6 y) R* m7 |" j原例程使用软件spi# _ N" Y& w- o( ?6 V
我在保留原有软件spi的基础上加入硬件spi,使用宏定义HW_SPI进行修改
- [( z! L: W2 @& N8 |# H# A, E- // SW_SPI or HW_SPI or HW_SPI_DMA (HW_SPI_DMA暂时还用不了,相关代码还没写)
- v" q' \0 A' [2 Y - #define HW_SPI+ \# V: L* N' C9 i4 ?' _
复制代码
7 l) a* e9 Y* } X( J5 w对相关GPIO进行了封装重写. X0 n [. l# K$ h( |0 n
- //==========================================
7 X' W+ n2 d" Z3 f' y - //GPIO-重写& v& A t; \! |* J
- //==========================================* X/ Y' d/ |) D" y6 U& q$ `/ t
- #define LCD_RES_GPIO GPIOC
, Q8 a* s$ S+ _) x% |3 Y4 ] - #define LCD_RES_GPIO_PIN GPIO_PIN_4. U. J8 o/ K1 m0 G& D V
- #define LCD_DC_GPIO GPIOC
9 s, E& d8 B' O7 _- | - #define LCD_DC_GPIO_PIN GPIO_PIN_5
+ q: f A7 @. F9 j) @$ L - #define LCD_CS_GPIO GPIOB
0 C' U( t. _; J: p C9 e& A - #define LCD_CS_GPIO_PIN GPIO_PIN_0
; T. u" b* I6 N! Y - #define LCD_BLK_GPIO GPIOB
# o; |6 b& ~; w4 ], j3 }/ I - #define LCD_BLK_GPIO_PIN GPIO_PIN_1+ t% h( n+ G. ?: {; j5 h l
复制代码
% j9 l% x% q& x用户还需要修改初始化部分代码,主要是不同屏幕初始化不同,和硬件有关,具体要看厂家初始化代码8 U8 v2 m) I9 m0 q# K
初始化函数为5 w% d. @4 B- }9 S- S; E
- void LCD_Init(void);//LCD初始化
5 a S s: I N) v( M, s9 d
复制代码
: u. F6 h3 f, }" \2 M e移植时不要忘了修改
, j5 b8 s @7 s) t: w
0 |# U8 Q c% t* V移植时还需要修改显示方式和宽高/ l% G" U: p% a& {: s) q' P( G
- #define USE_HORIZONTAL 0 //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏
# d3 T6 ^/ A) T3 y6 m
) Z/ g7 I5 `1 F0 `) [3 I z- #if USE_HORIZONTAL==0||USE_HORIZONTAL==1! e# m3 z" t4 ]) {) d. G# @& l' @
- #define LCD_W 1723 J. t; @% c# \+ [( Z
- #define LCD_H 320' t6 n' ^. \* d, u% g! p5 Z- m+ n
- #else
* k4 M- x& W3 b" d/ c* ? - #define LCD_W 320
$ {4 Q; @6 P0 G* Q+ S, a - #define LCD_H 172
, r7 v9 D3 @* e3 s4 |: _ - #endif K- g+ i) C$ f: W7 o
复制代码
7 t" P2 ?( w8 v) t. d/ B% V: q4.源代码/ t& i6 V6 _. Y- x
源代码由于合并fonts到一个文件有点长,csdn上传不了
; P; Y$ r3 C" J1 t/ z0 a$ t放到github上了
0 L' s$ `6 d% _8 l8 N5 }7 b3 X( p
8 i6 A$ d3 B2 R$ p# n: M4 @5.使用示例$ ]2 \: E4 @0 @
- LCD_Init();7 Z) c* d( h9 f" I; v
- LCD_Fill(0,0,LCD_W,LCD_H,BLUE);
% o; |9 ?/ ]3 _1 u' ? - Draw_Circle(50,50,5,WHITE);7 P1 q) V: L2 P, O, R6 u
- LCD_ShowString(10,10,(const uint8_t *)"TEST",YELLOW,GREEN,32,0);
; V& S; s' ]; `( D$ w0 ~* \* E
复制代码 / [) T! @: k2 x% U4 y8 V( Z5 N Q
$ v% p3 d0 M! R' t! n- I7 s5 f
————————————————
- t% U9 {9 J6 U H) Q2 O% s$ `版权声明:gxt_kt* C4 N0 |2 v9 V3 S9 |
) @ y: m* N- b
6 ]* @6 m I" i% } |