keil MDK5.0 SDRAM设置问题

wangji666666 2014-05-08 03:18:29
硬件平台:STM32F429I-DISCORVERY
软件平台:KEIL MDK5.0
要使用STM32F429I-DISCORVERY中的SDRAM作为内存使用(主要是让其作为堆内存使用)
看过STM32F429I-DISCORVERY套件中配置SDRAM的例子,而且有stm32f429i_discovery_sdram.c文件,但是不知道如何设置MDK。



int i,j;

class Test
{
public:
int X,Y;
Test(int x,int y)
{
X = x;
Y = y;
}
};

int main(void)
{
SDRAM_Init();

for(i = 0;i<100000;i++)
{
Test *ptest = new Test(1,1);//测试是否能在SDRAM中分配内存并且使用
}

while(1)
{

}


这个是MDK中的配置,请教如何进行设置?
...全文
869 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangji666666 2014-05-10
  • 打赏
  • 举报
回复
特意要感谢tracing大牛提供的无私帮助
wangji666666 2014-05-10
  • 打赏
  • 举报
回复
起始MDK就我上面的图设置就可以了,还要分配一下堆内存(在.s文件下点击右边窗口的Configuration Wizard,设置一下HeapSize,只要0x100就可以了,不然进不了Main函数)。 测试程序如下:


#include "stm32f4xx_conf.h"
#include "stm32f429i_discovery_sdram.h"
#include <rt_heap.h>  //_init_alloc  

#define IS42S16400J_SIZE             0x400000
#define HEAP_BASE  SDRAM_BANK_ADDR  
#define HEAP_TOP   (SDRAM_BANK_ADDR+IS42S16400J_SIZE) 

int i,j;

class Test
{
public:
    int X,Y;
    char cs[10000];
    Test(int x,int y)
    {
        X = x;
        Y = y;
    }
};

Test *ptest = 0;

int main(void)
{
//    RCC_ClocksTypeDef clock;
//    RCC_GetClocksFreq(&clock);
    SDRAM_Init();
    _init_alloc(HEAP_BASE, HEAP_TOP);    // 设置堆空间  
    int *p = new int[16000];
    
    for(i = 0;i<10000;i++)
    {
        ptest = new Test(1,1);//测试是否能在SDRAM中分配内存并且使用
        j = ptest->Y;
        //delete ptest;
    }
     
    while(1)
    {
        j++;
    }
}

当然程序会飞掉,主要是看ptest 的地址有没有达到或接近0xD0400000,如果接近了那么SDRAM作为堆内存就实验成功! 给学习的同学一点参考。
tracing 2014-05-10
  • 打赏
  • 举报
回复
参考下这篇文章 http://blog.csdn.net/hevake_lcj/article/details/7685119 我今天是特地来接分的
wangji666666 2014-05-08
  • 打赏
  • 举报
回复
自己顶下,

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧