STM32学习(一)—— ARM架构中通用寄存器
这里有一个常见误区ARM的R0-R15通用寄存器CPU内部和GPIO外设寄存器是两套完全独立的东西。它们之间不是直接对应的关系而是通过一种叫内存映射I/OMemory-Mapped I/O的机制来间接打交道的。1. 它们到底是什么区别在哪可以这样理解R0-R15 通用寄存器是CPU内部的高速临时便签用于指令执行时的数据暂存、地址计算等。它们是CPU架构的一部分数量固定且规模很小。GPIO外设寄存器是GPIO硬件模块的一部分位于CPU芯片内部但不在CPU核心内。它们是控制GPIO引脚的开关和状态灯如配置输入输出模式、读取电平、输出高低电平数量和功能由芯片厂商设计可能有成百上千个。2. 它们如何协同工作内存映射I/O为了让CPU能控制这些繁杂的外设ARM架构采用了统一编址的方式。也就是说GPIO的寄存器也被分配了特定的内存地址。对CPU而言操作GPIO寄存器就像操作普通内存地址一样读/写地址CPU通过R0-R15寄存器如R0、R1暂存GPIO寄存器的地址和要写入的数据。执行指令执行像STR存储或LDR加载这样的指令将数据从通用寄存器搬运到GPIO寄存器对应的内存地址上。GPIO响应GPIO模块监听到自己地址上的变化就会相应地改变引脚电平或状态。3. 一个具体的操作流程以常见的STM32单片机基于ARM Cortex-M为例如果要让GPIOB的第0个引脚输出高电平实际的操作过程如下找到GPIOB的基地址和ODR寄存器的偏移查阅芯片手册可知GPIOB的基地址是0x4001 0C00输出数据寄存器ODR的偏移是0x0C。所以ODR寄存器的物理地址就是0x4001 0C0C。在代码中操作这个地址C语言底层会通过指针向这个地址写入数据c// 将GPIOB_ODR的地址强制转换为指向32位整数的指针并写入0x0001 *(volatile unsigned int *)(0x40010C0C) 0x0001;注这里的volatile关键字是必须的它可以告诉编译器这个地址的值可能被硬件本身改变请不要对它做优化。CPU内部动作编译器会将上述C语言代码翻译成类似下面的汇编指令。这条指令会先把0x40010C0C这个地址值存入一个通用寄存器如R1再把0x0001存入R0最后用STR指令将R0的值写入R1指向的地址。assemblyLDR R1, 0x40010C0C ; 将GPIOB_ODR的地址加载到R1 MOV R0, #0x0001 ; 将值0x0001加载到R0 STR R0, [R1] ; 将R0的值存储到R1指向的内存地址 (即GPIOB_ODR)如此CPU就通过R0、R1这两个通用寄存器作为数据中转站完成了对GPIO外设寄存器的控制。在工程实践中芯片厂商提供的硬件抽象库HAL库或标准外设库Standard Peripheral Library已经通过结构体完美封装了这些地址映射关系我们通常直接操作结构体成员而不需要手动计算物理地址。例如上述操作在标准库中写作GPIOB-ODR 0x0001;。

相关新闻

LangChain链式调用与历史记录:构建可观测AI应用的核心实践

LangChain链式调用与历史记录:构建可观测AI应用的核心实践

1. 项目概述:为什么我们需要“写明白”LangChain的链与历史如果你最近在折腾大语言模型应用开发,大概率绕不开LangChain这个名字。它像是一个乐高积木箱,提供了各种标准化的组件,让你能把大模型、外部工具、数据源和业务逻辑拼装成…

2026/10/17 6:44:09 阅读更多 →
目前有影响力的AI公司情况

目前有影响力的AI公司情况

目前有影响力的AI公司情况将目前(2026年8月初)有影响力的AI公司情况,按“国外”和“国内”分开的两个表汇总,细化了产品代号和定位,方便普通用户整体认识和按需选择。国外主要 AI 公司及产品公司核心产品代号产品定位与…

2026/10/17 3:03:40 阅读更多 →
图片水印处理工具记录:多款 AI 去水印工具能力边界整理

图片水印处理工具记录:多款 AI 去水印工具能力边界整理

素材整理、图文处理过程中,常会需要清除图片上的水印、标识遮挡。不同去水印工具在处理方式、批量能力、复杂画面还原、文件隐私处理上存在差异。下文客观记录多款去水印工具基础能力与使用局限,本文无任何商业合作,不区分好坏优劣&#xff0…

2026/10/15 4:21:27 阅读更多 →

最新新闻

SAP固定资产实操避坑指南:AS01/AS02/AS05/MIGO高频故障解析

SAP固定资产实操避坑指南:AS01/AS02/AS05/MIGO高频故障解析

简介:本资源是一份面向SAP财务与资产管理人员、ERP实施顾问及初中级SAP用户的专业操作手册,聚焦固定资产(FI-AA)模块的全流程实务操作。手册系统讲解资产卡片创建(AS01)、修改(AS02)…

2026/10/17 20:07:14 阅读更多 →
Claude Code用了3个月,踩了7个坑之后,我终于把效率提升了300%:TaoToken统一Key接入与配置验证实录

Claude Code用了3个月,踩了7个坑之后,我终于把效率提升了300%:TaoToken统一Key接入与配置验证实录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 20:07:14 阅读更多 →
C++经典程序代码大全:从数据类型到运算符的语法速查与避坑指南

C++经典程序代码大全:从数据类型到运算符的语法速查与避坑指南

简介:面向初学者的完整版C经典程序代码合集,适合正在学习基本语法的高校学生、自学者以及准备上机练习或期末复习的读者。内容将多个可运行示例集中在一个doc文档中,覆盖变量声明与赋值、函数定义与调用、输入输出操作、常量声明、条件判断、…

2026/10/17 20:07:14 阅读更多 →
iDLG梯度反演攻击原理与防御:从图像重建到大模型隐私威胁

iDLG梯度反演攻击原理与防御:从图像重建到大模型隐私威胁

1. 项目概述:当模型训练的“副产品”开始说话最近在几个安全与隐私方向的技术社区里,频繁看到iDLG Improved Deep Leakage from Gradients这个词被反复提及——它不是某个新发布的开源框架,也不是某家大厂推出的商用服务,而是一篇…

2026/10/17 20:07:14 阅读更多 →
Kettle基础入门:Transformation与Job核心区别及实战避坑指南

Kettle基础入门:Transformation与Job核心区别及实战避坑指南

简介:本资源是一份面向1–3年经验研发人员的Kettle(Pentaho Data Integration)入门级教学PPT,聚焦ETL核心流程与工具实操,解决数据同步、清洗与集成场景中的基础建模与落地难题。全包仅含1个859KB的pptx文件&#xff0…

2026/10/17 20:07:14 阅读更多 →
Codex接入DeepSeek大模型教程:把auth.json改到TaoToken

Codex接入DeepSeek大模型教程:把auth.json改到TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 20:06:13 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →