打印
[STM32F1]

用STM32F103,发现变量存储异常,程序跑乱

[复制链接]
2409|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pidnews|  楼主 | 2014-11-5 10:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用KEIL的MDK4.53,调试发现程序乱了,具体是用keil调试时发现定义在相邻的位置的变量会互相影响,比如 uint8 pcmid1;uint8 pt;用jlink单步运行调试发现,当程序运行清0时,没有进入其他程序,但pt却可能同时变成了0xff,不知道是啥问题
沙发
化雨眠66| | 2014-11-5 10:32 | 只看该作者
代码运行异常,你boot怎么设置的

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
pidnews + 2
板凳
pidnews|  楼主 | 2014-11-5 12:02 | 只看该作者
boot是用stm32内部的flash,这个启动没问题,用jlink跑程序没问题,目前是变量的问题,看异常主要集中在一个c文件里面的相邻的两个8bit变量互相影响,对了,用的是外部的sram 512k的is61lv512

使用特权

评论回复
地板
mmuuss586| | 2014-11-5 13:00 | 只看该作者
放内部RAM肯定没问题了;
看看是不是软件哪里有问题,导致外部RAM相临地址数据会出错;

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
pidnews + 2
5
pidnews|  楼主 | 2014-11-5 13:13 | 只看该作者
谢谢版主,用jlink单步调试了,看了两个单字节变量的地址在相邻位置,一个是25E,一个是25F,直接单步跟的反汇编,程序没有跑到其他地方去,也看不出软件有其他问题,其他不操作25E的指令执行时25F不变,但执行了一个将25E赋零的指令,25F开头变成4,跑回来再单步运行一次25E赋零,这次25F变成ff了,是不是要将u8改成u16才行?不过这样的话空间占的就大了

使用特权

评论回复
6
pidnews|  楼主 | 2014-11-5 13:17 | 只看该作者
mmuuss586 发表于 2014-11-5 13:00
放内部RAM肯定没问题了;
看看是不是软件哪里有问题,导致外部RAM相临地址数据会出错; ...

将变量定义u8改成了u16,即双字节的,测试没问题,难道is61lv512不能用单字节访问的?

使用特权

评论回复
7
pidnews|  楼主 | 2014-11-5 14:07 | 只看该作者
谢谢了,郁闷,是芯片装歪了,一点点连焊,拆了重装了

使用特权

评论回复
8
mmuuss586| | 2014-11-5 19:12 | 只看该作者
pidnews 发表于 2014-11-5 14:07
谢谢了,郁闷,是芯片装歪了,一点点连焊,拆了重装了

看来是硬件引起的;
学习了;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

56

帖子

0

粉丝