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 ……….. 2n

∴STM32的内存大小(寻址大小):2^32 = 4G

寻址范围:0x0000 0000 ~ 0xFFFF FFFF

存储器映射(**)

存储器本身没有地址信息,对存储器分配地址的过程称为存储器映射

存储器功能划分

这部分现在还不是很懂,感觉干做笔记也没啥用,打算学完了再过来补。。

寄存器映射(**)

寄存器基础知识

是一种特殊的存储器,可以实现对单片机各个功能的控制。

在于理解,其实就是身份证和名字的关系,给一个地址命名,使他作为控制一部分功能的开关。

STM32寄存器分类

  1. 内核寄存器
    1. 内核相关
    2. 中断控制
    3. SysTick
    4. 内存保护(STM32F103没有)
    5. 调试系统相关
  2. 外设寄存器(重点)
    1. 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

寄存器地址计算

将寄存器分为三部分:

  1. 总线基地址 BUS_BASE_ADDR [AHB-APB1,APB2]
    1. APB1的基地址也叫做外设基地址 PERIPH_BASE
  2. 外设基于总线基地址的偏移量PERIPH_OFFSET
  3. 寄存器相对外设基地址的偏移量(相当于8.2.4中的地址偏移)REG_OFFSET

寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET

寄存器映射(优)

使用外设结构体类型定义将外设基地址强转换成结构体指针,完成寄存器映射:

结构体,外设基地址

结构体,外设基地址

#define GPIOA ((GPIO_typeDef*)GPIOA_BASE)    //一次性定义7个结构体变量
&GPIOA —> ODR = 0xFFFF;
posted @   残肢  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示