手头有一块F030的nucleo板卡,休息的时候直接拿来点一下oled,看到社区活动,也来说一句,抛个砖!社区很多大神的资料有时候总有醍醐灌顶之效,学习的好方向。OLED点亮配置也比较简单,就是该字模比较麻烦。下边是部分代码:
) E2 i. }/ D5 I配置GPIO全部为输出:% k& p; W: A) V! M6 \: X- E; K
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4 |GPIO_Pin_5 ;, O$ z, V3 n9 u/ n, G
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
) ?) ~% L/ C9 T7 A- H) ]$ N; ?- J) g - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;% C: {6 x" W; V9 G6 r3 t' O ?
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;( @! z2 M# M2 i1 s# ?
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;' D3 ~2 ^. Y( t0 X1 h
- GPIO_Init(GPIOB, &GPIO_InitStructure);
复制代码 然后就是端口定义改一下:
1 Z$ }/ c; i/ G) \2 T' W- //-----------------OLED端口定义----------------
) V5 Z( G+ `% v" w - ( K: Y( y0 j1 ~, y( @$ A0 e
- #define LCD_SCL_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_3)
5 B9 e% m/ K# Y' V - #define LCD_SCL_SET() GPIO_SetBits(GPIOB,GPIO_Pin_3)6 ]# X- T5 O' ]0 b
; ?" s s' Q& m0 l1 [- #define LCD_SDA_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_5)) K1 a4 V- ]% a& d2 Z) {
- #define LCD_SDA_SET() GPIO_SetBits(GPIOB,GPIO_Pin_5)
0 d: g, B8 ^- V! H$ o; W - ( ^/ O& f1 x( t% r! e+ F
- #define LCD_RST_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_4)
! D/ r9 J, V) Z0 ^4 e# j - #define LCD_RST_SET() GPIO_SetBits(GPIOB,GPIO_Pin_4)/ K( M( m8 q1 O5 F* y! u4 r
- - ~2 s5 s- C$ b& i
- #define LCD_DC_CLR() GPIO_ResetBits(GPIOA,GPIO_Pin_10)# r3 G, \/ z0 m9 C& i) Q; j, N
- #define LCD_DC_SET() GPIO_SetBits(GPIOA,GPIO_Pin_10)
复制代码 剩下的就是添加字模了,相应的驱动和软件在网上都可以down到的。在main函数中调用相应的函数/ ?2 U5 V5 y/ M% X2 B X% C) n
- LCD_Print(0,0,lcdword,TYPE16X16,TYPE8X16);
复制代码 效果如图所示:
9 O: W2 X+ I% d5 u7 ?/ h
, v/ S! i1 P+ m+ h; @9 B |