手头有一块F030的nucleo板卡,休息的时候直接拿来点一下oled,看到社区活动,也来说一句,抛个砖!社区很多大神的资料有时候总有醍醐灌顶之效,学习的好方向。OLED点亮配置也比较简单,就是该字模比较麻烦。下边是部分代码:& f. \1 d# r* ?( ^
配置GPIO全部为输出:
+ [1 `) ?1 _7 b+ A- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4 |GPIO_Pin_5 ;+ ~! D/ o g, G# R, n9 k
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;; H2 A+ X; E: x! H$ m5 L: U
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;3 `" q0 t0 A3 [$ j6 c
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
" M& p( `5 c+ q2 u" U; q - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
0 G/ v4 c2 Y; M- y. ^4 T/ H - GPIO_Init(GPIOB, &GPIO_InitStructure);
复制代码 然后就是端口定义改一下:
) o) Q: y& g. {' w3 I) C, v: V- //-----------------OLED端口定义---------------- 5 {1 G1 {" Q8 n) E' C' t6 Q
- ; d; w! x' B: K! g5 g/ T, R: A
- #define LCD_SCL_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_3)
$ v# W3 L5 ^) n - #define LCD_SCL_SET() GPIO_SetBits(GPIOB,GPIO_Pin_3)+ ]+ E- ~" I6 A1 I. b( O/ [9 r
- # G: f/ b2 L$ o- q+ o% p
- #define LCD_SDA_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_5)( _+ {$ x- ]- H3 \
- #define LCD_SDA_SET() GPIO_SetBits(GPIOB,GPIO_Pin_5)
) D3 j- n( J9 w4 ~0 H
( A/ a1 x# P8 L( r% f$ M" l" q- #define LCD_RST_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_4)
) \$ {% n. c+ ] z - #define LCD_RST_SET() GPIO_SetBits(GPIOB,GPIO_Pin_4)2 P% Q5 H) [2 w' j& K
- 4 }( i; n; ~! T- I
- #define LCD_DC_CLR() GPIO_ResetBits(GPIOA,GPIO_Pin_10)
6 k, _/ s2 w. X' {+ n# z7 L% p - #define LCD_DC_SET() GPIO_SetBits(GPIOA,GPIO_Pin_10)
复制代码 剩下的就是添加字模了,相应的驱动和软件在网上都可以down到的。在main函数中调用相应的函数
; F. z: @3 t2 f9 N1 i: A3 k- LCD_Print(0,0,lcdword,TYPE16X16,TYPE8X16);
复制代码 效果如图所示:
+ v! V7 ^- { O( N4 B! m+ I. w, ~/ `4 _
|