|
现象:程序可以运行,但是输出GUI_DispString()的是乱码
芯片:STM32F207ZGT
液晶:3.2英寸 芯片SSD1289(id=0x8989)
emwin版本5.22
1.液晶的驱动应该是对的,已经实现了BMP图片的显示和外挂中文字库
2.官方文档说SSD1289的驱动应当配置GUIDRV_CompactColor_16,但是搜索了5.22整个包后没有发现这个文件,
并且在网上找到有人(见4博客)用GUIDRV_FLEXCOLOR,成功驱动SSD1289,故下面的程序都是GUIDRV_FLEXCOLOR。
3.参照野火的教程,移植了emwin,出现乱码
4.参照这篇的博客 http://blog.sina.com.cn/s/blog_6e230f020102v3aq.html
修改官方模板STM322xG-EVAL,结果同3
5.源码修改
修改部后面我都加了 //modify
#define GUI_NUMBYTES 1024*50 //modify
#define GUI_BLOCKSIZE 0x80 //modify
void GUI_X_Config(void) {
//
// 32 bit aligned memory area
//
static U32 aMemory[GUI_NUMBYTES / 4];
//
// Assign memory to emWin
//
GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
//
// Set default font
//
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //modfiy
GUI_SetDefaultFont(GUI_FONT_6X8);
}
#define LCD_BASE ((u32)(0x60000000 | 0x0C000000)) //modfiy
#define LCD ((LCD_TypeDef *) LCD_BASE) //modfiy
#define LCD_REG_ADDRESS (*(volatile u16*)LCD_BASE) //modfiy
#define LCD_DATA_ADDRESS (*(volatile u16*)(LCD_BASE + 2)) //modfiy
LCD读写操作就不贴了,因为有显示BMP图片程序验证过了
void LCD_X_Config(void) {
GUI_DEVICE * pDevice;
CONFIG_FLEXCOLOR Config = {0};
GUI_PORT_API PortAPI = {0};
//
// Set display driver and color conversion
//
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
//
// Display driver configuration, required for Lin-driver
//
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
//
// Orientation
//
Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y; //modify
Config.NumDummyReads = 2; //modify
GUIDRV_FlexColor_Config(pDevice, &Config);
//
// Set controller and operation mode
//
PortAPI.pfWrite16_A0 = LcdWriteReg;
PortAPI.pfWrite16_A1 = LcdWriteData;
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
PortAPI.pfReadM16_A1 = LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice, & ortAPI, GUIDRV_FLEXCOLOR_F66702, GUIDRV_FLEXCOLOR_M16C0B16); //modify
}
int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData)
这个驱动也不贴了,正常的,初始化后2次刷屏操作,都可以实现
CRC时钟肯定也是开了
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
emwin时钟源,用的ucos iii,直接加在了系统时钟中断里~~~
emwin自带的ucos的接口文件也试过了,同样效果无区别
现在不知道怎么办好了,没有思路,有哪位兄台有经验的,还望赐教,不胜感激!
|
|