最近在捣鼓 emwin v5.28 OS 的,目前基本能够显示出 字符,但是显示的字符有黑点,
这个显示有黑点是在 rtc 的显示里面,如果初始化后就显示貌似没有,这种情况是神马问题造成的啊 ??
图片1 没有在rtc任务里显示出来的字符效果,还行
下面的图片是在rtc 任务里面显示的,有黑点或者黑条
U8 * aMemory ; // 数据类型 使用 u32,u8 结果都是一样的
aMemory = ((U8 *) (0x68000000)); // 1 这样可以
aMemory = ((U8 *) (0x68008000)); // 2 这样就不行【或为其他任意一个数值,比如,0x68180000, 0x68001000 等显示都会有黑点或者黑条】,显示就会出现黑点或者黑条的情况, 为什么啊 ???
外部的sram 是 2MByte的,应该最大是可以 到 1024*1024*2 = 0x20 0000 + 0x68000000 = 0x6820 0000,上面的使用应该是没有超出范围的吧 ???
aMemory = ((U8 *) (0x68100000)); // 地址从 0x6810 0000 开始,这样的也可以了【显示完全没有问题】。把外部sram 最后 1MByte 分配给emwin 使
用【前面的1MBye 留着解码图片音频等使用】,这是为什么啊 ?????
GUI_ALLOC_AssignMemory( (void*) aMemory, 512*1024UL); //此处的字节数最大只能够为 512x1024,不是说是按照字节算的嘛,怎么只能是512x1024,不能够 1024x1024 ????
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
emwin 底层显示函数
/*********************************************************************
*
* Local func
tions
*
**********************************************************************
*/
static void LcdWriteReg(U16 Data) {
FMC_LCD->REG = Data;
}
static void LcdWriteData(U16 Data) {
FMC_LCD->RAM = Data;
}
static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
FMC_LCD->RAM = *pData++;
}
}
static void LcdReadDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
*pData++ = FMC_LCD->RAM ;
}
}
1,驱动LCD的时序不对
2,驱动SDRAM的时序有误
一周热门 更多>