如题,在实验12 OLED显示例程中,OLED初始化函数中,只有GPIO 初始化的部化,为什么看不到SPI初始化如SPI时钟使能函数等函数,
//初始化SSSD1306
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);//????PORTA~E,PORTG?±??
#if OLED_MODE==1 //使用8080 并口模式
//GPIO初始化设置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//???¨????????
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
GPIO_Init(GPIOA, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7 ;
GPIO_Init(GPIOB, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11;
GPIO_Init(GPIOC, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOD, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5;
GPIO_Init(GPIOE, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOG, &GPIO_InitStructure);//??????
OLED_WR=1;
OLED_RD=1;
#else //使用4线SPI模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//???¨????????
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
GPIO_Init(GPIOB, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOC, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_Init(GPIOD, &GPIO_InitStructure);//??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOG, &GPIO_InitStructure);//??????
OLED_SDIN=1;
OLED_SCLK=1;
#endif
OLED_CS=1;
OLED_RS=1;
OLED_RST=0;
delay_ms(100);
OLED_RST=1;
OLED_WR_Byte(0xAE,OLED_CMD); //??±?????
OLED_WR_Byte(0xD5,OLED_CMD); //?è???±??·????ò×?,????????
OLED_WR_Byte(80,OLED_CMD); //[3:0],·????ò×?;[7:4],????????
OLED_WR_Byte(0xA8,OLED_CMD); //?è???????·??
OLED_WR_Byte(0X3F,OLED_CMD); //????0X3F(1/64)
OLED_WR_Byte(0xD3,OLED_CMD); //?è??????????
OLED_WR_Byte(0X00,OLED_CMD); //??????0
OLED_WR_Byte(0x40,OLED_CMD); //?è???????????? [5:0],????.
OLED_WR_Byte(0x8D,OLED_CMD); //????±??è??
OLED_WR_Byte(0x14,OLED_CMD); //bit2??????/??±?
OLED_WR_Byte(0x20,OLED_CMD); //?è?????????·????
OLED_WR_Byte(0x02,OLED_CMD); //[1:0],00???????·????;01???????·????;10,?????·????;????10;
OLED_WR_Byte(0xA1,OLED_CMD); //?????¨???è??,bit0:0,0->0;1,0->127;
OLED_WR_Byte(0xC0,OLED_CMD); //?è??COM?¨?è·??ò;bit3:0,???¨????;1,???¨?????? COM[N-1]->COM0;N:?????·??
OLED_WR_Byte(0xDA,OLED_CMD); //?è??COM????????????
OLED_WR_Byte(0x12,OLED_CMD); //[5:4]????
OLED_WR_Byte(0x81,OLED_CMD); //??±????è??
OLED_WR_Byte(0xEF,OLED_CMD); //1~255;????0X7F (?????è??,???ó????)
OLED_WR_Byte(0xD9,OLED_CMD); //?è???¤????????
OLED_WR_Byte(0xf1,OLED_CMD); //[3:0],PHASE 1;[7:4],PHASE 2;
OLED_WR_Byte(0xDB,OLED_CMD); //?è??VCOMH ????±???
OLED_WR_Byte(0x30,OLED_CMD); //[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;
OLED_WR_Byte(0xA4,OLED_CMD); //????????????;bit0:1,????;0,??±?;(°×??/????)
OLED_WR_Byte(0xA6,OLED_CMD); //?è??????·???;bit0:1,·??à????;0,????????
OLED_WR_Byte(0xAF,OLED_CMD); //????????
OLED_Clear();
}
OLED_MODE==0 用的是 模拟SPI 不是硬件SPI
一周热门 更多>