快捷搜索: 王者荣耀 脱发

STM32启动模式及程序下载原理总结

STM32启动模式及程序下载原理总结

最近在学习STM32过程中,对其串口实现程序下载的原理不甚了解,查阅网上资料及官方手册后,明朗了不少,总结如下: 要了解其程序下载原理,必须对STM32的启动模式有一定了解。

官方参考手册里可以查到,在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式: 以下是正点原给出的解释:-

一般情况下如果我们想用用串口下载代码,则必须配置BOOT0为1,BOOT1为 0,而如果想让 STM32 一按复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设置都可以,为了电路设计方便也选择0。 正点原子战舰 STM32F103 专门设计了一键下载电路,通过串口的 DTR 和RTS 信号,来自动配置 BOOT0 和 RST 信号,因此不需要用户来手动切换跳线帽来改变他们的状态,直接串口下载软件自动控制。

串口下载程序过程: 1. 用串口下载代码,先配置BOOT0为1,BOOT1为 0,从而进入 ISP 模式,下载代码。(从系统存储器启动,而内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用于通过串行接口对闪存存储器(Flash)进行重新编程.) 2. BOOT0 为 0,BOOT1 随便设置都可以。从Flash启动,执行程序。 补充:因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。 ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。

经验分享 程序员 微信小程序 职场和发展