从零开始的stm32最小系统板——(4)启动模式

一、stm32的三种启动方式

        stm32有3种自举模式,也叫启动方式,不同的启动方式对应有不同应用。如何确定不同的启动方式,其实是通过stm32的boot1和boot0引脚的电平情况决定的。下面给出一张表:

从零开始的stm32最小系统板——(4)启动模式_第1张图片

 

         在我们stm32启动的时候,其实做了一件事情,就是从地址 0x0000 0000取出堆栈指针MSP的值这个值就是栈顶地址,然后从  0x0000 0004取出程序计数器PC的值,这个值就是复位向量。

        为什么要这么做呢?因为我们可以将0x0000 0000和0x0000 0004映射到其它地址,映射到的地址不同,就决定启动方式不同,而这个映射地址到底映射在哪,就取决于我们boot1和boot0引脚的配置。

从零开始的stm32最小系统板——(4)启动模式_第2张图片 

        这里我们不去过分研究stm32的内部结构, 只粗略说明这三种启动方式的简单区别:

【1】主闪存存储器 :就是从用户Flash启动,这是最常见的启动模式,用户程序通常存储在Flash中,通过JTAG或SWD接口将程序烧录到Flash后,STM32会从该地址启动。我们不需要记这些乱七八糟的,就记住,用JTAG和SWD调试的话,就用主闪存存储;

【2】系统存储器 : 系统存储器是芯片内部预置的Bootloader区域,用于实现ISP(串口下载)功能。这种模式常用于通过串口烧录程序,所以用串口就选这种启动方式;

【3】SRAM启动模式主要用于调试。程序在SRAM中运行速度较快,适合在调试阶段快速更新代码,这个一般用不到,不用管。

        结合上述要求我们就可以设计出stm32的启动电路。但是需要注意的一点是,我们一般不直接把BOOT1,BOOT0引脚直接接3.3V和GND,而是分别通过一个10K电阻接,这样可以避免干扰,增强稳定性。

二、启动方式电路

        需要注意一点,stm32f103c8t6的BOOT0引脚直接写出来了,但是BOOT1引脚没给出来,其实就是PB2引脚。我们将一端全为3.3,一端全为GND,通过跳线帽选择(当然有大神直接拿镊子短接的,也行)

从零开始的stm32最小系统板——(4)启动模式_第3张图片

 

你可能感兴趣的:(stm32最小系统板,stm32,嵌入式硬件,单片机)