古人云:工欲善其事,必先利其器
一、下载Pack安装包和例程
这个就去看我另外一个测评,这里就不在多说啥
pack包得安装这个
附上连接: https://www.iceasy.com/review/1900025119838572545
二、移植u8g2
oled屏幕驱动ssd1306 IIC
源码下载: https://github.com/olikraus/u8g2
下载完成之后,我们只需要这个文件
打开这个文件夹后选择我们oled的驱动,只需要保留这个u8x8_d_ssd1306_128x64_noname.c 文件其他的驱动都可以删掉
然后把这个csrc文件加入到工程里面,并且把头文件都加进去
在keil里面找到u8g2_d_setup.c这个文件,只保留u8g2_Setup_ssd1306_i2c_128x64_noname_f这个函数,其他的都可以删掉
再找到u8g2_d_memory.c文件,只保留u8g2_m_16_8_f函数
最后还得写一个回调函数,初始化的时候需要用
uint8_t u8g2_gpio_and_delay_stm32(U8X8_UNUSED u8x8_t *u8x8, U8X8_UNUSED uint8_t msg, U8X8_UNUSED uint8_t arg_int, U8X8_UNUSED void *arg_ptr)
{
switch(msg)
{
case U8X8_MSG_DELAY_MILLI://Function which implements a delay, arg_int contains the amount of ms
Delay_ms(arg_int);
break;
case U8X8_MSG_DELAY_10MICRO://Function which delays 10us
Delay_us(10);
break;
case U8X8_MSG_DELAY_100NANO://Function which delays 100ns
__NOP();
break;
case U8X8_MSG_GPIO_I2C_CLOCK:
if (arg_int) OLED_W_SCL(1);
else OLED_W_SCL(0);
break;
case U8X8_MSG_GPIO_I2C_DATA:
if (arg_int) OLED_W_SDA(1);
else OLED_W_SDA(0);
break;
default:
return 0; //A message was received which is not implemented, return 0 to indicate an error
}
return 1; // command processed successfully.
}
这样就移植完成了
三、硬件连接
OLED--------> Mini-F0121-OB
gnd -------->gnd
vcc -------->3v3
scl -------->PA0
sda -------->PA1