自從在Arduino IDE 下跑通了STM32的閃燈程序之后 (http://www.reibang.com/p/8a8d4cba910f)螃诅,點亮OLED屏幕應該也是小CASE燃乍,遺憾的是還是折騰了好幾個小時,最終才搞定高镐。
用的STM32F401CxUx芯片色鸳,OLED是SSD1306芯片的128x32點陣屏幕
首先在Arduino IDE下載Wire庫和SSD1306Ascii庫航唆。
代碼如下:
// Simple I2C test for ebay 128x32 oled.
#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
// 0X3C+SA0 - 0x3C or 0x3D
#define I2C_ADDRESS 0x3C
// Define proper RST_PIN if required.
#define RST_PIN -1
SSD1306AsciiWire oled;
//------------------------------------------------------------------------------
void setup() {
Wire.setSDA(PB7);
Wire.setSCL(PB6);
Wire.begin();
Wire.setClock(800000L); //fast clock
#if RST_PIN >= 0
oled.begin(&Adafruit128x32, I2C_ADDRESS, RST_PIN);
#else // RST_PIN >= 0
oled.begin(&Adafruit128x32, I2C_ADDRESS);
#endif // RST_PIN >= 0
oled.setFont(Adafruit5x7);
oled.clear(); //clear display
oled.set2X(); //double-line font size - better to read it
oled.println("Welcome!"); //print a welcome message
oled.println("SSD306"); //print a welcome message
delay(3000);
}
//------------------------------------------------------------------------------
void loop() {}
程序中關鍵的一句是:
Wire.setSDA(PB7);
Wire.setSCL(PB6);
設置SDA和SCL引腳仔雷。看到STM32F401的手冊上有這樣一段:
把引腳接到I2C2 (PB10/PB3) I2C3(PA8/PB4)也是可以的葛碧。
例如:
Wire.setSDA(PB3);
Wire.setSCL(PB10);
或:
Wire.setSDA(PB4);
Wire.setSCL(PA8);
編譯借杰,上傳。成功點亮OLED进泼。