STM32F10x 系列单片机 在RAM中 运行程序
STM32F10x系列单片机可以在ram中运行程序,这可以方便调试。下面我们主要学习该如何让该单片机在RAM中运行程序。
1.拷贝一个例程
2.keil软件的具体设置步骤
2.2进入keil option for tatget窗口
2.2在keil option for tatget 窗口中device选项卡中选择对应的芯片型号
2.3 根据具体芯片的RAM的大小在target选项卡中分配程序空间和变量空间的大小。本例子中我们按照对半分,实际可以项目情况而定。
2.4 去掉 1 处复选框,根据之前分配好的空间在2处修改程序连接地址。
2.5 在2处修改完连接地址后,勾选1处的复选框。
2.6 在keil以下目录找到RAM.ini文件 安装路径\ARM\Flash_Template\Test下RAM.ini
/******************************************************************************/
/* RAM.INI: RAM Initialization File */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools. */
/* Copyright (c) 2010 Keil - An ARM Company. All rights reserved. */
/* This software may only be used under the terms of a valid, current, */
/* end user licence from KEIL for a compatible version of KEIL software */
/* development tools. Nothing else gives you the right to use this software. */
/******************************************************************************/
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
}
LOAD %L INCREMENTAL // Download
Setup(); // Setup for Running
g, main
2.6.1将RAM.ini中LOAD %L INCREMENTAL 的% L替换成路径+工程名.axf,并保存,RAM.ini存放的位置不同其中的路径也不同,在本例中修改为LOAD .\Obj\LED.axf INCREMENTAL,其中.表示当前路径。
2.7进入Debug选项卡,将刚刚修改好的的RAM.ini添加到初始化文件列表中,并取消1处复选框
2.8 补充说明RAM.ini 以下三句中是可以注释掉的。
2.8.1第一句 _WDWORD(0xE000ED08, 0x20000000);这一句是设置中断向量表的偏移,在STM32中可以用以下两种方法替代,第一种方法是在C/C++选项卡中的define 中定义VECT_TAB_SRAM宏,另外一种方法是在应用程序的main函数前添加以下语句NVIC_SetVectorTable(NVIC_VECTTABLE_RAM, 0);其中NVIC_VECTTABLE_RAM=0x20000000。
第二句为LOAD %L INCREMENTAL 。第三句为g, main。
2.9点击setting进入下载设置
2.10 在1处 选择Do not erase RAM,RAM编程不需要先擦除,在2处设置分配后的RAM存储地址,点击3处,在4处设置程序的开始地址和大小。