问题引入:
用一句话回答以下问题:
(本章重点在 1.1.3 和 1.1.4)
(图)
学会看丝印图
学会辨别正方向(芯片上的小圆点与PCB上的小圆点对应)
(图)
芯片主要是由内核和外设组成。
内核(主控制器):
外设(从控制器):
总线:
内核与外设通过总线连接,其分为:I(指令)、S(系统)、D(数据)总线。
几个总线同时访问某个外设或者内核,产生竞争的时候,总线矩阵会使用调度算法进行仲裁。
STM32F42xx的总线接口
(图)
存储器本身是不具有地址信息的,地址信息是由用户或者厂商分配的,为存储器重新分配地址的过程即为存储器映射。
Cortex - M4内核是32位的,可以寻址2的32次方,也就是4GB(0x0000 0000 - 0xFFFF FFFF)的内存空间,
这4GB的内存空间被分成了8个Block,每个Block都有特定的功能,每个Block大小为512MB。(教程里有每个Block的功能划分)
Block0用于设计Flash,429IGT6只用了1MB。
Block1用于设计Sram,用于存储变量,429IGT6用了256KB,被分成了三个部分:Sram1为112KB,Sram2为16KB,Sram3为64KB。
Block2用于设计片上外设。外设根据速度不同被分成四条总线进行控制:AHB1、AHB2、APB2、APB1。
(图)
Block3是FMC的bank1 - bank2,用于扩展外部存储,一个bank为256MB,板上拓展了一个大小为8MB的Sram。
Block4是FMC的bank3 - bank4
Block5用于FMC
Block6用于FMC
Block7为Cortex - M4的内部外设,是由Arm公司设计的,如:NVIC等。
通过地址和偏移量间接访寄存器。
问题引入:
通过绝对地址访问内存单元:
//GPIO端口全部输出高电平
*(unsigned int *)(0x40021C14) = 0xFFFF;
0x40021C14是输出数据寄存器OCR的地址,如何找到?
(unsigned int *)的作用是什么?
通过寄存器别名方式访问内存单元:
#define GPIOH_ODR *(unsigned int *)(0x40021C13)
GPIOH_ODR = 0XFF;
什么是寄存器?
什么是存储器映射?
手机扫一扫
移动阅读更方便
你可能感兴趣的文章