STM32下载程序至SRAM——基于正点原子精英STM32F103ZET6开发板

如题,由于STM32的FLASH烧写寿命在1万次左右,对于本人这样的改一行代码都想下载到开发板中测试的强迫症患者,真是有些担心花我近200大洋的开发板还没学者啥,就寿终正寝了。因此,本人参考总结网上众多教程,并实际测试成功,在此跟网友分享下准处女座的强迫症之作,成功实现下载程序至SRAM中,并成功运行。

1、开发板:

本人使用的开发板为正点原子精英STM32F103ZET6开发板,并自配了一个ST-LINK V2仿真下载器:

   

开发板资料下载地址:http://www.openedv.com/thread-13912-1-1.html

2、实验目的:

本次实验主要实现下载程序至STM32的SRAM中,并点亮开发板自带的LED灯,开发板上的LED灯电路为:

    

本次实验点亮LED0,其通过PB5引脚与STM32连接,配置引脚工作模式为推挽输出GPIO_Node_Out_PP。

3、创建工程:

话不多说,直接上步骤。

所需的材料有:①、STM32F10x标准外设库(STM32F10x_StdPeriph_Lib_V3.5.0),可自行在网上下载;

②、正点原子精英版标准例程中SYSTEM文件夹,要用其中的delay_ms延时函数,可在开发板提供的任意一个标准例程中找到。

下面开始按步骤创建工程,本人使用的MDK版本为μVersion V5.21.1.0。

1)、创建工程文件夹LoadToSRAM,并在其中创建子文件夹CORE、FWLIB、OBJ、USER;

2)、将SYSTEM文件夹复制到LoadToSRAM工程文件夹下;

3)、①将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的2个文件 core_cm3.c 、core_cm3.h 复制到 CORE 文件夹下;

②将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的1个文件startup_stm32f10x_hd.s(第4个)复制到 CORE 文件夹下;

4)、将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目录下的2个文件夹inc、src复制到FWLIB文件夹内;

5)、①将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的3个文件 stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h,复制到 USER 文件夹下;

②将 STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的3个文件 stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h复制到USER文件夹下;

③在 USER 文件夹下新建空文本文件main.c;

6)、①启动Keil MDK软件 → Project → New μVersion Project... → 定位到LoadToSRAM\USER→ 工程文件名LoadToSRAM → 保存;

②选择芯片STM32F103ZE → OK → Cancel;

  

7)、在Target 1上右击 → Manage Project Items... → 将Project Targets中Target 1重命名为LoadToSRAM → 删除Groups中Source Group 1,然后在Groups中新建CORE、FWLIB、SYSTEM、USER;

8)、①在CORE内Add Files... 添加.../CORE文件夹下的2个文件core_cm3.c、startup_stm32f10x_hd.s;(注:添加文件时选择文件类型All Files (*.*))

②在FWLIB内Add Files... 添加.../FWLIB/src文件夹下的所有.c文件;

③在SYSTEM内Add Files... 添加.../SYSTEM/delay文件夹下的delay.c文件,.../SYSTEM/sys文件夹下的文件sys.c文件,.../SYSTEM/usart文件夹下的usart.c文件;

④在USER内Add Files...添加.../USER文件夹下的3个文件main.c、stm32f10x_it.c、system_stm32f10x.c → OK;

9)、在"LoadToSRAM"上右击 → Option for Target 'LoadToSRAM'... → 在Target选项卡中设置:
    ①、Xtal(MHz) → 8.0;
    ②、IROM1:0x200000000x8000
    ③、IRAM1:0x200080000x8000

10)、在Output选项卡中:

①、Select Folder for Objects... → 选择文件夹OBJ ;

②、勾选"Create HEX File";

11)、C/C++(编译选项卡):
        ①、Define内填"STM32F10X_HD,USE_STDPERIPH_DRIVER" ;

②、Include Paths内加入路径“..\CORE、..\FWLIB\inc、..\SYSTEM\delay、..\SYSTEM\sys、..\SYSTEM\usart、

..\USER”(包含.h头文件的文件夹路径)。

12)、Debug(调试选项卡):

①、下载器Use选择ST-Link Debugger;

②、USER文件夹下新建 RAM.ini文本 文件,加入如下代码:
SP = _RDWORD(0x20000000);  // Setup Stack Pointer
PC = _RDWORD(0x20000004);  // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000);  // Setup Vector Table Offset Register

并加载到 Debug 选项卡下的 Initialization File 中;

③、右侧Dialog DLL:内填"TARMSTM.DLL" → 右侧Parameter:内填"-pSTM32F103ZE"。

13)、Utilities(工具):
        ①、Utilities → Settiings;
        ②、RAM for Algorithm设置:art:0x2000 8000,设置ize:0x8000;

③、Prodramming Algorithm中的STM32F10x High-density...设置:art:0x2000 8000,设置ize:0x8000 → 确定。

14)、在main.c中加入如下代码,并编译、下载、执行:

#include "stm32f10x.h"
#include "delay.h"int main()
{GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO参数设置结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //APB2外设时钟使能:GPIOBGPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //选定引脚GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //工作方式:推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //最大速度50MHzGPIO_Init(GPIOB, &GPIO_InitStructure); //初始化引脚delay_init();  //延时函数初始化while(1)  //无限循环{GPIO_SetBits(GPIOB,GPIO_Pin_5);  //LED0亮delay_ms(500);  //延时500msGPIO_ResetBits(GPIOB,GPIO_Pin_5);  //LED0灭delay_ms(500);  //延时500ms}
}

(注:程序最后一行多加一个空行,若有其他文件最后一行都要加一个空行)

程序成功运行,但下载到SRAM中的程序掉电会擦除。

4、有关中断:

有关程序下载到SRAM中,中断设置的问题,本人将在接下来的文章中分享。

STM32下载程序至SRAM——基于正点原子精英STM32F103ZET6开发板相关推荐

  1. STM32基于正点原子ALIENTEK探索者开发板的跑马灯实验

    一.首先我们来了解建立好的工程框架 1.USER 组USER下面主要存放的是用户代码. main.c是主函数 system_stm32f4xx.c文件是片上外设接入层系统文件,主要是申明设置系统及总线 ...

  2. stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

  3. stm32 ucosii消息队列 串口_正点原子STM32F407探索者开发板资料连载第六十三章 UCOSII 实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weix ...

  4. FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

    2019级电子科学与技术专业FPGA课程设计 报   告 2022  年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用ED ...

  5. fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...

  6. 【正点原子探索者STM32F407开发板例程连载+教学】第43章 sd卡实验-SDIO

    第四十三章  SD卡实验         1.硬件平台:正点原子探索者STM32F407开发板  2.软件平台:MDK5.1  3.固件库版本:V1.4.0  很多单片机系统都需要大容量存储设备,以存 ...

  7. 正点原子探索者STM32F407ZGT6开发板资料:

    3)正点原子探索者STM32F407ZGT6开发板资料:      [百度网盘链接]:         A盘文件夹形式:https://pan.baidu.com/s/1jHWI8fG   A盘文件夹 ...

  8. 共阳数码管段码表_正点原子开拓者FPGA开发板资料连载第十一章 静态数码管显示实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...

  9. Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)

    Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核) 文章目录 Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4 ...

最新文章

  1. 小程序开发代码_企业为什么要选择小程序定制开发?
  2. Redis持久化配置
  3. 教程视图Android教程(十三)-- Activity间的切换
  4. k8s核心技术-持久化存储(nfs网络存储)---K8S_Google工作笔记0050
  5. 深度解密微信疯读狂加粉的伎俩
  6. 蓝桥杯备考-python刷题之路-动态规划算法(DP算法)Part3【最终代码实现
  7. JS实现歌词同步滚动效果
  8. Win11麦克风有回音怎么消除 Win11麦克风回声怎么调
  9. pdf转换成word转换器免费版哪里下载
  10. android 开发相机焦距解析之调节远近焦距
  11. 乡愁 - 怀念老者余光中
  12. 一款免费的截图、滚动截屏软件
  13. 小程序源码:好玩的表情包机器人
  14. 你绝对能懂的“腐烂的橘子”解法
  15. c++保存数据为txt格式
  16. C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑
  17. 为了广大AI男的婚姻幸福,求求AI男们不要学习金融男好榜样了
  18. C语言数组 :用户输入一个数, 我要用这个数当数组的长度。怎么办呢
  19. log4cpp-【写日志】:使用log4cpp的基本步骤
  20. 每节课都是一个项目 手把手用STM32打造联网气象站-4-STM32基础三件套-TIM定时器和SYSTICK初始化

热门文章

  1. 机器视觉照明技术与装置实验研究(论文纪要)
  2. 值得收藏的12款小众冷门但功能强大的在线神器
  3. 利用WebView加载HTML代码时解决图片正常显示
  4. iOS 基于PhotoKit 获取系统所有相册 以及所有照片 包括iCloud的处理 细节详解及实战代码
  5. 计算机视觉:图片的马赛克、毛玻璃效果和图片的融合
  6. 计算机二级Ms Office考点自检卡
  7. 使用Python库valuequant和利润表历史数据计算股权价值
  8. 最便宜的方式学习阿里云产品之使用竞价式实例ECS
  9. 数据的力量 驰援疫情丨对抗新型肺炎,志愿者招募
  10. python资源管理器安装_Python学习笔记-Python安装