此资源为STM32微控制器编程加载工具压缩包,包含用于编写和下载程序到STM32芯片所需的软件及文档。
STM32芯片有三种启动模式,并且这三种模式对应的存储介质都是芯片内部的:1)用户闪存(User Flash),即芯片内置的Flash;2)系统存储器(System Memory),这是出厂时预置了一段Bootloader代码的一块特定区域,这段代码被称为ISP程序。这部分内容在出厂后无法修改或擦除,因此它实际上是一个ROM区;3)SRAM,也就是芯片内部的RAM区。
每个STM32芯片上都有两个引脚:BOOT0和BOOT1。这两个管脚的状态决定了复位时从哪个区域开始执行代码:
- 当BOOT1=x且BOOT0=0时,程序将从用户闪存启动,这是通常的工作模式。
- 如果BOOT1=0且BOOT0=1,则系统会使用预先设置的ISP程序来启动。
- 若是BOOT1和BOOT0都为高电平(即均为1),则代码会在内置SRAM中执行。这种配置主要用于调试。
在芯片复位后的第4个上升沿,BOOT引脚的状态会被锁定下来;用户可以通过调整这两个管脚的状态,在系统重启时选择不同的启动模式。
从待机状态恢复后,同样需要重新设置这些引脚的值以保持正确的启动配置。一旦完成必要的延迟时间,CPU将从地址0x0000 0000读取堆栈顶的位置,并在该存储器区域内的下一个指定位置(即地址为0x0000 04)开始执行代码。
由于固定的内存映射,所有的程序代码总是从地址零处开始(通过ICode和DCode总线访问),而数据则始终位于SRAM的固定起始点(通常是系统总线上地址2000 0000)。Cortex-M3处理器在复位后会使用ICode总线获取向量表,这意味着启动过程通常从代码区域开始执行。
对于STM32F10xxx系列微控制器,它提供了一种特殊机制:不仅支持Flash或系统存储器的启动方式,还允许直接通过内置SRAM进行程序加载和运行。根据所选择的模式不同:
- 当采用用户闪存作为启动介质时,主闪存会被映射至起始地址0x0000 0000处,并且还可以在它原始位置(例如地址为800 000)访问。
- 在系统存储器被选择作为启动源的情况下,则该区域会从地址零开始加载代码,同时也可以在其原有位置继续访问(对于互联型产品是1FFF B000,其他类型则是1FFF F000)。
- 当使用SRAM进行程序执行时,只能在起始地址2000 000处找到其内容。
特别注意的是,在从内置的SRAM启动的情况下,用户需要重新映射异常向量表至新的位置(即位于RAM中的区域),以正确初始化应用程序。