这里利用WB415驱动IIC的OLED,因为便于移植,所以使用的是宏定义实现的IO口操作。
这里使用的是PC0和PC1分别与oled的scl和sda连接。
先使用宏定义实现对IO口的操作。
#define OLED_SCLK_Pin GPIO_PINS_0
#define OLED_SCLK_GPIO_Port GPIOC
#define OLED_SDIN_Pin GPIO_PINS_1
#define OLED_SDIN_GPIO_Port GPIOC
使用宏定义实现对io口的操作
#define OLED_SCLK_Clr() OLED_SCLK_GPIO_Port->clr = OLED_SCLK_Pin//SCL 拉低
#define OLED_SCLK_Set() OLED_SCLK_GPIO_Port->scr = OLED_SCLK_Pin //SCL 拉高
#define OLED_SDIN_Clr() OLED_SDIN_GPIO_Port->clr = OLED_SDIN_Pin//SDA 拉低
#define OLED_SDIN_Set() OLED_SDIN_GPIO_Port->scr = OLED_SDIN_Pin //SDA 拉高
最重要的是实现对IO口的初始化。
gpio_init_type gpio_init_struct;
/* enable the led clock */
crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
/* set default parameter */
gpio_default_para_init(&gpio_init_struct);
/* configure the led gpio */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = OLED_SCLK_Pin|OLED_SDIN_Pin;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(OLED_SDIN_GPIO_Port, &gpio_init_struct);
驱动OLED显示的代码。
OLED_Init();
OLED_Clear();
OLED_ShowStringCN(0,0,"雅特力WB415",1);
OLED_ShowStringCN(0,16,"BBS.21ic.com",1);
OLED_Refresh();
来一个显示的效果图
附上源代码
|