MCU基础
目录1.CPU的基本结构和运行机制1.1 ALU1.2 Register Files1.3 Control Unit2.堆栈的概念3.ARM体系结构3.1 ARM的发展过程3.2 ARM Cortex M Register FilesProgrammers Model4.中断4.1 中断的概念和机制4.2 中断的允许和禁止、现场保护4.3 中断子程序和函数调用的区别4.4 中断向量表4.5 中断优先级和中断嵌套5.复位、时钟、存储器、总线5.1 复位5.2 时钟5.3 存储器5.4 总线、外设6.小结1.CPU的基本结构和运行机制一个基本的MCU的结构图如下所示。主要由处理器CPU存储器Memory总线Bus和外设Peripheral组成。CPU主要包含逻辑运算单元ALU寄存器组register files控制单元control unit有些CPU还有浮点运算单元MMUCache Management。一个典型的CPU如下图所示。1.1 ALUALU由四个要素组成操作数、运算、运算结果和标志位。运算结果和标志位往哪里存呢寄存器。存放标志位的寄存器有个特殊的名字叫程序状态寄存器Program Status RegisterPSR有的叫条件码寄存器Condition Code RegisterCCR。PSR的每一位称为状态位且代表的含义不同比如溢出标志位等。每执行一条指令相应的状态位都会进行更新。每条指令影响的状态位都是不一样的需要查芯片手册。1.2 Register Files寄存器用于临时保存和获取操作数任何CPU都包含若干个通用/专用寄存器寄存器的数目和宽度是衡量CPU的重要指标。ALU的操作数和运算结果可以来自寄存器或者数据存储器对个人PC而言是内存或者硬盘对MCU而言是CPU以外的存储部分1.3 Control Unit那是什么让上面的一切自动的运行呢-Control Unit。控制单元的主要作用1、指令解析分析该指令需要执行何种操作2、数据流向确定该指令用到的操作数来源和产生结果的去向。简言之就是控制单元将一条指令解析为对ALURegisterMemory的控制来明确做什么运算数据从哪来到哪去。那又一个问题来了控制单元上的指令是从哪里来的程序是指令的有序集合指令和数据一样也是保存在存储器当中这些指令序列“依次”进入CPU执行。下一条待执行的指令地址保存在PC寄存器Program Counter程序计数器中。如果发生函数调用或者中断返回的地址从何而来呢这就要引出另一个概念堆栈。2.堆栈的概念如何保存返回地址呢一开始想到的办法就是设计返回地址寄存器但是如果发生嵌套调用的话会出现寄存器不够用。于是设计了一种机制栈能够保持数据的顺序后入先出覆盖并不是销毁。那栈都有哪些用途呢堆栈指针寄存器Stack PointSP堆栈溢出。有时候电脑出现的蓝屏可能是堆栈溢出或者是越界访问PC指向了存储器一段莫名其妙的空间并试图取出值来运行程序跑飞了。对操作系统而言可能认为是越界访问嵌入式系统可能认为是非法指令无法解释程序就复位了。学习C语言感觉不到堆栈因为C语言的函数调用参数传递等都是编译器帮你隐性地使用了堆栈。用会骗语言做中断编程时会接触到这个概念。写道这里再回头看看CPU的结构自己在脑子里过一遍基本上就能知道一段程序是怎么被CPU执行的了CPU一直在发展从8位到16位、32位ARM Cortex MPowerPCColdFire、64位时钟的频率也越来越高从Hz到MHz、GHz频率越高执行每条指令的时间就越短。学习CPU重点关注两点1、CPU由哪些寄存器是编程的对象2、ALU对应的指令集即有哪些指令代表的含义是什么3.ARM体系结构3.1 ARM的发展过程ARM公司只做CPU设计采用出售IP的方式运营半导体制造商无需自己设计CPU。3.2 ARM Cortex M Register FilesProgrammers Model4.中断4.1 中断的概念和机制1、主程序中设置号中断发生的条件Gobal IEIF2、按下键电路以信号的形式通知CPU中断发生了3、CPU自动调用该中断服务子程序。需要说明的是中断总开关打开后它可能在任意一个时间点上调用。4.2 中断的允许和禁止、现场保护现场保护考虑到效率压有限个寄存器入栈如果编程人员用到更多可以自己手动压栈。4.3 中断子程序和函数调用的区别函数调用返回地址中断子程序返回地址和之前压入栈的寄存器的值。4.4 中断向量表当一个中断发生时CPU如何找到中断服务子程序并执行呢--中断向量表。4.5 中断优先级和中断嵌套5.复位、时钟、存储器、总线5.1 复位5.2 时钟5.3 存储器1G(B) 1024M(B)1M 1024KB1KB1024B1Byte 8bit5.4 总线、外设6.小结MCU上电过程给SP指针赋值将开发工具生成的入口函数代码第一条指令的地址给PC最后一条指令Jump to main函数。

相关新闻

AI文献综述工具:提升研究效率与质量

AI文献综述工具:提升研究效率与质量

1. 项目概述:AI驱动的文献综述革命"书匠策AI"这个工具名称本身就透露着对学术写作场景的深刻理解——它将"书匠"的工匠精神与"策略"的智能属性完美结合。作为长期浸泡在学术圈的研究者,我深刻体会到文献综述这个环节的痛点…

2026/7/24 20:04:01 阅读更多 →
如何实现城通网盘终极加速:ctfileGet免费高速下载方案详解

如何实现城通网盘终极加速:ctfileGet免费高速下载方案详解

如何实现城通网盘终极加速:ctfileGet免费高速下载方案详解 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘下载速度慢、验证流程繁琐而烦恼吗?ctfileGet是一款完全…

2026/7/24 20:03:01 阅读更多 →
系统架构设计师考试:高效备考策略与资源推荐

系统架构设计师考试:高效备考策略与资源推荐

639 | 系统架构设计师考试:高效备考策略与资源推荐 考系统架构设计师,就像参加一场马拉松。 不是比谁起跑快,而是比谁能坚持到最后。 一、考试概览 考试信息 ┌───────────────────────────────────────────────────…

2026/7/24 20:03:01 阅读更多 →

最新新闻

PowerCLI批量修改虚拟机内存是否需要重启完整实操说明

PowerCLI批量修改虚拟机内存是否需要重启完整实操说明

使用PowerCLI批量给虚拟机增加内存,是否重启取决于虚拟机硬件版本与热添加开关:虚拟机硬件版本20及以上,同时虚拟机操作系统、虚拟机设置开启内存热添加,批量扩容内存无需重启VM;若硬件版本低于20、未开启热添加&#…

2026/7/24 20:11:03 阅读更多 →
C 语言变量初始化:从工程实践说起

C 语言变量初始化:从工程实践说起

核心判断规则不是"永远初始化"或"永远不需要",而是:如果第一次使用会读取变量原来的值,就必须先初始化;如果第一次使用会完整覆盖它,则不一定需要。先理解程序内存布局要理解初始化规则&#xff0…

2026/7/24 20:11:03 阅读更多 →
英文降AI全攻略:3大免费降ai率技巧与实测工具

英文降AI全攻略:3大免费降ai率技巧与实测工具

前段时间自己写的英文文章,因为用词太规范被检测出AI率高,为了找到靠谱的英文降ai率方法,我花了大半个月进行了大量测试。今天这篇干货,就来盘点一下实测后表现不错的几个方法以及降ai工具。 如果你也正在寻找靠谱的英文降ai率工…

2026/7/24 20:11:03 阅读更多 →
GetQzonehistory:3步找回QQ空间消失的记忆,你的数字时光机

GetQzonehistory:3步找回QQ空间消失的记忆,你的数字时光机

GetQzonehistory:3步找回QQ空间消失的记忆,你的数字时光机 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否发现QQ空间只能查看最近几年的说说?…

2026/7/24 20:11:03 阅读更多 →
ThinkPad风扇控制终极指南:TPFanControl2完整使用教程

ThinkPad风扇控制终极指南:TPFanControl2完整使用教程

ThinkPad风扇控制终极指南:TPFanControl2完整使用教程 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 还在为ThinkPad笔记本风扇噪音烦恼吗?TPF…

2026/7/24 20:11:03 阅读更多 →
抖音内容管理革命:高效批量下载与智能整理解决方案

抖音内容管理革命:高效批量下载与智能整理解决方案

抖音内容管理革命:高效批量下载与智能整理解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…

2026/7/24 20:10:02 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻