返回

东莞信盈达嵌入式培训学院

东莞寮步C51单片机培训班

东莞寮步C51单片机培训班

在线咨询 预约试听

2025-09-16课程详细

单片机,作为电子产品的“大脑”,在现代生活中无处不在,从手机到电视机,从冰箱到洗衣机,甚至是我们儿童玩具中的LED闪烁,都离不开它的指挥。单片机通过接收按钮或按键的输入信号,依据预先编写的程序,精准地指挥马达和LCD等外围功能电路的动作。

单片机究竟是如何构成的呢?



它类似于一个微型的计算机,由CPU、内存以及外围功能等核心部分组成。在这个比喻中,CPU负责思考和决策,内存负责存储程序和数据,而外围功能则相当于我们的感官系统和控制手脚动作的神经系统。

咨询详情


尽管CPU在单片机中扮演着类似于人脑的角色,但它并不具备自我意识和自主思考的能力。CPU的工作方式是顺序读取并执行预先存储在内存中的指令集,即程序。这些指令并非诸如“行走”或“交谈”等复杂命令,而是简单的操作,如从内存中读取数据、将数据写入内存、执行加法、乘法运算以及逻辑判断等。正是这些看似简单的指令组合,赋予了单片机处理复杂任务的能力。

咨询详情

我们将深入探讨CPU的内部构造

  • 01
    程序计数器
    在CPU读取指令时,它需要知道要执行的指令在内存中的确切位置,这个位置信息被称为地址,类似于我们日常生活中的家庭住址。程序计数器(PC)就是专门用来存储这种地址信息的寄存器。通常,PC的设计是递增的,这意味着每当CPU执行完一条指令后,PC会自动增加,指向下一条指令的地址。因此,可以说程序计数器决定了程序的执行顺序
    了解详情
  • 02
    指令解码电路
    指令解码电路的任务是解读从内存中读取的指令的含义。这些指令可能包含各种操作,如数据读取、数据写入、算术运算和逻辑判断等。运算电路会根据指令解码电路的结果来执行相应的操作。具体来说,指令解码电路的工作原理类似于数字电路中的解码电路,它能够从被符号化或加密的指令中还原出指令的真实含义。
    了解详情
  • 03
    运算电路
    运算电路,也被称为ALU(算术逻辑单元),是负责执行算术和逻辑运算的电路。它可以执行加法、乘法等算术运算,以及AND、OR、BIT-SHIFT等逻辑运算。这些运算都是在指令解码电路的控制下进行的。通常,运算电路的设计较为复杂,以确保能够高效地执行各种运算任务。
    了解详情
  • 04
    CPU内部寄存器
    CPU内部寄存器是用于存储临时信息的内存区域。这些寄存器包括通用寄存器,用于存储运算值和运算结果,以及特殊寄存器,如标志寄存器,用于存储运算标志。当运算电路进行运算时,它并不会直接在内存中执行运算,而是将需要运算的数据从内存复制到通用寄存器中,然后在通用寄存器内进行运算。这种设计使得CPU能够更高效地处理数据和执行运算任务
    了解详情

STM32单片机的内部总线

1、I-Code总线
类型:指令总线
协议:基于AHB-Lite总线协议
位宽:32位
功能:连接Cortex™-M3内核的指令总线与闪存指令接口,负责在特定存储器地址范围内(0x0000_0000至0x1FFF_FFFF)的取指操作。CPU内核可一次取出两条16位Thumb指令。
2、D-Code总线
类型:数据总线
协议:基于AHB-Lite总线协议
位宽:32位
功能:连接Cortex™-M3内核的数据总线与闪存存储器的数据接口,负责在相同存储器地址范围内的数据访问操作。支持数据常量和调试访问,且只支持AHB-Lite的对齐访问。


3、类型总线
类型:外设总线
功能:连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,协调内核与DMA间的访问。负责在特定地址范围(0x2000_0000至0xDFFF_FFFF和0xE010_0000至0xFFFF_FFFF)内的所有数据传送,包括取指和数据访问。

4、DMA总线
功能:将DMA的AHB主控接口与总线矩阵相连,协调CPU的DCode和DMA到SRAM、闪存和外设的访问。DMA提供高速数据传输,减轻CPU负担。


5、总线矩阵
功能:协调内核系统总线和DMA主控总线之间的访问仲裁,采用轮换算法。包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口、SRAM、FSMC和AHB2APB桥)。
6、AHB/APB桥
功能:在AHB和2个APB总线间提供同步连接,APB1操作速度限于36MHz,APB2操作于全速(**72MHz)。自动将8位或16位APB寄存器访问转换为32位访问,以适应32位向量。

单片机可靠性差?可以弄个软件陷阱!

软件陷阱是什么

软件陷阱是一种用于捕获并处理单片机程序“跑飞”现象的技术,当程序执行过程中因干扰而偏离正常轨道时,软件陷阱可及时发现并将程序拉回正常执行路径。

咨询详情
软件陷阱如何构建

①未使用ERROM空间的填充在程序存储器中未使用的EPROM空间,首先填入窄操作指令NOP(无操作指令)。在NOP指令后,填入一条跳转指令LJMP,跳转到预设的跑飞处理程序(如FLY)。
若未使用空间较大,可均匀分布NOP指令和LJMP指令,形成“软件陷阱”。
②数据表及子程序间的陷阱设置,在数据表的结尾处设置软件陷阱,确保程序跑飞到数据区时能及时转入正轨。若数据表较大,可在中间位置也设置软件陷阱。在每两个子程序之间设置一个软件陷阱,以捕获可能的程序跑飞。③中断服务程序中的陷阱,当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱。这样能够及时捕获错误的中断,避免程序进一步失控。

咨询详情
代码示例

 假设FLY为跑飞处理子程序的标签
FLY:跑飞处理代码(如复位、重新初始化等)
    ; ...   ; 跳转到正常程序执行起点
    LJMP START; 未使用EPROM空间填充示例
NOP
NOP
LJMP FLY; 数据表及子程序间陷阱设置示例
DATA_TABLE_END:
    NOP
    NOP
    LJMP FLY
SUB_PROGRAM1_END:    NOP
    NOP
    LJMP FLY
SUB_PROGRAM2_START:
    子程序2的代码

咨询详情

机构地图

预约申请免费试听

只要一个电话,我们免费为您回电

438人已预约

相关课程

栏目导航