STM32F103ZE移植STemWin532

1. 新建目录
STemWinLibrary532
-->inc   // 拷贝 STemWin_Library_V1.2.0\Libraries\STemWinLibrary532\inc下的全部文件。
-->Lib   // 拷贝 STemWin_Library_V1.2.0\Libraries\STemWinLibrary532\Lib\STemWin532_CM3_Keil.lib
STemWinConf
// 拷贝 STemWin_Library_V1.2.0\Libraries\STemWinLibrary532\OS\GUI_X.c
// 拷贝 STemWin_Library_V1.2.0\Libraries\STemWinLibrary532\Config下的
//     GUIConf.c、GUIConf.h、LCDConf_FlexColor_Template.c、LCDConf_FlexColor_Template.h
// 将这5个文件的属性改为读写。将LCDConf_FlexColor_Template.c改为LCDConf.c
// 将LCDConf_FlexColor_Template.h改为LCDConf.h
2. 新建Keil工程,将上述*.c和*.lib添加到工程中。
3. GUIConf.c
   a. #define GUI_NUMBYTES  0x200000
      定义STemWin使用内部大小。根据自己单片机内存大小修改。STM32F103ZE 有64K ram。
      我定义#define GUI_NUMBYTES  1024*10  // 10K RAM
   b. GUI_SetDefaultFont(GUI_FONT_8X16);
      // 修改默认字体大小
4. LCDConf.c
a. #define XSIZE_PHYS  240 // To be adapted to x-screen size
            #define YSIZE_PHYS  320 // To be adapted to y-screen size
   // 定义屏幕的大小。
b. 添加LCD FSMC 接口定义
/* LCD /CS is NE4 - Bank 4 of NOR/SRAM Bank 1~4                     */
#define LCD_BASE   (0x60000000UL | 0x0C000000UL)
#define LCD_REG16  (*((volatile U16 *)(LCD_BASE  ))) 
#define LCD_DAT16  (*((volatile U16 *)(LCD_BASE+2)))

c. 添加读写函数实现
static void LcdWriteReg(U16 Data) {
 // ... TBD by user
 LCD_REG16 = Data;
}

static void LcdWriteData(U16 Data) {
 // ... TBD by user
LCD_DAT16 = Data;
}

static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
 while (NumItems--) {
   // ... TBD by user
 LCD_DAT16 = *pData++;
 }
}

static void LcdReadDataMultiple(U16 * pData, int NumItems) {
 while (NumItems--) {
   // ... TBD by user
 *pData++ = LCD_DAT16;
 }
}
d. Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;
GUI_SWAP_XY: X轴Y轴交换,横屏/竖屏
GUI_MIRROR_Y:Y轴镜像
GUI_MIRROR_X:X轴镜像
e. GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66708, GUIDRV_FLEXCOLOR_M16C0B16); 
在STemWin532.pdf文档中搜索GUIDRV_FlexColor_SetFunc函数使用说明。
GUIDRV_FLEXCOLOR_F66708:支持的LCD驱动器列表。
我的驱动器是 SSD1289 所以选择 GUIDRV_FLEXCOLOR_F66702
GUIDRV_FLEXCOLOR_M16C0B16:仔细看文档介绍。
f. int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData)
//添加单片机FSMC和IO口初始化。和LCD驱动器的初始化。。
5. GUIConf.h
//添加颜色定义
#ifndef GUI_USE_ARGB
 #define GUI_USE_ARGB 1
#endif

#define GUI_DEFAULT_FONT          &GUI_FONT_8X16

//修改默认字体

6. 打开CRC
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);


7. 代码事例 main.c

#include "stm32f10x.h"

#include "GUI.h"


int main(void)
{
int i = 0;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
GUI_Init();
for(i=50000;i>0;i--);
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_SetFont(GUI_FONT_8X13_1);
GUI_DispString("www.segger.com\nhello world!\n");


for(i = 0; i < 50; i += 5){
GUI_DrawCircle(160,120, i);
}

while (1) {
for(i=50000;i>0;i--);
}
}

你可能感兴趣的:(STM32F103ZE移植STemWin532)