STM32F10xxx_启动模式

Posted wanjianjun777

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F10xxx_启动模式相关的知识,希望对你有一定的参考价值。

目录

STM32F10xxx_启动模式

更新记录

version status description date author
V1.0 C Create Document 2018.10.15 John Wan

status:
C―― Create,
A—— Add,
M—— Modify,
D—— Delete。

启动配置

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

BOOT1 BOOT0 启动模式 说明
X 0 主闪存存储器 主闪存存储器被选为启动区域
0 1 系统存储器 系统存储器被选为启动区域
1 1 内置SRAM 内置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。

注:各启动方式地址的由来参考《ARM Cortex-M3与Cortex-M4权威指南CnR3》第六章存储器系统P135页 存储器地址的划分。

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

注意:三种启动方式,在第一和第二是不需要映射向量表的,地址0x0000 0000默认已有向量表。如果不是在此地址开始执行,则都需要映射向量表。

??内嵌的自举程序 内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用于通过可用的串行接口对闪存存储器进行重新编程:

  • 对于小容量、中容量和大容量的产品而言,可以通过USART1接口启用自举程序。进一步的细节请查询AN2606
  • 对于互联型产品而言,可以通过以下某个接口启用自举程序:USART1、USART2(重映像的)、CAN2(重映像的)或USB OTG全速接口的设备模式(通过设备固件更新DFU协议)。 USART接口依靠内部8MHz振荡器(HSI)运行。CAN和USB OTG接口只能当外部有一个8MHz、14.7456MHz或25MHz时钟(HSE)时运行。进一步的细节请查询AN2606

参考:

《STM32F10xxx参考手册》 P33 2.4节启动配置。
《ARM Cortex-M3与Cortex-M4权威指南CnR3》第六章存储器系统P135页









以上是关于STM32F10xxx_启动模式的主要内容,如果未能解决你的问题,请参考以下文章

stm32f10x串口实验之中断模式

启动文件讲解

STM32 开机流程分析

STM32 开机流程分析

STM32三种启动模式

STM32 BOOT0 BOOT1 配置