初级会员

- 积分
- 143
- 金钱
- 143
- 注册时间
- 2016-11-15
- 在线时间
- 16 小时
|
程序是模板程序,自己抑制到同系列f407的最小系统板子上,因为最小系统板子没有PG15,就把这个引脚重新定义为PB8.下载后,OLED正常显示,但是在复位后,或者重新上电后,OLED就黑屏了。////////////////////////////////////////////////OLED.h///////////////////////////////////////////////////////
//-----------------OLED¶Ë¿ú¶¨òå----------------
#define OLED_CS PBout(7)
#define OLED_RST PBout(8)
#define OLED_RS PDout(6)//RS==DC;
#define OLED_WR PAout(4)
#define OLED_RD PDout(7)
//ê1óÃ4Ïß′®DD½ó¿úê±ê1óÃ
#define OLED_SCLK PCout(6)//D0
#define OLED_SDIN PCout(7)//D1
#define OLED_CMD 0 //D′Ãüáî
#define OLED_DATA 1 //D′êy¾Y
//OLED¿ØÖÆóÃoˉêy
void OLED_WR_Byte(u8 dat,u8 cmd);
void OLED_Display_On(void);
void OLED_Display_Off(void);
void OLED_Refresh_Gram(void);
void OLED_Init(void);
void OLED_Clear(void);
void OLED_DrawPoint(u8 x,u8 y,u8 t);
void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);
void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size);
#endif
/////////////////////////////////////////oled.c/////////////////////////////////////////////
void OLED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOG, ENABLE);//ê1ÄüPORTA~E,PORTGê±Öó
#if OLED_MODE==1 //ê1óÃ80802¢¿úÄ£ê½
//GPIO3õê¼»ˉéèÖÃ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7 |GPIO_Pin_8;
GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11;
GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOD, &GPIO_InitStructure);//3õê¼»ˉ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5;
GPIO_Init(GPIOE, &GPIO_InitStructure);//3õê¼»ˉ
//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
//GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉ
OLED_WR=1;
OLED_RD=1;
#else //ê1óÃ4ÏßSPI ′®¿úÄ£ê½
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 |GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_Init(GPIOD, &GPIO_InitStructure);//3õê¼»ˉ
//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
//GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉ
OLED_SDIN=1;
OLED_SCLK=1;
#endif
只修改这两处;
|
|