STM32八股【2】-----ARM架构

1、架构包含哪几部分内容

  • 寄存器
  • 处理模式
  • 流水线
  • MMU
  • 指令集
  • 中断
  • FPU
  • 总线架构

2、以STM32为例进行介绍

2.1 寄存器

寄存器名称作用
R0-R3通用寄存器用于数据传递、计算及函数参数传递;R0 也用于存储函数返回值。
R4-R12通用寄存器用于存储局部变量,减少频繁的内存访问。
R13栈指针 (SP)指向当前栈顶,负责管理栈操作。分为主栈指针 (MSP)进程栈指针 (PSP):系统中断处理和普通任务可以使用不同的栈。栈指针用于管理栈的操作,包括函数调用时保存现场和中断处理时保存寄存器状态。
R14链接寄存器 (LR)保存函数调用返回的地址,函数返回时恢复程序执行。
R15程序计数器 (PC)指向当前执行的指令地址,控制程序执行的流程。
xPSR程序状态寄存器包含条件标志 (N, Z, C, V) 以及处理器状态 (T 位用于 Thumb 指令集)。
CONTROL控制寄存器控制处理器工作模式,如栈指针选择 (MSP/PSP) 和权限级别 (特权级/用户级)。
PRIMASK中断屏蔽寄存器屏蔽所有可屏蔽中断,保证关键代码段不被中断打断。
BASEPRI基础优先级寄存器设置中断优先级屏蔽阈值,低于该阈值的中断会被屏蔽。
FAULTMASK故障屏蔽寄存器屏蔽所有异常,包括硬件故障,通常用于系统恢复或严重故障时。

分类记忆:
通用寄存器:R0-R12
R0-R3:用于数据传递、计算及函数参数传递;R0 也用于存储函数返回值。
R4-R12:用于存储局部变量,减少频繁的内存访问。
特殊功能寄存器
R13(栈指针 SP):指向当前栈顶,管理栈操作。
R14(链接寄存器 LR):保存函数调用返回地址。
R15(程序计数器 PC):指向当前执行的指令地址,控制程序流程。
状态和控制寄存器
xPSR(程序状态寄存器):包含条件标志和处理器状态。
CONTROL(控制寄存器):控制处理器工作模式。
PRIMASK、BASEPRI、FAULTMASK:用于中断和故障管理。

2.2 处理模式

stm32默认普通程序和中断程序都工作在特权级。

  • 处理者模式
    • 始终运行在特权级
  • 线程模式
    • 可以运行在特权级和非特权级,通过CONTROL寄存器控制。

2.3 流水线

  • 概念
    MCU的流水线,指的是在指令执行过程中将一条指令的不同阶段拆分成多个步骤,让这些步骤可以并行执行,从而提高指令吞吐量。

  • 一个典型的 ARM 处理器指令流水线包括以下阶段:

    • 取指(Fetch):从内存中获取指令。
    • 译码(Decode):将指令翻译成处理器可以理解的操作。
    • 执行(Execute):执行指令,如加法、乘法、位移等操作。
    • 存储(Memory Access):如果需要,进行内存访问,读取或写入数据。
  • ARM 处理器的流水线可以有多个阶段,常见的有 3 级、5 级或 7 级流水线,甚至更深的流水线设计。

2.4 MMU

2.5 指令集

2.6 中断

2.7 FPU

2.8 总线架构

回顾

  • stm32有哪些通用寄存器
  • stm32有哪些特殊功能寄存器
  • stm32有哪些状态和控制寄存器
  • 讲一下stm32的两种处理模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38300.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析 Java Stream API:筛选子节点的优雅实现!!!

🚀 深入解析 Java Stream API:筛选子节点的优雅实现 🔧 大家好!👋 今天我们来聊聊 Java 8 中一个非常常见的操作:使用 Stream API 从 Map 中筛选出特定条件的元素。🎉 具体来说,我们…

统计学重要概念:自由度

在统计学中,自由度(degrees of freedom,简称df)是一个重要的概念,它表示在计算某个统计量时可以自由变化的值的数量。对于一个样本量为n的样本,自由度通常为n-1,这是因为我们需要用样本数据来估…

数据结构-排序

文章目录 1. 排序的概念2. 常见排序算法的实现2.1 插入排序1)插入排序一)基本思想二)特性及时间复杂度三)代码实现 2)希尔排序(缩小增量排序)一)基本思想二)特性及时间复…

压缩壳学习

壳是什么 壳就是软件的一个保护套,防止软件被进行反编译或被轻易地修改。 其作用就是为了保护软件。 常见的大类壳有压缩壳、加密壳、VM 壳的分类。 压缩壳顾名思义就是用来减小软件的文件大小的;加密壳,通过加密软件来保护软件&#xff…

《AI大模型趣味实战》第6集:基于大模型和RSS聚合打造个人新闻电台

《AI大模型趣味实战》第6集:基于大模型和RSS聚合打造个人新闻电台 摘要 本文将带您探索如何结合AI大模型和RSS聚合技术,打造一个功能丰富的个人新闻电台系统。我们将使用Python和PyQt5构建一个桌面应用程序,该应用可以从多个RSS源抓取新闻&…

(学习总结29)Linux 进程概念和进程状态

Linux 进程概念 冯诺依曼体系结构软件运行与存储分级数据流动的理论过程 操作系统操作系统(Operator System) 概念操作系统的功能与作用系统调用和库函数概念 进程概念描述进程 - PCBtask_struct查看进程通过系统调用获取进程标示符 PID通过系统调用 fork 函数创建进程简单使用…

LLM - CentOS上离线部署Ollama+Qwen2.5-coder模型完全指南

文章目录 离线安装OllamaOllama下载Ollama硬件需求Ollama 常用命令参考Ollama安装Ollama 服务管理&开机启动开启局域网访问 Ollama 服务 离线安装模型gguf 文件格式下载Qwen2.5-Coder-7B-Instruct-GGUF格式选择 ( gguf 版本 )构建Modelfile文件加载并运行离线模型测试 集成…

Linux——信号

目录 Linux——信号1.信号的基础了解2.技术应用角度的信号3.产生信号3.1按键组合3.2系统调用产生信号3.2.1 kill()3.2.2 raise()3.2.3 abort() 3.3**.** 软件条件产生信号3.4硬件异常产生信号3.4.1 /0异常3.4.2 内存越界异常 4.理解信号的存在5.总结一下6.核心转储7.全部信号都…

向量叉积的应用——正反画画

1 解题思路 解题思路涉及的向量积相关知识 c实现 #include<iostream> #include<vector>using namespace std;struct TrianglePoint {int x;int y; };int momentForce(TrianglePoint A, TrianglePoint B, TrianglePoint C) {//AB向量&#xff1a;(B.x-A.x, B.y-A.…

构建自定义MCP天气服务器:集成Claude for Desktop与实时天气数据

构建自定义MCP天气服务器:集成Claude for Desktop与实时天气数据 概述 本文将指导开发者构建一个MCP(Model Control Protocol)天气服务器,通过暴露get-alerts和get-forecast工具,为Claude for Desktop等客户端提供实时天气数据支持。该方案解决了传统LLM无法直接获取天气…

Web安全策略CSP详解与实践

引言 &#xff1a;在黑客攻击频发的今天&#xff0c;你的网站是否像“裸奔”一样毫无防护&#xff1f;跨站脚本&#xff08;XSS&#xff09;、数据注入等攻击随时可能让用户数据泄露。今天我们将揭秘一个网站的隐形保镖——内容安全策略&#xff08;CSP&#xff09;&#xff0c…

HC-05与HC-06蓝牙配对零基础教程 以及openmv识别及远程传输项目的概述

这个是上一年的项目&#xff0c;之前弄得不怎么完整&#xff0c;只有一个openmv的&#xff0c;所以openmv自己去我主页找&#xff0c;这篇主要讲蓝牙 这个是我在使用openmv连接单片机1然后单片机1与单片机2通过蓝牙进行通信 最终实现的效果是&#xff1a;openmv识别到图形和数…

点云分割方法

点云分割 通过判断三维距离&#xff0c;实现对创建3团点云的分割 通过判断三维距离&#xff0c;实现对创建3团点云的分割 * 点云1 gen_object_model_3d_from_points (rand(100), rand(100),rand(100), Points1)* 点云2 gen_object_model_3d_from_points (rand(100), 2rand(100…

SpringBoot3使用CompletableFuture时java.util.ConcurrentModificationException异常解决方案

问题描述 在Spring Boot 3项目中&#xff0c;使用CompletableFuture进行异步编程时&#xff0c;偶发{"code":500,"msg":"java.util.ConcurrentModificationException"}异常&#xff0c;但代码中并未直接操作List或CopyOnWriteArrayList等集合类…

细说卫星导航:测距定位原理

测距定位原理 1. 伪距测量技术 核心原理&#xff1a;卫星发射信号&#xff0c;用户接收并记录传播时间&#xff0c;乘以光速得到距离&#xff08;伪距&#xff09;。 技术细节&#xff1a; 信号传播路径分析 信号结构&#xff1a; 卫星信号包含三部分&#xff1a; 载波&…

Linux系统管理与编程09:任务驱动综合应用

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 [环境] windows11、centos9.9.2207、zabbix6、MobaXterm、Internet环境 [要求] zabbix6.0安装环境&#xff1a;Lamp&#xff08;linux httpd mysql8.0 php&#xff09; [步骤] 5 …

RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”

嘿&#xff0c;亲爱的算法工程师们&#xff01;今天咱们聊一聊PDF解析的那些事儿&#xff0c;简直就像是在玩一场“信息捉迷藏”游戏&#xff01;PDF文档就像是个调皮的小精灵&#xff0c;表面上看起来规规矩矩&#xff0c;但当你想要从它那里提取信息时&#xff0c;它就开始跟…

RK3568 I2C底层驱动详解

前提须知&#xff1a;I2C协议不懂的话就去看之前的内容吧&#xff0c;这个文章需要读者一定的基础。 RK3568 I2C 简介 RK3568 支持 6 个独立 I2C: I2C0、I2C1、I2C2、I2C3、I2C4、I2C5。I2C 控制器支持以下特性: ① 兼容 i2c 总线 ② AMBA APB 从接口 ③ 支持 I2C 总线主模式…

UNIX网络编程笔记:基本TCP套接字编程

一、socket函数 一、socket函数核心参数与协议组合 函数原型与基本功能 #include <sys/socket.h> int socket(int family, int type, int protocol);• 功能&#xff1a;创建通信端点&#xff08;套接字&#xff09;&#xff0c;返回描述符供后续操作。 • 返回值&#…

JSON在AutoCAD二次开发中应用场景及具体案例

配置文件的读取 在AutoCAD插件开发中&#xff0c;可能需要生成、修改、读取配置文件中一些参数或设置。JSON格式的配置文件易于编写和修改&#xff0c;且可以方便地反序列化为对象进行使用。 运行后效果如下 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.Au…