STM32基础知识(严肃版)(*  ̄︿ ̄)
STM32基础知识(严肃版)
STM32系统框架(*)
Cortex M内核&芯片
Cortex-M是ARM架构的一系列32位处理器内核,就是板子的核心(Cortex-M3内核以及调试系统)是由ARM公司设计,其他如外设、时钟和复位、存储器、I/O由芯片制造商设计开发(如ST、GD、APM…) 了解就行。
F1系统架构
参考手册2.1系统构架
● 四个驱动单元:
─ Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
─ 通用DMA1和通用DMA2
● 四个被动单元
─ 内部SRAM
─ 内部闪存存储器
─ FSMC
─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备
总线时钟频率:
AHB:72mhz
APB1:36mhz
APB2:72mhz
因为我现在正在学STM32F103的板子,所以先更这个,以后学其他板子在慢慢加。
STM32寻址范围(*)
32位的单片机可以有32根地址线(两种状态:导通或不导通)
单片机内存地址访问的存储单元是按字节编址的(8个bit),也就是有8根数据线的意思。
地址线根数 | 地址编号(二进制) | 地址编号数(即内存大小) |
---|---|---|
1 | 0、1 | 2 |
2 | 00、01、10、11 | 4 |
n | ……….. |
∴STM32的内存大小(寻址大小):2^32 = 4G
寻址范围:0x0000 0000 ~ 0xFFFF FFFF
存储器映射(**)
存储器本身没有地址信息,对存储器分配地址的过程称为存储器映射
存储器功能划分
这部分现在还不是很懂,感觉干做笔记也没啥用,打算学完了再过来补。。
寄存器映射(**)
寄存器基础知识
是一种特殊的存储器,可以实现对单片机各个功能的控制。
在于理解,其实就是身份证和名字的关系,给一个地址命名,使他作为控制一部分功能的开关。
STM32寄存器分类
- 内核寄存器
- 内核相关
- 中断控制
- SysTick
- 内存保护(STM32F103没有)
- 调试系统相关
- 外设寄存器(重点)
- GPIO,UART,IIC,SPI,TIM,USB………
寄存器描述解读
当字典使用,主要看参考手册2.3、8.2.4。
举例
· 强转+解引用(把0xFFF赋值到地址为0x4001 080C的寄存器单元中):
*(unsigned int *)(0x4001 080C) = oxFFFF; // (将GPIOA0-15赋值1)
· 定义一个名字再操作
#define GPIOA_ODR *(unsigned int*)(0x4001 080C)
GPIOA_ODR = 0xFFFF
寄存器地址计算
将寄存器分为三部分:
- 总线基地址 BUS_BASE_ADDR [AHB-APB1,APB2]
- APB1的基地址也叫做外设基地址 PERIPH_BASE
- 外设基于总线基地址的偏移量PERIPH_OFFSET
- 寄存器相对外设基地址的偏移量(相当于8.2.4中的地址偏移)REG_OFFSET
寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET
寄存器映射(优)
使用外设结构体类型定义将外设基地址强转换成结构体指针,完成寄存器映射:
结构体,外设基地址
#define GPIOA ((GPIO_typeDef*)GPIOA_BASE) //一次性定义7个结构体变量
&GPIOA —> ODR = 0xFFFF;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具