STM32内部RAM在线调试配置方法及详细说明

发布者:姑苏清风泉源客最新更新时间:2018-10-06 来源: eefocus关键字:STM32  内部RAM  在线调试  配置方法 手机看文章 扫描二维码
随时随地手机看文章

1、写在前面

本文主要讲述的内容:基于Keil开发工具下,STM32内部RAM在线调试配置方法,以及每一项配置的详细说明。

让程序运行在RAM中调试代码有两优点:1.速度快;2.减少对芯片FLASH读写次数,增加芯片寿命。

本文基于ST公司Cortex-M内核的STM32来讲述其配置方法,其实也适用于其他公司(如:TI、NXP等)的Cortex-M芯片,原理都是一样的。

第二点在本文中的作用也很大,就是使用了中断功能。由于RAM调试会牵涉到向量表,中断功能就会使用到向量表,如果没有配置正确,这里就不会响应中断,或者出错。

2、RAM调试配置方法

本节主要讲述配置方法的过程,为什么这么配置,以及配置的原理将会在下一章节讲述。

1.修改内存地址

打开目标配置:Project -> Options for Target -> Target或“工程目标配置”点击快捷按钮。

将ROM和RAM地址映射到如下图地址。 我们使用STM32F103ZE芯片,该芯片的RAM大小为0x10000即64KB,我们这里平分RAM,即各自的大小为0x5000。

注意:配置的地址范围不能超过芯片实际的大小。

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

 

2.配置向量表

 

同上,打开目标配置:Project -> Options for Target -> C/C++,使用宏定义VECT_TAB_SRAM。如下图:

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

 

这里的宏定义是为了让向量表指向RAM(我们默认是指向ROM),重要的一个目的就是让中断向量表指向RAM,上面“代码功能”中断的意义就是为了验证向量表的正确性。

 

注意:这里的宏定义是在工具链中配置的,多个宏定义之间需要有“逗号”隔离开来。

 

其实这里的宏定义配置也可以在源代码中实现,打开system_stm32f10x.c文件下第127行的“VECT_TAB_SRAM”宏定义,如下图:

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

3.调试配置

同上:Project -> Options for Target -> Debug, 这里是关于调试的配置。

第一步:去掉“Load Application at Startup”前面的勾选项

 

第二步:导入RAM初始化文件。

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

RAM初始化文件里面内容如下:

FUNC void Setup (void) {

SP = _RDWORD(0x20000000);

PC = _RDWORD(0x20000004);

_WDWORD(0xE000ED08, 0x20000000);

}

 

LOAD Objects\ExecutableFile.axf INCREMENTAL

Setup();

g, main

 

每一条语句具体意思请见源代码注释,这里提示的是Objects\ExecutableFile.axf

 

也就是输出路径和输出文件名,它的路径与文件名与你工程配置需对应。

4.调试不更新目标程序

同上:Project -> Options for Target -> Utilities,不勾选“更新”。意思就是在线调试时,不更新芯片(下载FLASH)程序。

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

至此,STM32内部RAM在线调试配置方法就完成了,连接开发板就可以使用RAM在线调试代码了


关键字:STM32  内部RAM  在线调试  配置方法 引用地址:STM32内部RAM在线调试配置方法及详细说明

上一篇:STM32PB2(BOOT1)使用注意
下一篇:关于STM32串口空闲中断IDEL的问题

推荐阅读最新更新时间:2024-03-16 16:15

【话说定时器系列】之八:STM32定时器计数定时基本功能实验
STM32定时器 是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍。去年,电堂推出了 《STM32 TIMER基础及常规应用介绍》 ,为大家梳理了 STM32 TIMER 的庞大内容,涵盖 TIMER 的基本应用原理、常规应用等。现在将课程内容整理为文章,针对STM32定时器有基本了解的用户,分享具体的应用实现环节及常见问题解决。 实验内容: 使用STM32定时器的基本计数定时功能,周期性地让一个LED灯闪烁,具体就是1s亮1s暗。 涉及到的开发板: STM32F411 Nucleo 板 【实验对开发板并无特别要求】,集成开发环境不限。 实验目的: 1、熟悉定时器时基单元的基本寄存器及相关数据的拟定
[单片机]
【话说定时器系列】之八:<font color='red'>STM32</font>定时器计数定时基本功能实验
STM32的USRT通讯实现
1.实现平台 两块STM开发板,杜邦线; 初始化板子上的串口; 为串口开启中断; 根据需要制定两个板子的通讯协议。 2.实现过程 2.1协议制定 在工程实践的过程中,常常需要两个板子进行通讯来实现功能。现在常常使用的通讯方法常常是CAN通信,TTL通讯,RS485通讯,RS232通讯,I2C,I2S,SPI等。UART也是一种常用的通讯方式,这种通讯方式为全双工。 制定协议时应注意以下几点: 起始符,结束符和校验位 在为制定通讯协议的时候,首先应该确定发送数据的起始符,结束符和校验位;在设置起始符,结束符的时候应该避免和发送的内容发生冲突。结束符最好可以设置多位,一般可以设置两个位作为结束符;校验位需要在结束符之前;起
[单片机]
STM32之输入捕获介绍及应用超声波应用
一、输入捕获介绍 输入捕获模式可以用来测量脉冲宽度或者测量频率。 除了基本定时器,通用和高级均有输入捕获功能。 TIMx_CCMR1(捕获/比较模式寄存器) - 通道1和2的控制 TIMx_CCMR2(捕获/比较模式寄存器) - 通道3和4的控制 二、脉宽测量实现超声波测距 当然还需要配合printf一起使用, #include timer.h #include /*TIM3_CH3输入捕获初始化*/ TIM_ICInitTypeDef TIM3_ICInitStructure; void TIM3_Cap_Init(u16 arr,u16 psc) { GPIO_InitTypeDef
[单片机]
<font color='red'>STM32</font>之输入捕获介绍及应用超声波应用
STM32单片机智能电饭煲系统设计方案
一、功能简介 本项目使用Proteus8.12仿真STM32单片机控制器,使用继电器加热/保温模块、数码管模块、按键模块、LED指示灯、蜂鸣器模块等。 主要功能: 系统运行后,数码管默认不显示,当按下K5键选择功能模式,此时数码管会显示对应模式所需时间,且LED指示灯工作,系统默认有煮饭、煮粥、蒸、煲汤四种功能,还可按下K6键设置预约时间,通过K2和K3键修改时间,当设置好时间后,按下K4键开始,预约时间开始倒计时,当时间达到后,继电器开启加热,在所选功能时间倒计时结束后停止加热,开启保温。若不需要保温,可按下K1键关闭。 主要功能如下: (1)功能:煮饭、煮粥、蒸、煲汤; (2)按键:开始、取消、功能、加减、预约; 二、
[单片机]
<font color='red'>STM32</font>单片机智能电饭煲系统设计方案
stm32 定时器响应时间计算
以TIM3_Int_Init(u16 arr,u16 psc)为例:(st的标准库) arr:自动重装载值 psc:时钟预分频系数 arr 有四种计数方式:加1、减1,加减、减加。(可单次可多次) 要计算时间必须知道单片机的时钟源频率 F(由时钟频率的方波来计数) 定时器响应时间(T)计算:T= / F (us)
[单片机]
<font color='red'>stm32</font> 定时器响应时间计算
STM32启动文件简单分析
STM32启动文件简单分析(STM32F10x.s适用范围)定时器, 型号, 名字在 STM32不完全手册里面 ,我们所有的例程都采用了一个叫STM32F10x.s的启动文件,里面定义了STM32的堆栈大小以及各种中断的名字及入口函数名称,还有启动相关的汇编代码。STM32F10x.s是MDK提供的启动代码,从其里面的内容看来,它只定义了3个串口,4个定时器。实际上STM32的系列产品有5个串口的型号,也只有有2个串口的型号,定时器也是,做多的有8个定时器。比如,如果你用的STM32F103ZET6,而启动文件用的是STM32F10x.s的话,你可以正常使用串口1~3的中断,而串口4和5的中断,则无**常使用。又比如,你TIM1~
[单片机]
stm32开发新方式-platformio
硬件测试环境: macOS stm32f103c8t6最小系统板 st-link v2 新建pio工程 创建工程文件夹并进入: mkdir test && cd test 查找自己适合的板子 pio boards 会看到以下结果,十里这里选择genericSTM32F103C8,这里执行这个命令,主要是查找对应自己最小系统板的board ID: ... disco_l152rb STM32L152RBT6 32Mhz 128kB 16kB ST STM32LDISCOVERY disco_f100rb STM32F100RBT6 24Mhz 128kB 8kB ST STM32VLDISCOVERY generic
[单片机]
STM32按键控制LED的亮灭
使用一个按键控制 LED 的亮灭,按键按下时LED亮起,按键松开时LED熄灭。通过按键控制实验来介绍下 IO 口作为输入的使用。本例中用到了GPIOE的PE3管脚。 LED和按键的电路图。 按键 K_LEFT、K_DOWN、K_RIGHT 分别连接在 STM32 F1 芯片 的 PE2、PE3、PE4引脚上。 按键另一端是全部接在 GND 上,这个和我们学习 51单片机 是一样的,采用独立式按键接法,按下时输入到芯片管脚即为低电平。 整个程序实现的流程步骤如下: 初始化按键使用的 端口 及 时钟 按键 检测 处理 按键控制处理 工程文件目录如下。 IO口初始化程序代码在key.c文件中。 /**********
[单片机]
<font color='red'>STM32</font>按键控制LED的亮灭
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved