手头有一块F030的nucleo板卡,休息的时候直接拿来点一下oled,看到社区活动,也来说一句,抛个砖!社区很多大神的资料有时候总有醍醐灌顶之效,学习的好方向。OLED点亮配置也比较简单,就是该字模比较麻烦。下边是部分代码:
, M! C; |& }, X0 k$ f( w! {5 N9 Y配置GPIO全部为输出:# L) j) Z# v# T z" {
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4 |GPIO_Pin_5 ;
/ ~3 `2 l# t& H, c - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;1 X* {' [* d; _# Q
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
/ |& u0 h) I1 _' e/ p3 L - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
9 ]9 \+ b c% s8 G - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
% R" w0 ]. m5 J1 z - GPIO_Init(GPIOB, &GPIO_InitStructure);
复制代码 然后就是端口定义改一下:0 T6 v% J* c+ w, S
- //-----------------OLED端口定义----------------
8 p- l. U5 q$ o% |- U
2 m1 i9 q4 [$ j' }* d; O' Y- #define LCD_SCL_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_3)
" f: Q1 n7 G1 H8 v5 l - #define LCD_SCL_SET() GPIO_SetBits(GPIOB,GPIO_Pin_3) c: k5 H* y) w7 M, m
X' l. l* q7 a) V. W3 ?9 E- #define LCD_SDA_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_5)3 ?& ^, o7 `& G; T4 Q9 [: O: T
- #define LCD_SDA_SET() GPIO_SetBits(GPIOB,GPIO_Pin_5)& n1 C9 Y& H0 K
- 8 y6 C/ W+ r4 m$ H n
- #define LCD_RST_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_4)/ D" _$ q, z' v3 r. N
- #define LCD_RST_SET() GPIO_SetBits(GPIOB,GPIO_Pin_4)' x: k/ z2 B/ g& P/ Q' w4 d- P K
- 1 _- e2 i7 P( G8 @; L# Q
- #define LCD_DC_CLR() GPIO_ResetBits(GPIOA,GPIO_Pin_10)7 ^3 L5 D6 h3 M: d9 \5 v2 e
- #define LCD_DC_SET() GPIO_SetBits(GPIOA,GPIO_Pin_10)
复制代码 剩下的就是添加字模了,相应的驱动和软件在网上都可以down到的。在main函数中调用相应的函数& Z/ x. `) _" k. N* ?
- LCD_Print(0,0,lcdword,TYPE16X16,TYPE8X16);
复制代码 效果如图所示:) m3 ]# t' T5 o/ Y$ ?
; c+ r, F' m) N8 h
|