要使用好纳瓦特开发板,实现要做好两件事,一是安装好相应的开发工具软件如KEIL (先前只提供KEIL的例程、现在也提供了对IAR的支持),二是安装好STLINK V2驱动及虚拟串口的驱动。 图1 基于KEIL的开发环境
图2 基于IAR的开发环境
下载链接参考如下: 在安装虚拟串口驱动后,在设备管理器可见到图3的虚拟串口。 图3 虚拟串口
然后可在GPIO_demo的基础上,进行相应的移植,完成后的显示效果如图4所示。 由于OLED屏采用IIC接口,故只占用2个GPIO口即可使其工作,它与开发板的连接关系为: SCL-- PE1 、SDA-- PE0。 图4 OLED屏显示效果
使OLED屏工作的相关定义如下: #define OLED_MODE 0
#define SIZE 8
#define XLevelL 0x00
#define XLevelH 0x10
#define Max_Column 128
#define Max_Row 64
#define Brightness 0xFF
#define X_WIDTH 128
#define Y_WIDTH 64
#define OLED_SCLK_Clr() GPIO_PinClear(GPIO_PTE1);
#define OLED_SCLK_Set() GPIO_PinSet(GPIO_PTE1);
#define OLED_SDIN_Clr() GPIO_PinClear(GPIO_PTE0);
#define OLED_SDIN_Set() GPIO_PinSet(GPIO_PTE0);
#define OLED_CMD 0
#define OLED_DATA 1
OLED屏的初始化函数为: void OLED_Init(void)
{
//SSD1306
OLED_SCLK_Set();
OLED_SDIN_Set();
Delay_1ms(800);
OLED_WR_Byte(0xAE,OLED_CMD);//--display off
OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
OLED_WR_Byte(0x81,OLED_CMD); // contract control
OLED_WR_Byte(0xFF,OLED_CMD);//--128
OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
OLED_WR_Byte(0x3F,OLED_CMD);//--1/32 duty
OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
OLED_WR_Byte(0x00,OLED_CMD);//
OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
OLED_WR_Byte(0x80,OLED_CMD);//
OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode off
OLED_WR_Byte(0x05,OLED_CMD);//
OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
OLED_WR_Byte(0xF1,OLED_CMD);//
OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
OLED_WR_Byte(0x12,OLED_CMD);//
OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
OLED_WR_Byte(0x30,OLED_CMD);//
OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
OLED_WR_Byte(0x14,OLED_CMD);//
OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
}
在自定义小字库的情况下,实现相应显示界面的主程序如下: int main (void)
{
/* Perform processor initialization */
sysinit();
cpu_identify();
RTC_ConfigType sRTCConfig;
RTC_ConfigType *pRTCConfig = &sRTCConfig;
printf("\nRunning the GPIO_demo project.\n");
/* configure RTC to 1Hz interrupt frequency */
pRTCConfig->u16ModuloValue = 9;
pRTCConfig->bInterruptEn = RTC_INTERRUPT_ENABLE; /* enable interrupt */
pRTCConfig->bClockSource = RTC_CLKSRC_1KHZ; /*clock source is 1khz*/
pRTCConfig->bClockPresaler = RTC_CLK_PRESCALER_100; /*prescaler is 100*/
RTC_SetCallback(RTC_Task);
RTC_Init(pRTCConfig);
GPIO_Init(GPIOB, GPIO_PTE7_MASK, GPIO_PinOutput);
GPIO_Init(GPIOB, GPIO_PTE0_MASK, GPIO_PinOutput);
GPIO_Init(GPIOB, GPIO_PTE1_MASK, GPIO_PinOutput);
OLED_Init();
OLED_Clear();
cd11();
OLED_ShowString(32,6,"2016.7.2",16);
while (1);
}
|