MCU整体工作流程可总结如下:上电——>主时钟起振——>启动代码——>用户程序(main函数)
MCU上电(复位)时,从固定的地址启动,一般是地址0x00000000,如ARM7;个别特殊的如STM32默认启动地址为0x8000000(flash区启动)。启动过程主要完成两部分工作,一个是硬件执行环境,如中断向量表、寄存器、看门狗等,另一个是软件环境,如C库环境、ZI(未初始化的内存变量)等。

第一种方式(boot0=0) Flash memory启动方式
即 正常使用模式

启动地址:0x08000000 是STM32内置的Flash。
中断向量表定位于FLASH区,即起始地址为0x8000000,同时复位后PC指针位于0x8000000处。


Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。另外,绝大部分的 U 盘、SDCard 等移动存储设备也都是使用 Flash Memory 作为存储介质。

第二种方式(boot0=1 boot1=0)System memory启动方式
即 串口下载模式(isp)烧录完需要接地才能正常使用。(需使用其他软件进行烧录如FlyMcu)

启动地址:0x1FFF0000从系统存储器启动。
中断向量表定位于内置Bootloader区,此时可通过串口下载程序的二进制文件到flash区。

System memory 是MCU 中固定位置的一块区域,里面存放了一些固定的代码。
这部分空间在出厂前的生产期间由 ST 进行了编程,出厂后就不可更改,通常我们就将这里的程序称为 引导程序(BootLoader) 。其主要作用就是是通过一些可用的串行外设(USART、CAN、USB、I2C 等)将应用程序下载到内部 Flash 中。

下载步骤

  • 1、将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
  • 2、最后在BootLoader的帮助下,通过串口下载程序到Flash中
  • 3、程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动可以看到。

第三种方式(boot0 = 1;boot1 = 1):SRAM启动方式
即 程序调试模式 无程序存储能力

启动地址:0x20000000 内置SRAM。
中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处。

多用于快速调试模式,SRAM模式,无程序储存能力

stm32f103c8t6的启动电路

总结:屁用没有,俩都接地就完事了

Views: 155

By tomato

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.