STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
1)用户闪存 = 芯片内置的Flash。
2)SRAM = 芯片内置的RAM区,就是内存啦。
3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM(只读)区。
在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:
在系统复位后,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可以按照以下方式访问:
从主闪存存储器启动(Main Flash memory)
主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x00000000或0x0800 0000。STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
从系统存储器启动(System memory)
系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。
从系统存储器启动,这种模式启动的程序功能是由厂家设置的。一般来说,这种启动方式用的比较少。
系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。
一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:
Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中
Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动
可以看到,利用串口下载程序还是比较的麻烦,需要跳帽跳来跳去的,非常的不注重用户体验。
从内置SRAM启动(Embedded Memory)
只能在0x2000 0000开始的地址区访问SRAM。
注意: 当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,重新映射向量表至SRAM中。
内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
综上所述,最简单的硬件设计就是将BOOT0和BOOT1通过一个10k的下拉电阻,直接接地。当然了也可以设计复杂的ISP电路一键下载。
1、ST-LINK在线调试
写好程序编译通过后,连接好仿真器,单击Debug(crtl+F5)进行在线调试程序,如下图所示
ST –LINK 也可在ST-LINK Utility 中作为下载器使用,方法如下:
第一步:在STMicroelectronics 中打开STM32 ST-LINK Utility软件
第二步:在“File”中选择“Open File”选择要下载的hex文件,选择后如下图所示
第三步:在“Target” 中的“Connect”, 选择后如下图所示
第四步:“Target”中的“Program…”
单击start如下图所示
第二步:设置如下图所示,选择要下载的hex,单击开始编程
下载成功后出现下图所示情况
OK,下载成功,按复位键就可执行程序了!
在串口下载之前,请先确保你的电脑上已经安装好了 usb 转串口驱动。
1) 用配套的 USB 线连接电脑和开发板的 USB 接口(USB TO UART),USB TO UART接口具有供电和串口下载的功能。
2) 给开发板上电,如果此时串口连接正常的话,则 USB 转串口芯片 CP2012 旁边的蓝色指示灯会亮。同时把 BOOT 开关拨到 ISP 档位。
3)在光盘目录:05-开发软件\3-串口下载软件 下打开串口 isp 软件:mcuisp.exe,配置如下,见。其中要选择下载的 hex 文件在每个工程文件的 output 文件夹下。
4)配置完成后,点击开始编程按钮,当开始出现开始连接的时候,按开发板的复位按钮,即可下载,见图6-13。
6) 程序下载完成后,把 BOOT 开关拨回 FLASH 档位,然后按复位键,程序即可运行,见图6-14。
本文用到的相关工具
MCU下载软件:http://download.csdn.net/download/u013162035/10023183
STM32 STLINK Utility软件:
http://download.csdn.net/download/u013162035/10023174