STM32下载程序至SRAM——基于正点原子精英STM32F103ZET6开发板
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:0x20000000、0x8000;
③、IRAM1:0x20008000、0x8000;
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开发板相关推荐
- STM32基于正点原子ALIENTEK探索者开发板的跑马灯实验
一.首先我们来了解建立好的工程框架 1.USER 组USER下面主要存放的是用户代码. main.c是主函数 system_stm32f4xx.c文件是片上外设接入层系统文件,主要是申明设置系统及总线 ...
- stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...
1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...
- stm32 ucosii消息队列 串口_正点原子STM32F407探索者开发板资料连载第六十三章 UCOSII 实验...
1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weix ...
- FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)
2019级电子科学与技术专业FPGA课程设计 报 告 2022 年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用ED ...
- fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...
1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...
- 【正点原子探索者STM32F407开发板例程连载+教学】第43章 sd卡实验-SDIO
第四十三章 SD卡实验 1.硬件平台:正点原子探索者STM32F407开发板 2.软件平台:MDK5.1 3.固件库版本:V1.4.0 很多单片机系统都需要大容量存储设备,以存 ...
- 正点原子探索者STM32F407ZGT6开发板资料:
3)正点原子探索者STM32F407ZGT6开发板资料: [百度网盘链接]: A盘文件夹形式:https://pan.baidu.com/s/1jHWI8fG A盘文件夹 ...
- 共阳数码管段码表_正点原子开拓者FPGA开发板资料连载第十一章 静态数码管显示实验...
1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...
- Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)
Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核) 文章目录 Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4 ...
最新文章
- 小程序开发代码_企业为什么要选择小程序定制开发?
- Redis持久化配置
- 教程视图Android教程(十三)-- Activity间的切换
- k8s核心技术-持久化存储(nfs网络存储)---K8S_Google工作笔记0050
- 深度解密微信疯读狂加粉的伎俩
- 蓝桥杯备考-python刷题之路-动态规划算法(DP算法)Part3【最终代码实现
- JS实现歌词同步滚动效果
- Win11麦克风有回音怎么消除 Win11麦克风回声怎么调
- pdf转换成word转换器免费版哪里下载
- android 开发相机焦距解析之调节远近焦距
- 乡愁 - 怀念老者余光中
- 一款免费的截图、滚动截屏软件
- 小程序源码:好玩的表情包机器人
- 你绝对能懂的“腐烂的橘子”解法
- c++保存数据为txt格式
- C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑
- 为了广大AI男的婚姻幸福,求求AI男们不要学习金融男好榜样了
- C语言数组 :用户输入一个数, 我要用这个数当数组的长度。怎么办呢
- log4cpp-【写日志】:使用log4cpp的基本步骤
- 每节课都是一个项目 手把手用STM32打造联网气象站-4-STM32基础三件套-TIM定时器和SYSTICK初始化