flash代码(STM32在SRAM、FLASH中调试代码的配置方法)

80酷酷网    80kuku.com

flash代码(STM32在SRAM、FLASH中调试代码的配置方法)

因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试。除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要快得多,所以下载程序到SRAM中的速度较快。

所以我们很有必要建立两个版本的工程配置,在SRAM中调试程序完毕后,再把代码下载到FLASH中即可。这篇笔记主要分享在keil5中配置FLASH调试与SRAM调试的详细配置方法及如何切换两种配置。

本篇笔记以STM32F103ZET6为例。其FLASH大小为512KB,SRAM的大小为64KB。FLASH基地址为0x08000000,SRAM基地址为0x20000000。在STM32F10XXX里,可以通过BOOT1、BOOT0引脚来选择三种不同的模式:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

我们要在FLASH中进行硬件仿真调试还是在RAM中进行硬件仿真调试需要对这两个boot脚进行对应的设置以及程序下载的地址进行设置。

在FLASH中进行硬件仿真调试

1、硬件设置

BOOT0配置为0,BOOT1随意设置。

2、keil设置

本文以keil5为例。步骤如下:

(1)点击如下按钮,修改target的名称:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

target的名称是可以随意更改的,我们这里改为FLASH。

(2)点击Project->Options for Target Flash...(也可以点击魔术棒那个图标)进行配置。首先对Target选项卡设置:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

设置IROM1的起始地址为0x8000000,大小为0x80000,即FLASH的基地址与大小。设置IRAM1为0x20000000,大小为0x10000,即SRAM的基地址与大小。

(3)Debug选项设置:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

调试器根据实际进行选择,我们这里使用的调试器是ULINK2。其它的按默认设置即可,然后点击Settings:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

(4)编译,然后按Ctrl+F5进入调试界面:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

然后点击全速运行:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

在Disassembly窗口中可看到地址为0x0800xxxx,说明代码烧进了FLASH中,这时候就可以像使用其他C语言IDE调试C语言程序一样打断点、单步运行我们的STM32程序啦。

在SRAM中进行硬件仿真调试

在SRAM的仿真调试配置比FLASH中的配置要麻烦一点,我配置的时候遇到不少问题~

1、硬件设置

BOOT0配置为1,BOOT1配置为1。

2、keil设置

(1)新建一个target,并修改名称为SRAM:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

(2)切换至SRAM Target:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

(3)点击Project->Options for Target SRAM ...(也可以点击魔术棒那个图标)Target选项卡设置:

STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: