STM32存储器映射

嵌入式学习 - ARM体系结构
嵌入式学习 - STM32存储器映射
嵌入式学习 - STM32F4启动分析

STM32, 从字面上来理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器

STM32产品命名规范

STM32的应用

STM32的应用于可穿戴、物联网、无人机、工业控制、医疗电子、汽车电子、电力系统、石油系统、燃气系统 ...等等领域。


STM32产品介绍

STM32F4体系架构

STM32F407采用的是Cortex-M4内核,内核即CPU,由ARM公司设计。ARM公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如ST、TI、Freescale, 负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设SoC。如GPIO、USART(串口)、I2C、SP等都叫做片上外设。

STM32F4存储器映射

32位系统下,每个进程的寻址范围是4G,即0x00 00 00 00 ~ 0xff ff ff ff
SoC上被控单元的FLASH, RAM和各类片上外设,这些功能部件的内存空间,共同排列在一个4GB的地址空间内,每个外设都有自己独有地址。我们在编程的时候,可以通过他们的地址找到这些外设,然后来操作他们;

存储器本身没有地址,给存储器分配地址的过程叫存储器映射;如果给存储器再分配一个地址就叫存储器重映射存储器映射就是为物理内存按一定编码规则分配地址的行为。

在下图Memory Map中的 8 个Block 里面,有 3 个块非常重要,也是我们最关心的三个块。 Block0用来设计成内部 FLASHBlock1用来设计成内部 RAMBlock2用来设计成片上的外设

STM32F4寄存器映射

寄存器映射基础上,给有特定功能的内存单元(外设)取别名的过程就叫寄存器映射

STM32F4为例,在存储器片上外设区域(存储器功能分类中Block2),内部以4字节为一个单元,每个单元对应不同的功能,且有对应的起始地址

操作硬件本质上就是操作寄存器。我们操作这些有特定功能的内存单元就可以控制外设工作;即找到特定功能单元的起始地址,通过C语言指针操作外设内存单元,从而实现对外设的控制

为了更便捷直接的访问每个内存单元的起始地址,我们根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名实质上就是寄存器名字。给已分配好地址(通过存储器映射实现)的有特定功能的内存单元取别名的过程就叫寄存器映射

STM32F4寄存器的访问

以访问GPIOA寄存器组、读写ORD寄存器为例,可在下图中文参考文档STM32F4xx 寄存器边界地址(续)了解到GPIOA 端口置位/复位功能的起始地址为:0x4002 0000

STM32F4xx中文参考手册.存储器映射

GPIOA各寄存器的偏移地址

MODER; //Address offset:0x00
OTYPER; //Address offset:0x04
OSPEEDR; //Address offset:0x08
PUPDR; //Address offset:0xOC
IDR; //Address offset:0x10
ODR; //Address offset:0x14
BSRR; //Address offset:0x18
LCKR; //Address offset:0x1C
:每一组GPIO端口都有一套上述的寄存器去配置它自己的功能(STM32F4xx中文参考手册-GPIO)

读、写ORD寄存器
//对地址进行宏定义
#define GPIOA_BASE (unsigned int 0x40020000)
#define GPIOA_ODR  (GPIOA_BASE +0x14)
//读操作
val = *(unsigned int *)GPIOA_ODR;
//写操作
*(unsigned int *)GPIOA_ODR = val;

//改进
#define GPIOA_ODR (*(unsigned int *)GPIOA_BASE + 0x14 )
val = GPIOA_ODR; //读
GPIO_ ODR=val; //写
/* 用结构体封装寄存器
根据每一类外设对应的寄存器组地址都是连续增长的特点,引入C语言中的结构体语法对寄存器进行封装。
我们访问GPIOA的控制寄存器组时,直接使用宏定义好GPIO_TypeDef类型的指针,指针指向GPIOA端口的首地址,这样我们直接用宏GPIOA访问该外设的任意一个寄存器。
注:“stm32f407xx.h”已经封装了所有的外设访问

// -- 寄存器的访问 --
GPIOA->MODER = 0x20;
GPIOA->OSPEEDR = 0x16; 
*/
typedef struct {
uint32_t        MODER;      /*Address offset: 0x00 */
uint32_t        OTYPER;     /*Address offset: 0x04 */
uint32_t        OSPEEDR;    /*Address offset: 0x08 */
uint32_t        PUPDR;      /*Address offset: 0x0C */
uint32_t        IDR;        /*Address offset: 0x10 */
uint32_t        ODR;        /*Address offset: 0x14 */
uint32_t        BSRR;       /*Address offset: 0x18 */
uint32_t        LCKR;       /*Address offset: 0x1C */
} GPIO_TypeDef;

#define     GPIOA_BASE        ( (unsigned int ) 0x40020000 )
#define     GPIOA    ((GPIO_TypeDef *) GPIOA_BASE)

写在最后:

STM32开发环境搭建、存储器映射、启动流程分析
STM32寄存器映射
STM32 F4 存储结构
玩转STM32(13)存储空间的开始地址

STM32F4x7-Datasheet.pdf
STM32F4xx中文参考手册.pdf
STM32F407IGT核心板原理图.pdf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容