STM32移植u8g2
一、资源下载及硬件资源
1.u8g2显示库在github上即可下载,u8g2下载地址,u8g2文档
2.硬件资源:(1)stm32f407zet6;(2)采用7针OLED,软件模拟4线spi,大小为128*64,驱动芯片为ssd1306,字节大小为1024
二、移植步骤
-
在工程文件里建立u8g2文件夹,用于存放u8g2的源码
-
将u8g2源码中csrc文件夹的有关文件拷贝至工程文件u8g2及USER中
u8g2文件夹详细文件
将csrc中u8g2.h及u8x8.h拷贝至USER文件夹 -
添加头文件,在oled.h中添加头文件
#include "u8g2.h"
#include "u8x8.h"
- 精简u8g2_d_memory.c和u8g2_d_setup.c,精简后如下图
u8g2_d_setup.c
#include "u8g2.h"
/* ssd1306 f */
void u8g2_Setup_ssd1306_128x64_noname_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb)
{
uint8_t tile_buf_height;
uint8_t *buf;
u8g2_SetupDisplay(u8g2, u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, byte_cb, gpio_and_delay_cb);
buf = u8g2_m_16_8_f(&tile_buf_height);
u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_vertical_top_lsb, rotation);
}
u8g2_d_memory.c
#include "u8g2.h"
uint8_t *u8g2_m_16_8_f(uint8_t *page_cnt)
{
#ifdef U8G2_USE_DYNAMIC_ALLOC
*page_cnt = 8;
return 0;
#else
static uint8_t buf[1024];
*page_cnt = 8;
return buf;
#endif
}
由于我这里用的OLED驱动芯片是SSD1