STM32开发 -- 烧写启动模式

    xiaoxiao2022-07-13  163

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/80586445

    根据我一贯的作风,接下来该讲烧写/启动模式,然后再讲各种烧写方法和过程,最后是启动流程。 这一篇文章,就看一下 烧写/启动模式。

    一、启动模式(Boot modes)

    阅读:STM32中文参考手册_V10.pdf 查看启动配置(Boot modes)。

    在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。

    在系统复位后, 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可以按照以下方式访问: ● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x0000 0000或0x0800 0000。 ● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。 ● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。

    注意: 当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,从新映射向量表之SRAM中。

    二、原理图

    从原理图上,看一下我们的开发板是什么启动模式。

    或者购买的正点开发板的原理图

    从原理图上看都是: BOOT1 X BOOT0 0

    所以是,从主闪存存储器启动的。 而上面说了,主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x0000 0000或0x0800 0000。

    再有思考,如果想用串口下载该怎么设置? 一般情况下如果我们想用用串口下载代码,则必须配置 BOOT0为 1,BOOT1为0  

    最新回复(0)