stm32 51让单片机项目运行在内存中 stm32 51让单片机项目运行在内存中
注意:
RAM要查询芯片手册,找到其容量,而工程固件(hex)文件不要大于RAM的容量。。。
1 三种启动模式,根据说明配置相应引脚的电平。 2
2 Project manager 里面增加一个编译目标选项 2
3 选择编译目标选项3
4 进行内存配置4
41 Output 配置: 5
5 添加宏定义 VECT_TAB_SRAM(中断向量搬移到 SRAM)/逗号要加上。6
6 勾选相关选项7
7 debug 页面勾选 Load Application at Startup(如果取消勾选此选项则 Debug 时打断点无效,即 不能真正的仿真调试,建议勾选)并在 Initialization File 添加文件8
71 注意 9
72 Debug 选项的其它默认配置:10
8 程序下载相关配置12
9 Utilities 页面,勾选 Update Target before Debugging。 13
91 注意 14
10 保存工程14
11 编译工程(0 错误 0 警告) 15
12 板子和电脑用 ST-Link v2 连接好 16
13 首次上电使用需下载程序到板子上(显示 ok) 16
14 进入 DeBug 17
15 效果 18
16 调试完成而最终产品定型时---把引脚转换成 FLASH 启动及相关配置 20
1. 三种启动模式,根据说明配置相应引脚的电平。(这里选择 SRAM 即 RAM 启动需 BOOT0
和 BOOT1 皆为高电平/记得加电阻限流)
2.Projectmanager里面增加一个编译目标选项
3.选择编译目标选项
4.进行内存配置
4.1Output配置:
5.添加宏定义 VECT_TAB_SRAM(中断向量搬移到SRAM)/逗号要加上。
6.勾选相关选项
7.debug页面勾选 LoadApplicationatStartup(如果取消勾选此选项则 Debug时打断点无效,
即不能真正的仿真调试,建议勾选)并在 InitializationFile添加文件 | 文件内容如下: |
|
| FUNC void Setup (void) { SP = _RDWORD(0x20000000); //设置堆栈指针 PC = | _RDWORD(0x20000004); //设置 PC 指针 _WDWORD(0xE000ED08, 0x20000000); //设置 | 中断向量表地址 } //工程配置选项请勾选"Load Application arStartup" |
|
| LOAD ..\Objects\led.axf INCREMENTAL // 装 载 代 码 到 CPU 内 部 | RAM(Objects\led.axf 自己工程的路径和文件名) Setup(); //再调用 Setup 函数修改 | 堆栈指针和 PC 指针 因为 SP 的值要从目标代码中读取 g, main //运行到 main 函数 |
|
文件里面的 Objects\led.axf 需要更换成你的编译输出目录和文件名,参考第 4 步 Output 配置部分。
7.1注意:如若取消勾选 LoadApplicationatStartup选项则 debug时打的断点将失去作用。
7.2 Debug 选项的其它默认配置:
8.程序下载相关配置
9.Utilities页面,勾选 UpdateTargetbeforeDebugging。
9.1注意:如若不勾选 Update Target before Debugging 则每次更改完程序后要重新下载程序到
芯片内才能使用 DEBUG 调试。
10.保存工程
11.编译工程(0错误 0警告)
12.板子和电脑用 ST-Linkv2连接好
13.首次上电使用需下载程序到板子上 (显示 ok)
首次上电使用需下载。若勾选了 Update Targetbefore Debugging(第 9 步)中途更改过代码但没 断过电源则无需下载亦能 debug
14.进入 DeBug
15.效果 (成功了,当把电源拔掉时数据丢失,即成功把程序下载到 SRAM中运 行了,调试时应该多使用此方法以减少烧录 flash的次数 延长芯片 flash的寿 命的效果。当调试完成而最终产品定型时记得把引脚转换成 FLASH启动 ...)
16.调试完成而最终产品定型时---把引脚转换成FLASH启动及相关配置...
以上图文的pdf格式文档下载(内容和本网页上的一模一样,方便大家保存):
|