本节与 微处理器原理与应用 课程内容类似
系统架构
CM3内核
Cortex-M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统),可寻址空间为 4GB。
Cortex-M3处理器使用一个3级流水线。流水线的3个级分别是:取指,解码和执行。
STM32系统架构
- 闪存存储器接口 --- FLITF(The Flash memory interface):ICode与Flash的接口。
- 闪存 --- Flash:系统掉电后也能正常保存,用于存放静止态的程序和数据。
- 静态随机存取存储器 --- SRAM:掉电后数据流失,但读写极快,用于暂存数据(变量)。(f10x系列为64K字节SRAM)
- 先进高性能总线 --- AHB(Advanced High-performance Bus):AHB总线协议
- 先进外设总线 --- APB(Advanced Peripheral Bus):APB1(低速)操作速度限于36MHz,APB2(高速)操作速度最高72MHz。(当对APB寄存器进行8位或者16位访问时,该访问会被自动转换成32位的访问)
- 安全数字输入输出口 --- SDIO:可作为SD卡接口
寄存器映射
给有特定功能的内存单元取一个别名(如:GPIOA_ODR),这个别名就是寄存器,这个给已经分配好地址的有特定功能的内存单元取名的过程就叫做寄存器映射。
通过寄存器别名方式访问内存单元
#define uint32_t unsigned int
// GPIOB口的ODR寄存器的地址为 0x40010C0C
// ODR寄存器为输出数据寄存器
#define GPIOB_ODR (*(uint32_t*)(0x40010C0C))
// GPIOB 输出端口(16个端口)全部置 1
GPIOB_ODR = 0xFF;
//PB0输出低电平
GPIO_ODR &= ~(1<<0);
//PB0输出高电平
GPIO_ODR |= (1<<0);