STM32F10x 系列单片机 在RAM中 运行程序

STM32F10x 系列单片机 在RAM中 运行程序

STM32F10x系列单片机可以在ram中运行程序,这可以方便调试。下面我们主要学习该如何让该单片机在RAM中运行程序。

1.拷贝一个例程

2.keil软件的具体设置步骤

2.2进入keil option for tatget窗口
STM32F10x 系列单片机 在RAM中 运行程序_第1张图片
2.2在keil option for tatget 窗口中device选项卡中选择对应的芯片型号
STM32F10x 系列单片机 在RAM中 运行程序_第2张图片
2.3 根据具体芯片的RAM的大小在target选项卡中分配程序空间和变量空间的大小。本例子中我们按照对半分,实际可以项目情况而定。
STM32F10x 系列单片机 在RAM中 运行程序_第3张图片
STM32F10x 系列单片机 在RAM中 运行程序_第4张图片
2.4 去掉 1 处复选框,根据之前分配好的空间在2处修改程序连接地址。
STM32F10x 系列单片机 在RAM中 运行程序_第5张图片

2.5 在2处修改完连接地址后,勾选1处的复选框。
STM32F10x 系列单片机 在RAM中 运行程序_第6张图片
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处复选框
STM32F10x 系列单片机 在RAM中 运行程序_第7张图片
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。
STM32F10x 系列单片机 在RAM中 运行程序_第8张图片

2.9点击setting进入下载设置
STM32F10x 系列单片机 在RAM中 运行程序_第9张图片
2.10 在1处 选择Do not erase RAM,RAM编程不需要先擦除,在2处设置分配后的RAM存储地址,点击3处,在4处设置程序的开始地址和大小。
STM32F10x 系列单片机 在RAM中 运行程序_第10张图片

你可能感兴趣的:(STM32F10x 系列单片机 在RAM中 运行程序)