申请原创@21ic小管家
默认已经安装MDK5,接着安装cpu支持包:
连接好硬件之后,打开一个工程进入魔术棒设置,出现图示信息,表示可以下载调试:
将OLED文件夹添加到工程,并且将头文件添加到工程:
修改void OLED_Init(void)初始化函数:
GPIO_Config_t config;
config.pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; /* ??GPIOA_PIN9 */
config.dir = GPIO_DIRECTION_OUT; /* 输出*/
config.mode = GPIO_OTYPE_PP; /* 推挽模式 */
config.pu = GPIO_PULL_UP; /* 上拉 */
config.analog = GPIO_DIGITAL; /* 数字IO模式 */
GPIO_Init(GPIOB, &config);
GPIO_SetBit(GPIOB, GPIO_PIN_8);
GPIO_ResetBit(GPIOB, GPIO_PIN_9);
config.pin = GPIO_PIN_6|GPIO_PIN_7;
config.dir = GPIO_DIRECTION_OUT;
config.mode = GPIO_OTYPE_OD; /* 开漏模式 */
config.pu = GPIO_PULL_UP;
config.analog = GPIO_DIGITAL;
GPIO_Init(GPIOB, &config);
将PB6789作为OLED接口,P8、9作为电源输入PB6、7作为I2C的SDA和SCL
#define OLED_SCL_Clr() GPIO_ResetBit(GPIOB, GPIO_PIN_7);//SCL
#define OLED_SCL_Set() GPIO_SetBit(GPIOB, GPIO_PIN_7);
#define OLED_SDA_Clr() GPIO_ResetBit(GPIOB, GPIO_PIN_6);//DIN
#define OLED_SDA_Set() GPIO_SetBit(GPIOB, GPIO_PIN_6);
在合适位置调用GPIOB时钟初始化函数:
RCC_AHBPeriphEnable(RCC_AHB_PERIPH_GPIOB, ENABLE);
之后按照出现error和警告提示逐个修改,在main中写OLED设置函数:
OLED_Init();
OLED_ColorTurn(0);//0正常显示,1 反色显示
OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
while (TRUE) {
OLED_Refresh();
Delay_ms(200);
OLED_Clear();
OLED_ShowChinese(0,0,0,16,1);//中
OLED_ShowChinese(18,0,1,16,1);//景
OLED_ShowChinese(36,0,2,16,1);//园
OLED_ShowChinese(54,0,3,16,1);//电
OLED_ShowChinese(72,0,4,16,1);//子
OLED_ShowChinese(90,0,5,16,1);//技
OLED_ShowChinese(108,0,6,16,1);//术
OLED_ShowString(8,16,"ZHONGJINGYUAN",16,1);
OLED_ShowString(20,32,"2014/05/01",16,1);
OLED_ShowString(0,48,"ASCII:",16,1);
OLED_ShowString(63,48,"CODE:",16,1);
OLED_Refresh();
Delay_ms(200);
OLED_Clear();
OLED_ShowChinese(0,0,0,16,1); //16*16 中
OLED_ShowChinese(16,0,0,24,1); //24*24 中
OLED_ShowChinese(24,20,0,32,1);//32*32 中
OLED_ShowChinese(64,0,0,64,1); //64*64 中
OLED_Refresh();
Delay_ms(200);
OLED_Clear();
OLED_ShowString(0,0,"ABC",8,1);//6*8 “ABC”
OLED_ShowString(0,8,"ABC",12,1);//6*12 “ABC”
OLED_ShowString(0,20,"ABC",16,1);//8*16 “ABC”
OLED_ShowString(0,36,"ABC",24,1);//12*24 “ABC”
OLED_Refresh();
Delay_ms(200);
OLED_ScrollDisplay(11,4,1);}
最后给出调试图片:
|