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

[复制链接]
2679|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

查看全部评分

 楼主| pidnews 发表于 2014-11-5 13:13 | 显示全部楼层
谢谢版主,用jlink单步调试了,看了两个单字节变量的地址在相邻位置,一个是25E,一个是25F,直接单步跟的反汇编,程序没有跑到其他地方去,也看不出软件有其他问题,其他不操作25E的指令执行时25F不变,但执行了一个将25E赋零的指令,25F开头变成4,跑回来再单步运行一次25E赋零,这次25F变成ff了,是不是要将u8改成u16才行?不过这样的话空间占的就大了
 楼主| pidnews 发表于 2014-11-5 13:17 | 显示全部楼层
mmuuss586 发表于 2014-11-5 13:00
放内部RAM肯定没问题了;
看看是不是软件哪里有问题,导致外部RAM相临地址数据会出错; ...

将变量定义u8改成了u16,即双字节的,测试没问题,难道is61lv512不能用单字节访问的?
 楼主| pidnews 发表于 2014-11-5 14:07 | 显示全部楼层
谢谢了,郁闷,是芯片装歪了,一点点连焊,拆了重装了
mmuuss586 发表于 2014-11-5 19:12 | 显示全部楼层
pidnews 发表于 2014-11-5 14:07
谢谢了,郁闷,是芯片装歪了,一点点连焊,拆了重装了

看来是硬件引起的;
学习了;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

56

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部