微控制器内核与资源


文档摘要

第 2 章 · 微控制器内核与资源 章节摘要:寄存器写在哪个地址、为什么写之前要先开时钟、变量到底落在 Flash 还是 RAM、72 MHz 从哪来——本章回答这些"动手之前的为什么"。我们把 STM32 内部拆成 CPU 内核、总线与存储、时钟系统三块,逐块建立空间感:程序编出来之后如何铺进芯片、跑起来之后时钟怎么分发、没电的时候状态怎么保住。带着这张内部地图进入第 3 章,点灯代码里每一行都不再是咒语。 本章学习目标 读完本章并动手验证后,你应当能够: 画出 STM32F103 的总线骨架,指出内核、Flash、SRAM、APB 外设各自挂在哪条总线上; 解释"存储映射 I/O"的含义,并说出外设寄存器地址与内存地址在访问方式上的异同; 看到 .map 文件时,指出 .text、.

第 2 章 · 微控制器内核与资源

章节摘要:寄存器写在哪个地址、为什么写之前要先开时钟、变量到底落在 Flash 还是 RAM、72 MHz 从哪来——本章回答这些"动手之前的为什么"。我们把 STM32 内部拆成 CPU 内核、总线与存储、时钟系统三块,逐块建立空间感:程序编出来之后如何铺进芯片、跑起来之后时钟怎么分发、没电的时候状态怎么保住。带着这张内部地图进入第 3 章,点灯代码里每一行都不再是咒语。

本章学习目标

读完本章并动手验证后,你应当能够:

  • 画出 STM32F103 的总线骨架,指出内核、Flash、SRAM、APB 外设各自挂在哪条总线上;
  • 解释"存储映射 I/O"的含义,并说出外设寄存器地址与内存地址在访问方式上的异同;
  • 看到 .map 文件时,指出 .text、.data、.bss 三段各自的内容、大小与落位;
  • 说明"变量初值由启动代码从 Flash 搬运到 RAM"的过程,并解释为什么 const 常量可以不占 RAM;
  • 手算任意目标主频的 PLL 分频倍频参数,并说出睡眠、停机、待机三种低功耗模式的唤醒代价差异。

核心概念速览

微控制器可以概括为"一条总线串起的一群资源"。CPU 取指执行,Flash 存代码与常量,SRAM 存变量与栈,外设寄存器被映射到统一地址空间里,时钟树像配电网络一样给每个单元供"节拍电"。

一句话记住本章:地址空间是土地,时钟是水电,程序搬进来之前,先得通水电。

图 2-1:STM32F103 内部资源总览

图 2-1:STM32F103 内部资源总览

子章节导航

2.1 CPU 内核与存储映像 —— 拿到这颗芯片的"地址地图":Cortex-M3 的总线结构、外设寄存器为什么出现在 0x4000 开头的地址段,以及用指针访问外设的标准写法。

2.2 Flash、RAM 与变量落位 —— 程序从编译到运行的空间故事:链接脚本如何分区、启动代码如何搬运初值、栈和堆各从哪头生长,学会从 .map 文件里核对每一段的去向。

2.3 时钟树与低功耗设计 —— 72 MHz 从哪来、怎么分给各个外设;三种低功耗模式的进出代价与时钟门控的第一手实践。

两个学习提示提前给出。其一,本章代码多、概念密,建议边读边把寄存器地址画在纸上——手工画一遍地址地图的效果远胜反复看书;其二,ESP32 读者不必因 STM32 的例程而跳章,Xtensa 与 Cortex-M 在"统一编址、时钟门控、段布局"上思想完全同构,学会一套再迁移另一套只需要查表功夫。本章不追求把每个寄存器讲全——那是参考手册的任务——只追求把"地图、落位、节拍"三个骨架概念焊牢,焊牢之后的手册阅读速度会快得超出预期。

怎么自查掌握程度

每一节读完,用一道小题检验自己。2.1 的自测:说出 0x4001 0800 这个地址属于谁、往那里写 1 会发生什么。2.2 的自测:一个工程 text 4000、data 100、bss 2000,Flash 与 RAM 各占多少?栈放在 RAM 的哪一端?2.3 的自测:HSE 失效的板子上,串口还能不能用?用什么时钟源?三道题都答得干脆,就可以放心进第 3 章;答不上来,回到对应小节重读——本章是全书唯一"纯地基"的章节,值得反复回看。

各节之间的推进逻辑

三节走"空间 → 时间"两步。先有空间:2.1 的地址映像是所有寄存器访问的前提,2.2 把"代码和变量放在哪"补完;再有时间:2.3 的时钟树决定每个外设的节拍,顺便带出功耗问题。这个顺序和第 3 章严丝合缝——点亮 LED 那段代码的每一行,分别对应本章三节的知识:地址从 2.1 来,变量落位规则在 2.2,开时钟那行属于 2.3。

前置知识与后续延伸

你需要第 1 章的范式概念,加上 C 语言里指针和位运算的基本功。2.2 节会露一点链接脚本的样子,看不懂语法没关系,抓住"段"这个概念即可。往后看:第 3 章的 GPIO 实战是本章的直接应用;第 4 章定时器的分频计算建立在 2.3 的时钟树上;第 7 章的启动流程与 Bootloader 则是 2.2 存储布局的产品级展开。ESP32 读者同样值得通读——Xtensa 架构细节不同,但存储映射、时钟门控、功耗模式的思想完全同构。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U