zi约 发表于 2017-8-6 17:14:32

你用的什么芯片???我的是STM32F031的,我的RAM地址跟你的不一样。。。

zi约 发表于 2017-8-6 17:18:34

zhao.zhao 发表于 2017-8-6 17:11
我刚试过,完全没问题,不过我试的是个小程序,全局变量很少,堆栈也不大,在写之前,0x20001000-0x20001ff ...

怎么判断堆栈小了,我程序可能有点大,不过我前面加大堆栈调试过还是一样。。。

zhao.zhao 发表于 2017-8-6 17:18:46

zhao.zhao 发表于 2017-8-6 17:26:16

你可能理解错了,你的全局变量+静态变量+堆栈+系统占用(大概有300多个字节)要小于0x1000个字节,要不可能会被中途改了。所以最好不要直接这样操作内存,你可以开个数组,让系统帮你来分配内存,这样相对要安全很多

zhao.zhao 发表于 2017-8-6 17:27:33

我的是STM32F407ZET6

zi约 发表于 2017-8-7 08:10:13

zhao.zhao 发表于 2017-8-6 17:27
我的是STM32F407ZET6

最后这边是把RAM——END调到0x20000900以下就不进错误,往上就进错误,可这边的RAM是0x20000000到0x20000fff..

zi约 发表于 2017-8-7 08:11:55

toofree 发表于 2017-8-5 17:47


最后这边是把RAM——END调到0x20000900以下就不进错误,往上就进错误,可这边的RAM是0x20000000到0x20000fff

cuyebiren 发表于 2017-8-7 08:54:07

zi约 发表于 2017-8-7 08:11
最后这边是把RAM——END调到0x20000900以下就不进错误,往上就进错误,可这边的RAM是0x20000000到0x20000 ...

看你意思应该是0X20000000-0X20000900被分配到了堆栈区,而直接操作这个区是非法的。。。你可以试试把起始地址改为堆栈结束地址(启动文件有堆栈大小)之前和之后看结果

zi约 发表于 2017-8-7 10:15:00

cuyebiren 发表于 2017-8-7 08:54
看你意思应该是0X20000000-0X20000900被分配到了堆栈区,而直接操作这个区是非法的。。。你可以试试把起 ...

现在是从0x20000000到0x20000900不进异常中断,而0x20000000到0x20000ffc就有问题,我理解你的意思是把起始地址0x20000000改为另一个地址,是这个意思吗???

zhao.zhao 发表于 2017-8-7 18:38:49

0x2000_0000 开始是不能修改的,这里开始的是全局变量、系统变量、堆栈区。原来的0x2000_1000 开始倒是可能的,因为这个区域已经跨过了前面讲的3个区域了。
页: 1 2 3 [4] 5
查看完整版本: 求大神帮我解决调试问题