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

紧急求助,关于不使用外部SRAM时startup文件的修改

[复制链接]
豆包必胜 提问时间:2016-6-30 11:12 /
求助各位大神,小弟刚接触STM32两个月,以前是搞DSP C2000的,现在碰到一个难题:在网上例程的基础上编写自己的控制程序,现在编译没有问题,但在调试过程中发现有一些代码被跳过不执行,问了其他同事,他说是启动文件中设置指向外部SRAM,但我的硬件是最小系统,没有使用外部SRAM,我用的是STM32F103VET6,上几张启动文件的截图,如下:


谢谢了!!!
QQ截图20160630111131.png
QQ截图20160630111155.png
收藏 1 评论6 发布时间:2016-6-30 11:12

举报

6个回答
yanhaijian 回答时间:2016-6-30 11:33:13
把SystemInit_ExtMemCtl函数里面的内容全部清掉看看。
zero99 回答时间:2016-7-1 18:06:51
网友你好,你的问题明天将签到推荐,敬请关注
myfocus-2048857 回答时间:2016-7-2 10:06:34
看帖学习
wenyangzeng 回答时间:2016-7-2 10:17:00
代码被跳过不执行有可能是你编译的优化等级太高所致。因为如果是使用外部存储器,编译时应该会报错。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

huaiqiao 回答时间:2016-7-2 21:32:21
首先,你要看清楚,即便 是F1的片子,F103VET6,F103c8T6他们的启动文件是不同的哦。这个你一定要选择正确哦。
其次,如果要用标准外设库,用V3.5的好像多一些。

如果怀疑是启动文件的问题,那么你要查看你的启动文件是否选择对了么?
Snip20160703_1.png

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 很给力!

查看全部评分

ppaaddss 回答时间:2016-7-5 08:24:27
讲道理!
首先 Startup 文件里面肯定有这段代码
           LDR     R0, =SystemInit
           BLX     R0
           LDR     R0, =__main
意思就是程序运行时,要先进入SystemInit里面,才会进入main
而SystemInit这段代码都是库给你写好的(如果你没改的话)
然后我们在这个函数里面找,

#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
  SystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
意思就是如果宏定义里面定义了这2个东东,那么他就会初始化SDRAM或者SRAM

如果你确定是在开机的时候默认是初始化SDRAM的话,那肯定是这2个被定义了
首先确定代码里面有没有这个宏定义,
如果没有,那么久去KEIL编译器里面看看
Options for Target窗口,C/C++选项卡
Preprocessor Symbols 下面的 Define是否有这
DATA_IN_ExtSRAM,或者DATA_IN_ExtSDRAM

如果不是这个原因,那我也不清楚了!

评分

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

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版