STM32学习笔记-2:STM32内部RAM在线调试配置说明(RAM调试模式下不能进入外部中断)

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

注:本文章只适用于在线仿真形式,需要使用能够进行在线仿真的调试器(Jlink,Stlink),串口方式不能进行仿真。

RAM模式下调试程序优点:1.调试效率高,能够设置断点,及进行单步调试等。2.程序无需写入芯片FLASH,延长芯片使用寿命,(之前看到过别的文章提到因为调试程序,FLASH频刷会导致芯片出现一些诡异问题)。

适用范围:Cortex-M系列内核芯片,本文章只展示STM32系列单片机的具体操作,其他单片机请参考相应步骤进行差异性操作。

文章作用:1.解决程序不能够在线仿真。2.在线仿真情况下,STM32不能进入中断程序,导致中断不响应。

RAM调试配置流程(开发软件设置)

第一步:修改内存地址

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

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

注意:配置的地址范围不能超过芯片实际的大小,芯片RAM大小请查阅芯片手册获取。

第二步:配置向量表

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

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

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

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

第三步:调试配置

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

1.去掉“Load Application at Startup”前面的勾选项

2.导入RAM初始化文件(为避免其他问题,RAM.ini文件最好放在工程文件夹下)。

文件地址:STM32内部RAM模式在线调试配置文件-其它文档类资源-CSDN下载

3.parameter等参数设置。

第四步:调试不更新目标程序

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

启动模式设置(硬件设置)

以上两个设置缺一不可,至此,STM32内部RAM在线调试配置方法就完成了,连接开发板就可以使用RAM在线调试代码了。

补充:关于RAM调试模式下不能进入外部中断的解决方法,还可以通过另外一种方式实现,可依据各自习惯选择!

在时钟设置语句中或在main.c初始化语句中加入:    NVIC_SetVectorTable(0x20000000,0x0);

原理是让中断向量表映射到SRAM中。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值