你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
紧急求助,关于不使用外部SRAM时startup文件的修改
[复制链接]
豆包必胜
提问时间:2016-6-30 11:12 /
求助各位大神,小弟刚接触STM32两个月,以前是搞DSP C2000的,现在碰到一个难题:在网上例程的基础上编写自己的控制程序,现在编译没有问题,但在调试过程中发现有一些代码被跳过不执行,问了其他同事,他说是启动文件中设置指向外部SRAM,但我的硬件是最小系统,没有使用外部SRAM,我用的是STM32F103VET6,上几张启动文件的截图,如下:
谢谢了!!!
赞
0
收藏
1
评论
6
分享
发布时间:2016-6-30 11:12
举报
请先
登录
后回复
6个回答
yanhaijian
回答时间:2016-6-30 11:33:13
a0a.1 32b0c
把SystemInit_ExtMemCtl函数里面的内容全部清掉看看。
赞
0
评论
回复
支持
反对
zero99
回答时间:2016-7-1 18:06:51
a0a.1 32b0c
网友你好,你的问题明天将签到推荐,敬请关注
赞
0
评论
回复
支持
反对
myfocus-2048857
回答时间:2016-7-2 10:06:34
a1024a.1 32b0c
看帖学习
赞
0
评论
回复
支持
反对
wenyangzeng
回答时间:2016-7-2 10:17:00
a0a.1 32b0c
代码被跳过不执行有可能是你编译的优化等级太高所致。因为如果是使用外部存储器,编译时应该会报错。
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
赞一个!
查看全部评分
赞
0
评论
回复
支持
反对
huaiqiao
回答时间:2016-7-2 21:32:21
a0a.1 32b0c
首先,你要看清楚,即便 是F1的片子,F103VET6,F103c8T6他们的启动文件是不同的哦。这个你一定要选择正确哦。
其次,如果要用标准外设库,用V3.5的好像多一些。
如果怀疑是启动文件的问题,那么你要查看你的启动文件是否选择对了么?
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
很给力!
查看全部评分
赞
0
评论
回复
支持
反对
ppaaddss
回答时间:2016-7-5 08:24:27
a0a.1 32b0c
讲道理!
首先 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
如果不是这个原因,那我也不清楚了!
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
其次,如果要用标准外设库,用V3.5的好像多一些。
如果怀疑是启动文件的问题,那么你要查看你的启动文件是否选择对了么?
评分
查看全部评分
首先 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
如果不是这个原因,那我也不清楚了!
评分
查看全部评分