【STM32】使用内部SRAM启动并调试程序

知识点

  • 启动方式有三种,分别使用不同的Boot引脚组合来设置。 【STM32】使用内部SRAM启动并调试程序_第1张图片
    • 主Flash:即从内部Flash启动,Keil默认就是下载到这里。
    • 系统存储器:一般用于ISP(in system program),也就是串口下载程序。
    • 嵌入式SRAM:即从RAM中启动程序,调试的时候就可以从RAM中启动
  • 程序下载到内部SRAM后,掉电会使程序丢失,但RESET复位不会丢失程序。
  • 优点是可以增加芯片使用寿命,且下载快速。缺点是容量较小。

使用方法

  • Manage Project Items界面中增加一个专门用于调试的工程设置,并切换到该目标。
    【STM32】使用内部SRAM启动并调试程序_第2张图片
  • Options -> C/C++选项卡中加入工程宏定义VECT_TAB_SRAM,记得使用逗号隔开。
    【STM32】使用内部SRAM启动并调试程序_第3张图片
  • 新建用于描述地址空间分配的debug.sct。并在Options -> Linker选项卡中设置使用自定义的debug.sct文件。
    LR_IROM1 0x20000000 0x00010000 { ; load region size_region  虚拟的flash
    	ER_IROM1 0x20000000 0x00010000 { ; load address = execution address 虚拟的flash地址和大小
    		*.o (RESET, +First)
    		*(InRoot$$Sections)
    		.ANY (+RO)
    	}
    	RW_IRAM1 0x20010000 0x00020000 { ; RW data 虚拟SRAM地址和大小
    		.ANY (+RW +ZI)
    	}
    }      
    

【STM32】使用内部SRAM启动并调试程序_第4张图片

  • Options -> Debug -> Settings -> Flash Download 设置下载地址。
    【STM32】使用内部SRAM启动并调试程序_第5张图片

你可能感兴趣的:(STM32,通用知识,stm32,单片机)