历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2020年11月25日 | STM32程序的烧录方式 与 ISP一键下载

2020-11-25 来源:eefocus

一、启动模式(Boot modes)

阅读:STM32中文参考手册_V10.pdf 查看启动配置(Boot modes)。

在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。这里写图片描述

STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
1)用户闪存 = 芯片内置的Flash。
2)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区
域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。
3)SRAM = 芯片内置的RAM区,就是内存啦。
 
在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:
BOOT1=x   BOOT0=0   从用户闪存启动,这是正常的工作模式。
BOOT1=0   BOOT0=1   从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1   BOOT0=1   从内置SRAM启动,这种模式可以用于调试。


在系统复位后, SYSCLK的第4个上升沿, BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。


在从待机模式退出时, BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。在启动延迟之后, CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。


因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。 Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。 STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。


根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问:
● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x0000 0000 或 0x0800 0000。
● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。(可用于串口下载)

● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。

注意: 当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,从新映射向量表之SRAM中。

 

https://blog.csdn.net/weixin_42295502/article/details/80916124

https://blog.csdn.net/Hola_ya/article/details/81323743


推荐阅读

史海拾趣

FWBELL公司的发展小趣事
用于实时检测电池温度,如热敏电阻、IC温度传感器等。
ACEINNA公司的发展小趣事
根据电压比较器的输出信号控制充电电流的大小和充电模式。
Geyer Electronic E K公司的发展小趣事
用于实时检测电池温度,如热敏电阻、IC温度传感器等。
FUJIKURA公司的发展小趣事
通过实时监测和控制电池温度,避免电池过热导致的安全问题。
ABCircuits公司的发展小趣事

ABCircuits公司成立之初,便专注于半导体技术的研发。在电子行业的浪潮中,公司敏锐地洞察到市场对高性能、低功耗芯片的需求,于是投入大量资源进行研发。经过数年的努力,ABCircuits成功推出了一款具有革命性的芯片,该芯片在性能上远超同行,同时功耗极低,迅速获得了市场的认可。这一技术创新为ABCircuits公司打开了新的市场领域,奠定了其在行业内的领先地位。

DBS Microwave Inc公司的发展小趣事

随着公司产品的不断成熟和技术的不断进步,DBS Microwave开始积极拓展国际市场。公司参加了多个国际电子展会,与全球各地的客户建立了联系。同时,公司还积极寻求与国际知名企业的合作机会,通过技术交流和合作研发等方式,不断提升自身的技术水平和市场竞争力。这些努力使得DBS Microwave在国际市场上取得了良好的业绩。

问答坊 | AI 解惑

HDTV介绍

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 HDTV原理介绍 …

查看全部问答>

_简明集成运算放大器应用手册

好书_简明集成运算放大器应用手册…

查看全部问答>

(急切求助)CE5.0模拟环境下(C#.Net)如何调用第三方DLL控件...

想把视频监控的客户端放到智能手机上用, 现在可以在普通WinForm(C#.Net)下实现服务端和客户端的视频浏览和录制等功能; 但在模拟环境下调试的时候提示找不到Hik.DLL,不知如何下手解决? 是DLL放的位置不对,还是DLL版本问题? 请遇到过同 ...…

查看全部问答>

哪里有破解版的QAC下载?

哪里有破解版的QAC下载?…

查看全部问答>

移植Virtual_COM_Port[急]

小弟去下載USB的3.3.0的資料庫,裡面有EVAL的Virtual COM Port程式,想要一直到我的板子上,對照了電路圖,小弟的板子不是市面上的開發板,用的IC是STM32F102R8,USB的PULL UP控制是在PB9,照原本的是設定在platform_config.h裡設定是PD9,把它修改 ...…

查看全部问答>

keil和iar下同样时序进行触屏位置读取,得到不同的结果?

问题:如题 现象:我用IO口模拟SPI 进行触屏芯片(xpt2046)读写,在keil和iar下采用同样的读写函数(读写时序一样),两种环境下都能正常进出中断(编译器环境设置没错??)。奇怪的是,在IAR下能够正常读取到点触的位置,而在keil读数始终为零 ...…

查看全部问答>

2013年电赛全国奖评审--复测名单 --E题

本帖最后由 paulhyde 于 2014-9-15 03:06 编辑 2013年电赛全国奖评审--复测名单 --E题 [ 本帖最后由 lmx 于 2013-9-22 23:48 编辑 ]    …

查看全部问答>

51程序问题·····

先说问题吧···· 就是矩阵反转扫描函数中的问题··· 源函数如下····· unsigned char KeyScan(void)  //键盘扫描函数,使用行列反转扫描法 { unsigned char cord_h,cord_l;//行列值中间变量 KeyPort=0x0f;    ...…

查看全部问答>

ADC中关于ADCSequenceStepConfigure函数的问题

ADCSequenceStepConfigure(uint32_t ui32Base, uint32_t ui32SequenceNum,uint32_t ui32Step, uint32_t ui32Config) 这个函数第3和4个参数理解不是很清楚。有4个样本序列。0序列有8个step\\1和2序列有4个step.3序列有1个step.step是什么用的。还有 ...…

查看全部问答>