STM32单片机汇编资料学习(1)

2023-05-16

目录

文章目录

  • 目录
  • 摘要
  • 1.Cortex-M3内核架构
    • ![在这里插入图片描述](https://img-blog.csdn.net/20181009223510343?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ![在这里插入图片描述](https://img-blog.csdn.net/20181009223623972?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ![在这里插入图片描述](https://img-blog.csdn.net/2018100922380950?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
  • 2.Cortex-M3指令系统的开发
  • 3.Cortex-M3简介
  • 4.Cortex-M3寄存器组
    • 1.寄存器特性
    • 2.特殊功能寄存器特性
    • 3.具体学习
  • 5.Cortex-M3操作模式和特权级别
  • 6.Cortex-M3中断
  • 7.Cortex-M3的存储器
  • 8.Cortex-M3的总线接口
  • 9.存储器保护单元(MPU)

摘要



本节主要记录自己学习STM32汇编语言的过程。。



ARM Cortex-M3处理器基于最细腻的32位ARMV7架构,支持Thumb-2指令



1.Cortex-M3内核架构



在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.Cortex-M3指令系统的开发



在这里插入图片描述

在这里插入图片描述
总结:Cortex‐M3 只使用 Thumb‐2 指令集。这是个了不起的突破,因为它允许 32 位指令和 16 位指令
水乳交融,代码密度与处理性能两手抓,两手都硬。而且虽然它很强大,却依然易于使用



3.Cortex-M3简介



在这里插入图片描述



4.Cortex-M3寄存器组



在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.寄存器特性

在这里插入图片描述

2.特殊功能寄存器特性

在这里插入图片描述
在这里插入图片描述

3.具体学习

CM3 拥有通用寄存器 R0‐R15 以及一些特殊功能寄存器。 R0‐R12 是最“通用目的” 的, 但是绝大多数的 16 位指令只能使用 R0‐R7(低组寄存器),而 32 位的 Thumb‐2
指令则可以访问所有通用寄存器。 特殊功能寄存器有预定义的功能, 而且必须通过专用的指
令来访问

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
寄存器的 PUSH 和 POP 操作永远都是 4 字节对齐的——也就是说他们的地址必须是
0x4,0x8,0xc,……。这样一来,R13 的最低两位被硬线连接到 0,并且总是读出 0(Read As Zero)。

这里可以对比:8086cpu的push和pop指令

在这里插入图片描述



5.Cortex-M3操作模式和特权级别



在这里插入图片描述
在这里插入图片描述



6.Cortex-M3中断



在这里插入图片描述
在这里插入图片描述



7.Cortex-M3的存储器



总体来说, Cortex‐M3 支持 4GB 存储空间,如图 所示地被划分成若干区域。

在这里插入图片描述



8.Cortex-M3的总线接口



Cortex‐M3 内部有若干个总线接口,以使 CM3 能同时取址和访内(访问内存),它们是:

  • 指令存储区总线(两条)
  • 系统总线
  • 私有外设总线

有两条代码存储区总线负责对代码存储区的访问,分别是 I‐Code 总线和 D‐Code 总线。前者用
于取指,后者用于查表等操作,它们按最佳执行速度进行优化。
系统总线用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外 RAM,片外扩展设备,
以及系统级存储区的部分空间。私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。



9.存储器保护单元(MPU)



Cortex‐M3 有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分
别施加不同的访问限制。当检测到犯规(violated)时, MPU 就会产生一个 fault 异常,可以由 fault
异常的服务例程来分析该错误,并且在可能时改正它。
MPU 有很多玩法。最常见的就是由操作系统使用 MPU,以使特权级代码的数据,包括操作系
统本身的数据不被其它用户程序弄坏。 MPU 在保护内存时是按区管理的(“区”的原文是 region,以
后不再中译此名词——译注)。它可以把某些内存 region 设置成只读,从而避免了那里的内容意外被
更改;还可以在多任务系统中把不同任务之间的数据区隔离。一句话,它会使嵌入式系统变得更加
健壮,更加可靠.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32单片机汇编资料学习(1) 的相关文章

  • java 中 Color类

    Color类 Color类是用来封装颜色的 xff0c 在上面的例子中多次用到 使用Color对象较为简单的方法是直接使用Color类提供的预定义的颜色 xff0c 像红色Color red 橙色Color orange等 xff1b 也可
  • C语言位运算符:与、或、异或、取反、左移和右移

    语言位运算符 xff1a 与 或 异或 取反 左移和右移 位运算是指按二进制进行的运算 在系统软件中 xff0c 常常需要处理二进制位的问题 C语言提供了6个位操作运算符 这些运算符只能用于整型操作数 xff0c 即只能用于带符号或无符号的
  • android 打开蓝牙设备 显示已经配对的蓝牙设备 ,并将已配对的蓝牙设备显示在textview中

    xff08 1 xff09 要想使用android 手机的Bluetooth xff0c 需要在androidmanifest文件中加入使用蓝牙的权限 lt uses permission android name 61 34 androi
  • iOS 7 点击按钮切换视图

    xff08 1 xff09 创建一个项目 xff0c 名字为切换视图 xff08 2 xff09 打开Main storyboard文件 xff0c 将视图中的ViewController视图控制器拖动到画布中 xff08 3 xff09
  • Javaweb 入门测试程序(jsp)

    关于进行jsp程序开发的入门测试小程序 xff08 1 xff09 必须的工具软件 java开发工具包jdk 需要进行环境变量的设置 xff0c 有Java开发基础的人这一步一看就懂 xff01 xff08 2 xff09 安装MyEcli
  • 自媒体平台运营的感悟

    1 关键是自媒体平台的定位 西游记中唐僧有着坚定的志向 西天取经 xff0c 普渡众生 抱着这样的初心和宗旨 xff0c 打造了自己的取经团队 一路上历经九九八十一难 xff0c 初心不改 xff0c 终于到达西天 xff0c 取得真经 x
  • 排序方法总结(1)冒泡排序 选择排序

    排序方法是一种基本的 重要的算法 xff0c 排序的方法有很多 xff0c 现把一些基本排序方法的算法和c 代码列出如下 xff0c 供大家思考 xff0c 借鉴 xff0c 进步 在进行排序之前首先要做的一件事就是选择排序的准则 xff0
  • 排序方法总结(2)插入排序

    插入排序 插入排序类和大家玩的纸牌游戏有些类似 xff0c 在发牌的过程的过程中用右手起的牌 xff0c 总是和左手里的排进行比较 xff0c 然后放在恰当的位置 这就是插入排序的思想 以数组为例 xff0c 其算法是 xff1a xff0
  • docker 备份

    docker数据管理 xff1b 把仓库挂载到 root adata v 挂载点前面虚拟机目录 xff1a 仓库内的目录 docker run itd v data data centos bash 数据卷容器用于多个容器共享文件 xff0
  • 排序方法总结(3)希尔排序

    希尔排序 希尔排序是对插入排序的改进 xff0c 对中等规模的数据排序效率较高 xff01 交换的次数变得少了 xff0c 效率就高了 希尔排序的算法 1 相距为 k 的数据进行比较 xff0c 若不符合排序的条件 xff0c 就进行交换
  • 求阶乘的几种方法

    求阶乘的几种方法 xff08 1 xff09 常规求阶乘 利用循环即可求出 include lt stdio h gt int main int m n i sum 61 1 printf 34 please input one numbe
  • C++sort函数的用法

    C 43 43 sort 函数的用法 近来看了c 43 43 标准库这本书 xff0c 学到了很多 xff0c 就把这其中的一点 C 43 43 sort 函数的用法写下来和大家分享吧 xff01 xff08 一 xff09 为什么要用c
  • Design Patterns Elements of Reusable Object-Oriented Software(一)Introduction(介绍)

    1 Introduction xff08 介绍 xff09 Designing object oriented software is hard and designing reusable object oriented software
  • 排序方法之堆排序

    堆排序的实现 xff08 xff09 创建初始堆 xff08 二 xff09 堆排序 在创建初始堆之前首先要了解一些关于堆的概念 xff0c 还需要了解一些关于平衡二叉树的内容 xff08 1 xff09 堆的节点数 61 n 2 并且是只
  • ros 运行launch文件报错:找不到所在路径——创建多个工作空间注意问题

    ros 运行launch文件报错 xff1a 找不到所在路径 创建多个工作空间注意问题 问题描述解释与解决办法 问题描述 基于UR5运行逆运动学代码时 xff0c 出了 no motion plan found 的bug xff0c 找了两
  • 手把手教你实现window图片爬虫(一)

    第一篇 xff1a 爬虫设计思路及原理 刚听说爬虫时 xff0c 估计很多人觉得很神奇 xff0c 是什么赋予了它生命力做到在网络上到处爬取的呢 xff1f 等我说完你会恍然大悟 xff0c 其实并没有多高深的技术 xff0c 人人都可以写
  • 常见的系统设计问题以及思路

    综述 系统设计分类 系统设计类问题是面试常见的题目 xff0c 也是提升个人架构思维和系统思维的好途径 xff0c 本文会持续更新 xff0c 记录一些经典的系统设计问题 常见的系统设计问题 xff0c 大概分为两个类型 xff1a 垂直场
  • docker 授权给普通用户

    目录 docker 授权给普通用户 给普通用户增加docker命令的权限给普通用户增加启动和关闭docker的权限 docker 授权给普通用户 给普通用户增加docker命令的权限 我们用命令可以看出docker下的属主属组都是root
  • APM飞控学习之路:1 无人机的分类与发展

    旧时王谢堂前燕 xff0c 飞入寻常百姓家 无人机也像那堂前燕 xff0c 从以前为军事所专属 xff0c 负责侦查和战斗 xff0c 飞入民用领域 xff0c 在航拍 植保 快递 救灾 巡检 拍摄等行业大显身手 xff0c 无人机 43
  • STM32 HAL库串口回调机制详解

    在开始学习STM32的时候 xff0c 会发现 xff0c 怎么有个串口中断回调和串口中断不一样的概念啊 xff0c 感觉很头晕 xff0c 找了很久也没发现到底区别在哪儿 xff0c 回调机制是怎么实现的 下面就详解一下 xff1a 通过

随机推荐

  • printf重定向问题

    我用的STM32型号为STM32F100VBT6B 重定向方法一 xff1a ifdef GNUC With GCC RAISONANCE small printf option LD Linker gt Libraries gt Smal
  • 流媒体服务器原理和架构解析

    原文 xff1a https blog csdn net xuheazx article details 52020933 一个完整的多媒体文件是由音频和视频两部分组成的 xff0c H264 Xvid等就是视频编码格式 xff0c MP3
  • SBUS协议学习

    目录 文章目录 目录摘要1 什么是SBUS协议2 STM32 解析 SBUS协议2 1初始化串口接收2 2配置串口中断服务函数2 3进行SBUS数据解析2 4在任务中调用2 5相关变量和定义 3 获取数据 摘要 本节主要记录自己学习SBUS
  • ardupilot EKF2速度位置融合算法

    目录 文章目录 目录摘要1 更新滤波器2 使用GPS和测距仪更新EKF2的速度 xff0c 位置信息1 高度融合算法2 进行高度估计 摘要 本节主要记录自己看EKF2的速度位置融合算法 1 更新滤波器 span class token ke
  • C#学习之-------mp地面站 Mavlink Demo代码学习《0》

    目录 文章目录 目录摘要1 代码路径2 打开代码3 运行代码4 代码分析1 应用程序入口2 程序simpleexample 摘要 本节主要记录自己学习ardupilot的地面站MP代码Mavlink协议的官网Demo过程 1 代码路径 代码
  • ardupilot 上实现ADRC内环角速度控制

    目录 文章目录 目录 摘要 0 写之前 1 关键参考公式 1 先上传一个关键的模型图 2 用到的关键公式 2 上传代码 1 非线性ADRC 2 线性ADRC 3 移植细节 4 飞行视频 5 难点 6 遗留问题 摘要 本节主要记录自己在ard
  • ardupilot 日志分析《xKF1信息》

    目录 文章目录 目录 摘要 1 xKF1信息 1 简介 2 整体代码调用流程 3 MP日志查看 2 xKF2信息 1 简介 2 整体代码调用流程 3 MP日志查看 3 xKF3信息 1 简介 2 流程 3 MP地面站数据 4 xKF4信息
  • ardupilot GPS ublox协议学习

    目录 文章目录 目录 摘要 1 UBLOX协议简介 1 协议特征 2 协议结构类型 1 有效载荷 2 校验 3 类ID 2 UBLOX专有协议 PUBX 消息 3 UBLOX常用协议 1 UBX ACK 0x05 2 UBX CFG 0X0
  • Ardupilot EKF3核心算法《状态向量》

    目录 文章目录 目录摘要1 Ardupilot 中的状态向量1 预测状态量2 输出状态量 摘要 本节主要讲解Ardupilot EKF3核心算法 状态向量 过程 1 Ardupilot 中的状态向量 1 预测状态量 Ardupilot代码中
  • Ardupilot EKF3核心算法《气压计,GPS更新融合》

    目录 文章目录 目录 摘要 1 高度融合源的选择 2 GPS的速度和位置测量序列的融合 2 1 得到GPS的观测方程 2 2 得到GPS的观测方程中的H矩阵 2 3 计算卡尔曼增益 2 2 得到GPS的测量数据 2 3 得到GPS的观测噪声
  • ardupilot 姿态误差计算分析

    目录 文章目录 目录 摘要 1 源码对比分析 1 之前代码 2 最新代码 2 结果对比 3 参考 4 结论 摘要 本节主要记录ardupilot 之前代码和最新代码姿态误差计算的核心代码分析 欢迎批评指正 1 源码对比分析 1 之前代码 2
  • Ubantu18.04 下编译PX4 环境配置

    1 用户权限准备 参考这篇博客进行 xff1a Pixhawk Ubuntu下编译原生固件PX4 外来务工人员徐某的博客 CSDN博客 2 源码的下载和子模块的更新 关于源码的下载 xff0c 由于诸多子模块的下载地址依然是github c
  • ardupilot 最优化算法

    目录 文章目录 目录 摘要 1 最小二乘法 1 1定义 1 2 基本思想 1 3 基本原理 1 4举例子 1 5最小二乘法和梯度法区别 2 梯度下降法 2 1 什么是梯度 2 2 什么是梯度下降 3 牛顿迭代法 3 0 牛顿迭代 3 1 牛
  • ardupilot 位置控制(POSHOLD)分析

    目录 文章目录 目录 摘要 0 简介 1 POSHOLD初始化过程 1 刹车增益的计算 2 位置保持不同阶段状态机对应的类型 2 POSHOLD运行过程 2 1 获取需要的飞行输入信息 2 2POSHOLD模式状态机 2 3获取当前的横滚俯
  • Ardupilot 飞控代码解锁流程分析

    摘要 本文档只有记录分析ardupilot飞控代码解锁的过程 如果有分析不到的地方 欢迎批评指导 谢谢 联系方式 18129927205 重点标志变量 flags armed 0表示没有解锁 flags armed 1表示解锁 arming
  • Ardupilot飞控Mavlink代码学习

    目录 文章目录 目录 摘要 1 Ardupilot怎么实现Mavlink初始化 2 Mavlink消息通信过程 摘要 本节主要记录自己学习Ardupilot的Mavlink协议的过程 欢迎一起交流分析 1 Ardupilot怎么实现Mavl
  • Ardupilot飞控姿态角与姿态角速度控制过程分析(超长篇)

    目录 文章目录 目录 摘要 1 自稳模式初始化 2 自稳模式更新函数 这个代码主要把横滚输入 俯仰输入量转换成目标角度需要的范围 也就是 4500 4500 3 姿态角速度代码控制过程分析 4 电机PWM控制运算 摘要 本节主要记录自己学习
  • PX4与Ardupilot的入门基础知识(第一章:架构与启动过程)

    目录 目录 摘要 第一节 px4与apm的区别与联系 第二节 px4与apm每个文件夹的作用 第三节 px4与apm无人机的启动过程 摘要 本节主要记录自己学px4的代码架构与Ardupilot代码架构对比文档 欢迎批评指正 1 px4与a
  • Ardupilot Pre-Arm安全检查程序分析

    目录 目录 摘要 第一 Pre Arm简介 第二 Pre Arm报错需知 1 使用前准备 使用Pre Arm信息分析不能解锁原因 2 解锁失败的原因 3 解锁失败的原因 自己对照官网进行翻译 1解锁前安全检查 2采用GCS识别是什么导致的P
  • STM32单片机汇编资料学习(1)

    目录 文章目录 目录摘要1 Cortex M3内核架构 在这里插入图片描述 https img blog csdn net 20181009223510343 watermark 2 text aHR0cHM6Ly9ibG9nLmNzZG4