手头有一块F030的nucleo板卡,休息的时候直接拿来点一下oled,看到社区活动,也来说一句,抛个砖!社区很多大神的资料有时候总有醍醐灌顶之效,学习的好方向。OLED点亮配置也比较简单,就是该字模比较麻烦。下边是部分代码:2 b( l( ]7 }# m& n! D8 x
配置GPIO全部为输出:$ r) J/ }7 Z6 y, Z
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4 |GPIO_Pin_5 ;$ _# T% c5 ]. ~1 Z3 }1 _) m Q
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; q& G: q6 N$ h$ M- b
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
% ?: j) ^& t" s - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;; M1 O/ b5 o Z' h
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
2 }# `0 Y6 O, @7 e1 E' L - GPIO_Init(GPIOB, &GPIO_InitStructure);
复制代码 然后就是端口定义改一下:
% _. T& h) F; U* t- //-----------------OLED端口定义---------------- / S3 n$ p$ K1 H5 o% \+ X
- ) J' s5 T) J$ ^# t+ T
- #define LCD_SCL_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_3); N. \5 a/ E: H0 i1 P
- #define LCD_SCL_SET() GPIO_SetBits(GPIOB,GPIO_Pin_3)
# @9 Y( V* R' z. T: ~; {. w - 9 v# C* g8 R% G/ W- ~ o' k# A
- #define LCD_SDA_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_5)
: b0 r6 m! a2 R& K/ Z' Z - #define LCD_SDA_SET() GPIO_SetBits(GPIOB,GPIO_Pin_5): V3 P) P. g+ [: u) O
- * c+ b9 J. n/ [
- #define LCD_RST_CLR() GPIO_ResetBits(GPIOB,GPIO_Pin_4)
8 U/ E0 ]0 O4 i5 D3 K* s! [/ o - #define LCD_RST_SET() GPIO_SetBits(GPIOB,GPIO_Pin_4)% s% P& a6 v4 \3 t& l
- ; s6 u9 C# u" e5 Y0 z
- #define LCD_DC_CLR() GPIO_ResetBits(GPIOA,GPIO_Pin_10)* I" n$ T; a' A& P1 [0 J, E
- #define LCD_DC_SET() GPIO_SetBits(GPIOA,GPIO_Pin_10)
复制代码 剩下的就是添加字模了,相应的驱动和软件在网上都可以down到的。在main函数中调用相应的函数
+ W" K! N2 Z& N+ X! w! v$ W! M- LCD_Print(0,0,lcdword,TYPE16X16,TYPE8X16);
复制代码 效果如图所示:% k. r6 Z- o" h$ l/ p) ^9 w
+ \& J) f: Z0 m' u% q, U4 T. i ? |