stm32f4有重映射么_STM32F407-存储器地址重映射(自举配置)5

本文介绍了STM32F407在复位后如何根据BOOT0和BOOT1引脚以及重映射寄存器选择启动储存器,主要探讨了片上Flash、SRAM和系统闪存的使用场景,并详细解析了BOOT引脚的设置方法和其在电路中的应用。此外,提到了外部RAM的少见使用情况和重映射寄存器的作用。
摘要由CSDN通过智能技术生成

Iam鼎!

DMA框架解析1

DMA框架解析2

DMA框架解析3

储存空间映射

上一篇讲了关于储存空间映射的问题,下面讲一讲储存器重映射的问题。

程序是怎么运行的

简单说一下,复位之后,总是从地址0x04拿到复位代码的起始地址,以及从地址0x0取堆栈指针,开始执行复位程序。

这个0x04地址里面存的东西就是很关键的东西,大白话讲,它就是程序的开头索引。

目前STM32有四块可用于启动储存器的物理地址,0x04里面存放的地址就是它们之一:

片上SRAM起始地址:0x2000_0000

片上用户Flash起始地址:0x0800_0000

片上系统闪存(BootLoader)起始地址:0x1FFF_0000

外部RAM

分析一下这四种:

首先说结论:片上Flash最常用,严格来说这种方式只要不是太奇葩的项目都可以。

如果在调试阶段,需要反复的擦写程序,理论上调试用SRAM,调试结束用Flash最好,实际上却一般不用SRAM,因为Flash擦写虽然有寿命,但是寿命最少达到1W次(实际可能10W都可能),做个计算,每天擦写20次,也需要坚持一年半不停才能用坏,即使是实验板,也足够了。

片上系统闪存:也就是系统储存器,里面的程序由ST在生产线上写入,ISP下载方式用的就是它,目前STM407系列及其不推荐这种下载程序的方式,容易把芯片以锁死的方式报废,推荐通过STLINK的方式下载程序,方便快捷。

外部RAM用的更少了,这个不讨论。

BOOT引脚重映射

上图是程序启动的四种方式,前面三种:片上SRAM,片上用户Flash.片上系统闪存,可通过硬件BOOT0和BOOT1引脚以及重映射寄存器来设置,而最后面一种,只能通过重映射寄存器来设置。

先介绍BOOT引脚的设置方法,如下图:

经过我们的分析,只要将BOOT0设置为0(低电平),复位后,会在SYSCLK的第四个上升沿锁存BOOT引脚的值,单片机就会采用Flash的方式来启动,下图是实际电路图:

这里有几个注意点:

BOOT0为专用引脚,专门为这个功能服务的。

BOOT1则与GPIO引脚共用,在系统时钟第四个上升沿之后,就可以作为GPIO使用。

器件退出待机模式时,还会对BOOT引脚重新采样。因此,当器件处于待机模式时,这些引脚必须保持所需的自举模式配置。

如果器件从SRAM自举,在应用程序初始化代码中,需要使用NVIC异常及中断向量表和偏移寄存器来重新分配SRAM中的向量表。

重映射寄存器

还有一种设置方式,是通过重映射寄存器

这个用到的不多,不做分析。

总结:

最后,做一个总结。上一篇文章有这么一个图:

我们以Flash为启动举例:开机复位之后,在SYSCLK第四个上升沿,系统检测到BOOT0引脚是低电平,选择主Flash启动,这个时候,通过单片机内部的操作,把地址0x0000_0000~0x000FFFF地址的内容变为和Flash地址内容一样(不是复制,如果设置的是SRAM,那么内容就和SRAM中内容相同),同时把0x00写入重映射寄存器中,开始程序的执行。

下一节,讲解位带的操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值