wacalei
wacalei

注册于 8 months ago

回答
0
文章
0
关注者
0

我已经找到原因了。
我将用cube生成的工程和rtt的工程对比查找,发现未定义的错误出现在ll_fsmc.c中,于是添加hal库到程序中,这里我又犯了一个错误,我把本工程中的ll_fsmc.c文件(在工程中的board文件中的cubeMX生成的hal库中)添加到了工程中,仍然报错,原因是cube生成的库版本较高,不兼容rtt,我有查看rtt工程中其他hal.c文件的来源,发现他们是在 rt-thread4.0.1\bsp\stm32\libraries\STM32F1xx_HAL\STM32F1xx_HAL_Driver\Src 中,把ll_fsmc替换成此文件夹下的即可。

Rses_001 发表于 2020-1-31 16:47
就像你截图那样,emwin这个函数就是要获得指定偏移量下的指定数量的数据
你就仿照他的写法



int APP_GetData(void * p, const U8 ** ppData, unsigned NumBytes, U32 Off) {
static char _acBuffer[250];
static U32 read_addr,temp;
int phFile;
int NumBytesRead;
phFile = *(int *)p;
//
// Check buffer size
//
if (NumBytes > sizeof(_acBuffer)) {
NumBytes = sizeof(_acBuffer);
}
//
// Set file pointer to the required position
//
if(Off == 1) read_addr = 0;
else read_addr = Off;
lseek(phFile,Off,SEEK_SET);
//
// Read data into buffer
//
NumBytesRead = read(phFile, _acBuffer, NumBytes);
//
// Set data pointer to the beginning of the buffer
//
*ppData = (const U8*)_acBuffer;
//
// Return number of available bytes
//
return NumBytesRead;
}
void emwin_test(void)
{
uint8_t x,y;
__HAL_RCC_CRC_CLK_ENABLE();
CRC_HandleTypeDef CrcHandle;
CrcHandle.Instance = CRC;
HAL_CRC_Init(&CrcHandle);
GUI_Init();
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();

/**************************************************/
int fd = open("/Pictures/bmp/-7b8598a39009aeea.bmp", O_RDONLY);
if (fd >= 0)
{
rt_kprintf("file open OK\n");
GUI_BMP_DrawScaledEx(APP_GetData,&fd,0,0,1,1);
close(fd);
rt_kprintf("close file\n");
}
else
{
rt_kprintf("file open file\n");
}
}
INIT_APP_EXPORT(emwin_test);

shell:
\ | /
- RT - Thread Operating System
/ | \ 4.0.1 build Jan 31 2020
2006 - 2019 Copyright by rt-thread team
SD file system initialization done!
[I/sensor] rt_sensor init success
[I/sensor] rt_sensor init success
file open OK
close file
msh />


如上所示,我的确这么做了。但是屏幕上并没有显示任何图片,我昨天用工具转换成流文件然后使用GUI_DrawBitmapMag这个函数显示是没问题的,至少可以排除移植驱动的问题

Rses_001 发表于 2020-1-31 15:57
你好,如果你使用了DFS,在dfs_posix.c 中有lseek函数供你调用


谢谢你,我找到了这个函数,但是从注释以及网上查询之后,我还是不太清楚这个函数在emwin getdata中如何使用?

发布
问题

分享
好友