这里利用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();
来一个显示的效果图
附上源代码
|