硬汉嵌入式论坛

 找回密码
 立即注册
查看: 854|回复: 8
收起左侧

[GUI] STemWin字库读取异常

[复制链接]

29

主题

103

回帖

190

积分

初级会员

积分
190
发表于 2024-11-20 08:45:38 | 显示全部楼层 |阅读模式
STemWin5.22版本字库软件制作的字库,在STemWin5.44版本使用,加载字库正常,建立字库时,字库读取长度只有0x12字节,第一次遇见这情况,是因为版本的问题吗?求大佬指点
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-11-20 09:45:17 | 显示全部楼层
用的什么方式操作的,贴带代码或者配置看下
回复

使用道具 举报

29

主题

103

回帖

190

积分

初级会员

积分
190
 楼主| 发表于 2024-11-20 23:00:31 | 显示全部楼层
/* 微软雅黑16点阵定义 */
#define                   XBF_Font16BaseAdd    0x00000000
GUI_XBF_DATA         XBF_Data16;
GUI_FONT             XBF_Font16;
void                 *Fontfile16;

/* 微软雅黑24点阵定义 */
#define                   XBF_Font24BaseAdd    0x0015CCDA
GUI_XBF_DATA         XBF_Data24;
GUI_FONT             XBF_Font24;
void                 *Fontfile24;


/* 微软雅黑32点阵定义 */
#define                   XBF_Font32BaseAdd    0x003D45CC
GUI_XBF_DATA         XBF_Data32;
GUI_FONT             XBF_Font32;
void                 *Fontfile32;


/*
*********************************************************************************************************
*  函 数 名: _cbGetData32
*  功能说明: XBF 字体的回调函数, 32 点阵
*  形          参: Off - 地址偏移
*                           NumBytes - 需要读出的字节数
*                           pVoid - 指针变量,一般用于带文件系统时的 FIL 类型变量
*                           pBuffer - 获取字体的点阵数据
*  返 回 值: 0 表示成功 1 表示失败
*********************************************************************************************************
*/
static int _cbGetData16(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
        /* 读取点阵数据 */
        W25QXX_Read(pBuffer, XBF_Font16BaseAdd + Off, NumBytes);
        return 0;
}

/*
*********************************************************************************************************
*  函 数 名: _cbGetData16
*  功能说明: XBF 字体的回调函数, 16 点阵
*  形          参: Off - 地址偏移
*                           NumBytes - 需要读出的字节数
*                           pVoid - 指针变量,一般用于带文件系统时的 FIL 类型变量
*                           pBuffer - 获取字体的点阵数据
*  返 回 值: 0 表示成功 1 表示失败
*********************************************************************************************************
*/
static int _cbGetData24(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
        /* 读取点阵数据 */
        W25QXX_Read(pBuffer, XBF_Font24BaseAdd + Off, NumBytes);
        return 0;
}

/*
*********************************************************************************************************
*  函 数 名: _cbGetData24
*  功能说明: XBF 字体的回调函数, 24 点阵
*  形          参: Off - 地址偏移
*                           NumBytes - 需要读出的字节数
*                           pVoid - 指针变量,一般用于带文件系统时的 FIL 类型变量
*                           pBuffer - 获取字体的点阵数据
*  返 回 值: 0 表示成功 1 表示失败
*********************************************************************************************************
*/
static int _cbGetData32(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
        /* 读取点阵数据 */
        W25QXX_Read(pBuffer, XBF_Font32BaseAdd + Off, NumBytes);
        return 0;
}







/*
*********************************************************************************************************
*  函 数 名: GUI_SetXBF
*  功能说明: 创建 XBF 字体
*  形          参: 无
*  返 回 值: 无
*********************************************************************************************************
*/
static void GUI_SetXBF(void)
{
        /* 创建 32 点阵字体 */
        GUI_XBF_CreateFont(&XBF_Font16,                 /* GUI_FONT 类型变量 */
                                                &XBF_Data16,                 /* GUI_XBF_DATA 类型变量 */
                                                GUI_XBF_TYPE_PROP,         /* 字体类型 */
                                                _cbGetData16,                 /* 回调函数 */
                                                &Fontfile16);                 /* 回调函数参数 */
       
        /* 创建 16 点阵字体 */
        GUI_XBF_CreateFont(&XBF_Font24,                 /* GUI_FONT 类型变量 */
                                                &XBF_Data24,                 /* GUI_XBF_DATA 类型变量 */
                                                GUI_XBF_TYPE_PROP,         /* 字体类型 */
                                                _cbGetData24,                 /* 回调函数 */
                                                &Fontfile24);                 /* 回调函数参数 */
       
        /* 创建 24 点阵字体 */
        GUI_XBF_CreateFont(&XBF_Font32,                 /* GUI_FONT 类型变量 */
                                                &XBF_Data32,                 /* GUI_XBF_DATA 类型变量 */
                                                GUI_XBF_TYPE_PROP,         /* 字体类型 */
                                                _cbGetData32,                 /* 回调函数 */
                                                &Fontfile32);                 /* 回调函数参数 */
       

}

这个是字库部分,仿真时_cbGetData回调函数的NumBytes形参都是0x0012
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-11-21 10:14:17 | 显示全部楼层
哼哼唧唧2022 发表于 2024-11-20 23:00
/* 微软雅黑16点阵定义 */
#define                   XBF_Font16BaseAdd    0x00000000
GUI_XBF_DATA         XBF_Data16;

反馈的是多少我还真没测试过。可能是每次仅读取一个字的点阵数据。0x0012可能不够一个16点阵汉字的数据。

你现在测试,是不是字体不正常。这几个点阵都不正常吗。
回复

使用道具 举报

29

主题

103

回帖

190

积分

初级会员

积分
190
 楼主| 发表于 2024-11-21 10:59:23 | 显示全部楼层
eric2013 发表于 2024-11-21 10:14
反馈的是多少我还真没测试过。可能是每次仅读取一个字的点阵数据。0x0012可能不够一个16点阵汉字的数据。 ...

就是字体不正常,用的处理器是H743XI,GUI是STemWin5.44版本的,就是不能用XBF字体,用了就死机了,感觉是字库读取异常,一样的程序在429上可以,尴尬很,不行了我到时候换emWin试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-11-22 09:22:25 | 显示全部楼层
哼哼唧唧2022 发表于 2024-11-21 10:59
就是字体不正常,用的处理器是H743XI,GUI是STemWin5.44版本的,就是不能用XBF字体,用了就死机了,感觉 ...

1、这个版本貌似是没有问题的,考虑换emWin试试。
2、换了也不行,得排查下SPI Flash这里的读取问题了。
回复

使用道具 举报

29

主题

103

回帖

190

积分

初级会员

积分
190
 楼主| 发表于 2024-11-22 11:20:40 | 显示全部楼层
本帖最后由 哼哼唧唧2022 于 2024-11-22 11:21 编辑
eric2013 发表于 2024-11-22 09:22
1、这个版本貌似是没有问题的,考虑换emWin试试。
2、换了也不行,得排查下SPI Flash这里的读取问题了。

好的,我试试,谢谢!Flash驱动是一直在用的,应该不会有错,我换个版本试试
回复

使用道具 举报

29

主题

103

回帖

190

积分

初级会员

积分
190
 楼主| 发表于 2024-12-9 08:47:14 | 显示全部楼层
哼哼唧唧2022 发表于 2024-11-22 11:20
好的,我试试,谢谢!Flash驱动是一直在用的,应该不会有错,我换个版本试试

问题找到了,是我用A板子的工程,修改用到B板子上,在修改LCD驱动的时候,LCD和QSPI的时钟引脚重叠了,我漏修改了,导致QSPI读写异常
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-10 07:57:32 | 显示全部楼层
哼哼唧唧2022 发表于 2024-12-9 08:47
问题找到了,是我用A板子的工程,修改用到B板子上,在修改LCD驱动的时候,LCD和QSPI的时钟引脚重叠了,我 ...

好的,解决了就好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 03:40 , Processed in 0.041799 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表