阿里兄 发表于 2022-12-13 10:25 嗯嗯好的谢谢 |
auqyygtj 发表于 2022-12-13 10:21 意思是你一定要读取到BUF的话,可以使用内存拷贝的函数。 就这样吧,其它问题你自己找找原因了。 |
阿里兄 发表于 2022-12-13 10:17 存的没有错误,因为我把从写入的数据读出与BIN文件比较过,确定是没有错误的,你说的一定要读取可以使用,这个条件怎么界定判断呢 |
本帖最后由 阿里兄 于 2022-12-13 10:18 编辑 auqyygtj 发表于 2022-12-13 10:10 这是你读取函数有问题,一到要读取可以使用
因为你的内存可以直接访问,所以可以直接内存拷贝; 如果是在SPI FLASH等不支持直接地址访问的,就要读到BUF,前面你使用SPI FLASH不行,肯定是读取有错或是存的时候有出错。 |
本帖最后由 auqyygtj 于 2022-12-13 10:15 编辑 阿里兄 发表于 2022-12-12 13:48 阿里兄:直接返回偏移地址可以显示,读到缓存不能显示是什么原因呢 #if 1 /*不能显示*/ FlashAdd=offset+0x8200000; for(i=0;i<size/2;i++) { tempdata=*(vu16*)FlashAdd; __g_font_buf[i*2]= (unsigned char)(tempdata); __g_font_buf[i*2+1]= (unsigned char)(tempdata>>8); FlashAdd+=2;//偏移2个字节. } return __g_font_buf; #else /*能显示*/ return (uint8_t*)(0x8200000+offset); #endif |
auqyygtj 发表于 2022-12-12 12:38 直接将BIN格式的文件通过工具转换成C数组 |
阿里兄 发表于 2022-12-12 10:23 阿里兄:你所说的把BIN文件转换成C数组是指1、将直接将BIN格式的文件通过工具转换成C数组,加入到工程中写入测试?2、同样的内容用你的字库软件重新生成一个内部数组的C文件加入到工程? |
阿里兄 发表于 2022-12-12 10:23 嗯,谢谢阿里兄!我试试 |
auqyygtj 发表于 2022-12-12 10:18 不行你就把bin文件转以C数组编译进工程,直接返回数组数据的偏移 |
admin 发表于 2022-12-11 22:50 1、offset+3145758,其中的3145758是你保存字体BIN所在的地方吗?如果是QSPI支持直接寻址,可以直接返回偏移地址即可,如SDRAM一样。这是保存在QSPI里的,显示不出来这个存储的地址,内容是全部的中文字库地址,3145758是QSPI字库的开始偏移地址(前面留了3M); 2、后面的offset+0x8200000,其中的0x8200000又是什么存储。这个是后来缩小问题原因,没有采用外部QSPI方式,采用读单片机内部地址,另搞了将原本可以显示的内部小字库内容生成BIN文件,单独写入到单片机的Flash里的2M开始地址,测试 |
1、offset+3145758,其中的3145758是你保存字体BIN所在的地方吗?如果是QSPI支持直接寻址,可以直接返回偏移地址即可,如SDRAM一样。这是保存在QSPI里的,显示不出来这个存储的地址是全部的中文字库地址,3145758是QSPI字库的偏移地址(前面留了3M); 2、后面的offset+0x8200000,其中的0x8200000又是什么存储。这个是后来缩小问题原因,另搞了将原本可以显示的内部字库内容生成BIN文件,单独写入到单片机的Flash里的2M开始地址,测试 |
auqyygtj 发表于 2022-12-11 20:35 1、offset+3145758,其中的3145758是你保存字体BIN所在的地方吗?如果是QSPI支持直接寻址,可以直接返回偏移地址即可,如SDRAM一样。 2、后面的offset+0x8200000,其中的0x8200000又是什么存储。 读取函数已经非常简单了,就是按要求返回字体BIN,按offset偏移,size大小的内容,有这么难理解吗。 |
阿里大佬帮忙看看什么原因 static uint8_t __g_font_buf[504];//如bin文件存在SPI FLASH可使用此buff extern void qspi_data_read(uint32_t addr, uint32_t total_len, uint8_t* buf); extern void AT_Flash_ReadU8(u32 FlashAdd,u8 *pBuffer,u16 Leng); //读取指定长度 static uint8_t *__user_font_getdata(int offset, int size){ //如字模保存在SPI FLASH, SPIFLASH_Read(__g_font_buf,offset,size); //如字模已加载到SDRAM,直接返回偏移地址即可如:return (uint8_t*)(sdram_fontddr+offset); // qspi_data_read(offset, size, __g_font_buf); // memset(__g_font_buf, 0, sizeof(__g_font_buf)); // AT_Flash_ReadU16(offset+0x8200000,(u16 *)&__g_font_buf,size); //读取指定长度 AT_Flash_ReadU8(offset+0x8200000,__g_font_buf,size); //读取指定长度 // printf("\r\n0x%x",__g_font_buf[0]); // printf("\r\n0x%x\r\n",__g_font_buf[1]); return __g_font_buf; } /*《已连接网络》标签*/ temp_obj = lv_label_create(CON_OBJ.Tab[SET_NET_Connect_CONT_N], NULL); // lv_obj_set_style_local_text_font (temp_obj,LV_LABEL_PART_MAIN,LV_STATE_DEFAULT, &chineseFont_Wide20); /*内部字库显示正常*/ lv_obj_set_style_local_text_font (temp_obj,LV_LABEL_PART_MAIN,LV_STATE_DEFAULT, &chineseFont_Wide20E); /*使用外部字库只能显示连接*/ lv_obj_set_style_local_text_color(temp_obj,LV_LABEL_PART_MAIN,LV_STATE_DEFAULT, lv_BackColor_blue); //文本深蓝色颜色。 lv_obj_set_style_local_text_opa (temp_obj,LV_LABEL_PART_MAIN,LV_STATE_DEFAULT, LV_OPA_100 );//文本的不透明度。默认值:LV_OPA_COVER 。 lv_label_set_text(temp_obj," 宸茶繛鎺ョ綉缁?"); /*已连接网络*/ // lv_label_set_text(temp_obj,(char *)pConv_UTF8((unsigned char *)&"已连接网络")); lv_label_set_recolor(temp_obj, true); lv_obj_set_auto_realign(temp_obj, true);//自动对齐 lv_obj_align(temp_obj,NULL,LV_ALIGN_IN_LEFT_MID,30,0); |
GMT+8, 2024-11-23 15:53 , Processed in 0.074676 second(s), 8 queries , File On.
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】