先上图
代码:
OLED.h
#include "wm_hal.h" //要把原来单片机主库引用改为W806的
OLED.c
#include "WM_I2C.h"
#include "oled.h"
/*******************************************************************************
* 名 称: I2C_Init
* 功 能: I2C接口初始化
* 形 参: 无
* 返 回: 无
* 说 明: 无
* 更新日期:2021-10-16
******************************************************************************/
void I2C_Init(void)
{
hi2c.SCL_Port = GPIOA;
hi2c.SCL_Pin = GPIO_PIN_1;
hi2c.SDA_Port = GPIOA;
hi2c.SDA_Pin = GPIO_PIN_4;
HAL_I2C_Init(&hi2c);
}
/*******************************************************************************
* 名 称: OLED_WR_Byte
* 功 能: OLED写入一个数据或命令
* 形 参: Byte:数据内容;DC:命令/数据
* 返 回: 无
* 说 明: 无
* 更新日期:2021-10-16
******************************************************************************/
void OLED_WR_Byte(uint8_t Byte,uint8_t DC)
{
HAL_I2C_Write(&hi2c,OLED_ADDRESS,DC, &Byte, 1); //根据WM_I2C.h文件改了写入函数
}
main.c
#include "WM_I2C.h"
#include "oled.h"
int main(void)
{
SystemClock_Config(CPU_CLK_160M);
/*
I2C_Init();
printf("enter main\r\n");
OLED_Init();
HAL_Delay(1);
OLED_Clean();
HAL_Delay(1);
OLED_ShowString(8,1,"Hello World!");*/
while (1)
{
}
}
总结:
1、W806自带USB-TTL芯片不需要额外的编程器,方便写入
2、W806的库模仿STM32Hal库来写,对于我常使用STM32的来说,入手简单
3、当然新产品资料和库都不太完善,这可以理解,也希望官方能尽快完善。
4、有点遗憾的是:I2C好像没有硬件驱动,也没有DMA.
|