为什么我的SRAM定义超过1k多一点的数组就不正常了,不是1M空间吗

2019-07-20 18:22发布

[mw_shl_code=c,true]#include "stm32f4xx.h"
#include "fsmc.h"
#include "uart.h"
#include "delay.h"
#include <stdio.h>
int main(void)
{
        u32 i=0;
        u8 data_buf[1024+450]  __attribute__((at(0X68000000)));
        u8 *p=(u8 *)"qwertyuiop";
        NVIC_SetPriorityGrouping(7-2);
        systick_init(168);
        uart_init(115200);
        fsmc_init();
//        printf("hello ");
        for(i=0;i<1024;i++)
        {
                printf("%d ",i);
                data_buf='';
        }
        for(i=0;*p!='';i++,p++)
        {
                data_buf=*p;
        }
        while(1)
        {
                printf("%s ",data_buf);
                delay_ms(1000);
        }
}
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
aozima
1楼-- · 2019-07-20 19:59
data_buf 是局部变量,从栈上分配,与强制指定地址相冲突。
自行查阅map文件确认真相!
夜不能寐
2楼-- · 2019-07-20 21:07
定义1k+440个字节时还能1秒打印一次,定义+450就开始不停地刷,无间隔,然后定义2K直接就不打印了
夜不能寐
3楼-- · 2019-07-21 01:43
aozima 发表于 2016-12-5 11:38
data_buf 是局部变量,从栈上分配,与强制指定地址相冲突。
自行查阅map文件确认真相!

谢谢!改成全局变量就没问题了。map文件不会看啊,搜不到data_buf这个变量

一周热门 更多>