硬汉嵌入式论坛

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

[emWin] emWin的矢量字体显示要用到malloc函数,那么如何让堆空间使用外部SRAM的解决办法

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2015-10-1 09:27:05 | 显示全部楼层 |阅读模式
STM32F103ZET6的RAM空间仅64KB,而矢量字体非常的耗RAM空间,需要大几十KB大小。
那么就需要将这部分的空间定义到外部SRAM。emWin的矢量字体显示是通过malloc函数
从堆空间申请的。我们需要做的就是将堆空间定义到外部SRAM,设置方法如下:
=====================================================
设置堆的大小以及起始地址和结束地址


=====================================================
设置完毕后开启宏定义:


开启宏定义后需要在这里做SRAM的初始化。




================================================================
由于这部分SRAM已经被堆空间占用了,那么emWin的动态内存就不能再使用这部分空间了。
下面是一个V4开发板上面的矢量字体显示例子。
V5-522a_矢量字体_uCOS-III+STemWin5.28+FatFS(仅MDK).rar (7.44 MB, 下载次数: 232)



显示效果:
1.png




回复

使用道具 举报

9

主题

19

回帖

46

积分

新手上路

积分
46
发表于 2015-12-22 17:19:22 | 显示全部楼层
我用的是NXP的emwin522,我添加矢量库后,编译报错,少了两个函数:

void GUI__ClearTextBackground(int xDist, int yDist);
void GUI_AA__DrawCharAA8(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);

这两个函数都是在GUI_Private.h这个头文件里声明的,但是nxp的这个头文件里没有声明这俩函数,而ST的这个头文件里却声明了,我现在该如何?我试过在头文件里加上这两句的声明也不行,我换了矢量库也不行,518,526的都试了,都需要这俩函数
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
 楼主| 发表于 2015-12-23 16:08:38 | 显示全部楼层

回 chenyongand 的帖子

chenyongand:我用的是NXP的emwin522,我添加矢量库后,编译报错,少了两个函数:

void GUI__ClearTextBackground(int xDist, int yDist);
void GUI_AA__DrawCharAA8(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);

....... (2015-12-22 17:19) 
试试MDK里面自带的。
回复

使用道具 举报

36

主题

2051

回帖

2159

积分

至尊会员

积分
2159
发表于 2016-4-5 18:12:01 | 显示全部楼层
[s:151]  [s:151] [s:151] 刚好用到
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 08:05 , Processed in 0.038405 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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