你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求大神帮我解决调试问题

[复制链接]
zi约 提问时间:2017-8-5 16:19 /
阅读主题, 点击返回1楼
收藏 评论41 发布时间:2017-8-5 16:19
41个回答
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
p.jpg
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

最后这边是把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被分配到了堆栈区,而直接操作这个区是非法的。。。你可以试试把起始地址改为堆栈结束地址(启动文件有堆栈大小)之前和之后看结果

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

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个区域了。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版