STM32F407 flash内存

2018-06-07 20:53:58编辑:什么鱼 关键字:STM32F407  flash内存

硬件平台:STM32F4 DISCOVERY开发板 型号:MB997A或MB997C
主芯片型号:STM32F405xx, STM32F407xx, STM32F415xx, 或 STM32F417xx


主要参考文档:

(1)PM0081 STM32F40xxx and STM32F41xxx Flash programming manual.pdf
(2)STM32F407 datasheet.pdf

 

    做为嵌入式方面的开发人员,拿到一个芯片后,我们首先看它的参数指标,有多少多少容量的RAM,多少多少容量的Flash。当然,前提是芯片自带这两个模块。
    今天我们只研究Flash的结构:)
(一)声明
    STM32F405xx, STM32F407xx, STM32F415xx, 和 STM32F417xx的Flash模块都是一样的,所以,我们在文章后面统一以STM32F4代表它们。
(二)概览
    首先来一张概览图吧

 

 

 

2.1 Main memory
    Main memory部分各个Sector相加最后正合适等于1024Kbyte,这也是与文档开头说的Capacity up to 1 Mbyte相符的。在这个区域里主要是存储我们用户编写的程序,这里你可能看到了,该片存储区地址是从0x08000000开始的,这也就是为什么我们在使用ST-Link2烧写程序的时候,要规定起始地址是0x08000000的原因了。
2.2 System memory
    System memory区域是系统保留区,用来在“System memory boot”模式下启动芯片。存储的是一段特殊的程序,叫做bootloader,通过运行此段区域里的程序,可以对Main memory进行重新烧写。举个栗子,如果我们选择以System memory boot模式启动,同时插上了带有系统固件的U盘,那么经过配置后,bootloader就可以读出U盘里的固件,烧写到Main memory区域里去,怎么样,方便吧!也就是说,给芯片重新烧写固件,可以通过USB OTG FS的方式!神奇的功能:)
2.3 OTP area

 

 

 

    这段区域更是神奇,OTP是One-time programmable的缩写,从字面上可以看出来,此段区域是一次性编程区。但是,机智的人类也有犯错误的时候,万一写错了怎么办!ST公司考虑到这一点,在从0x1FFF7A00地址开始的16个字节是带有“锁”功能的字节,当你确定OTPx区域写进去的数据确实没有错误了,你就可以对LOCKBx地址写入0x00,从此OTPx区域就没法更改了。
2.4 Option bytes
    官方文档应该写错了吧,0x1FFFC000-0x1FFFC00F怎么会是16Kbytes呢?应该是16bytes才对吧。


关键字:STM32F407  flash内存

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/article_2018060739645.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32学习笔记之总线外设映射
下一篇:STM32—— AHB、APB详解

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F407学习笔记——GPIO_按键控制LED亮灭

#include <stm32f4xx.h>#include "stm32f4xx_conf.h"#include "delay.h" GPIO_TypeDef* io_led=GPIOC;//定义一个指向结构体GPIO_TypeDef的io_led  const u16 pin_led=GPIO_Pin_1;//引脚GPIO_TypeDef* io_key=GPIOC;const u16 pin_key=GPIO_Pin_0; void Led_Init(){ GPIO_InitTypeDef GPIO_init_l;//用于初始化的结构体
发表于 2018-07-21 11:07:23

【stm32f407】外部中断实现按键中断方式

一.外部中断STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F407的22个外部中断为:EXTI线0~15:对应外部IO口的输入中断。EXTI线16:连接到PVD输出。EXTI线17:连接到RTC闹钟事件。EXTI线18:连接到USB OTG FS唤醒事件。EXTI线19:连接到以太网唤醒事件。EXTI线20:连接到USB OTG HS(在FS中配置)唤醒事件。EXTI线21:连接到RTC入侵和时间戳事件。EXTI线22:连接到RTC唤醒事件。从上面可以看出
发表于 2018-07-20 21:14:56

STM32F103的SysTick使用方法

写下来,方便以后用。void SysTick_Configuration(void){  /* Setup SysTick Timer for 10 msec interrupts  */  if (SysTick_Config(SystemCoreClock / 100))                //SysTick配置函数  {     /* Capture error */ 
发表于 2018-07-20 21:06:43

STM32F407ZGT6使用Systic定时器实现延时

;  18-June-2018  * @brief   这个头文件包含了STM32F407ZGT6开发板的延时相关的函数.   ******************************************************************************  * @attention  * 官方库文件里有参考代码  * 为保证延时系统的精准,要求系统主频率越高越好  * 为保证延时系统的完整支持,系统主频率至少8MHz  * 使用CM4系统定时器,中断优先级最低  *  * @更新
发表于 2018-07-20 20:21:48

STM32F072在8M下的软件延时

    使用定时器产生的延时精度确实是高,但是也相对麻烦,软件延时虽然精度不高,但也相对简单,使用方便,在精度要求不高的情况的可以使用。                使用的是STM32F032 Nucleo开发板,为内部8M晶振。    以下延时函数用示波器测得,精度小于1us。//STM32F072RB Nucleo//在内部晶振为8M的情况下 void delay3us()//3us{ int i; for(i=0;i<1;i++);} void delay10us()//10us
发表于 2018-07-20 20:21:10

Stm32f01x_SysTick定时器_延时功能

;stm32f10x.h>#include <sys.h>//配置systick 寄存器void SysTick_Configuration(void) { SysTick->VAL = 0;  SysTick->LOAD = (72000000/8000000)*1000;//´ú±íÿ¸ömsÐèÒªµÄ9000¸ösystickʱÖÓÊý SysTick->CTRL |= 0x06;  } //中断处理函数void SysTick_Handler(void) //???? { extern unsigned
发表于 2018-07-20 20:01:49

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved