嵌入式面试题八股文(STM32)

八、单片机

1、RTOS是什么?

RTOS具有以下特点:

实时性: RTOS能够满足实时应用程序的时间要求,能够在预定的时间内响应或完成任务。

可靠性: RTOS具有高度可靠性,能够稳定运行,不会因为系统错误或异常而崩溃。

多任务支持: RTOS可以同时管理多个任务,通过任务调度算法来决

定哪个任务应该运行,从而实现并发执行。

优先级管理: RTOS可以为不同的任务分配优先级,高优先级的任务会

优先执行。

任务通信: RTOS提供了一些机制,使得任务之间可以进行通信和同步,比如消息队列、信号量、互斥锁等。

小内核: RTOS的内核通常是非常小巧的,以便尽可能地降低延迟和资源消耗。

2、谈谈你对中断的理解?

计算机正在执行某个程序或任务时,突然发生了一个特定的事件或信号,这个事件或信号会打断当前正在执行的任务,使得计算机保存现场转而去处理这个事件或信号。处理完中断后,计算机会返回到被打断的任务继续执行。

中断的作用是提高计算机的实时响应能力和处理能力。通过中断机制,计算机可以在遇到重要事件(如硬件设备发生故障、输入输出请求等)时立即响应并进行相应处理,而不需要等待当前任务执行完成。这样可以大大提高计算机的处理效率和系统的实时性。

中断可以分为硬件中断和软件中断:

硬件中断:由硬件设备产生的中断信号,比如计时器中断、外部设备请求中断等。

软件中断:是由CPU执行指令产生的中断,通常用于特殊的系统服务请求,比如系统调用和软件异常。

中断处理通常包括以下步骤:

中断响应:当中断事件发生时,CPU会立即停止当前任务的执行,保存当前的执行状态,然后跳转到中断处理程序的入口地址。

中断处理程序:中断处理程序是一段特殊的代码,用于处理中断事件。它会根据中断类型执行相应的处理操作,并可能修改系统状态。

中断返回: 处理完中断事件后,中断处理程序会通过特殊的指令返回到被打断的任务,继续执行之前保存的执行状态。

3、Linux操作系统和RTOS的区别?   

实时性: RTOS是专门设计用于实时应用的操作系统,其最主要的特点是能够满足严格的实时性要求。RTOS能够在预定的时间内做出响应或完成任务,对于实时控制和监控系统等应用非常重要。而Linux操作系统并不是一个实时操作系统,虽然它可以处理很多任务,但实时性不如RTOS。

内核大小: RTOS的内核通常非常小巧,以便尽可能地降低延迟和资源消耗。它只包含最基本的功能,如任务调度、中断处理和通信机制。-相比之下,Linux操作系统是一个完整的通用操作系统,内核相对较大,包含了丰富的功能和驱动程序。

多任务支持: RTOS是为多任务并发设计的,能够管理多个任务的执行。每个任务都有自己的优先级和执行状态,RTOS会根据任务的优先级来调度任务的执行。Linux同样支持多任务并发,但它更倾向于以时间片轮转方式进行任务调度。

硬实时和软实时: RTOS分为硬实时和软实时两种类型。硬实时要求任务在规定的时间内必须完成,而软实时对任务的响应时间有一定宽松度。Linux可以在某些场景下实现软实时,但无法满足硬实时的需求。

4、NVIC在哪里?

NVIC全称嵌套向量中断控制器,在STM32中是用于管理中断的关键组件,他负责处理外部中断和异常,并协调这些中断的优先级和触发方式,NVIC旨在实现更高效的中断处理,允许系统响应多个中断并正确处理它们。

在STM32系列微控制处理器中,NVIC通常被集中在内部,它不是独立的模块,而是与微控制器的内部总线相连接,用于管理中断,可以通过写入特定的寄存器来配置NVIC,使其正确的处理不同的中断请求。

理解NVIC包括以下几个方面:

中断优先级:

NVIC允许为每个中断分配优先级,因为不同的中断可能需要不同的响应速 度和优先级,优先级高的会打断优先级低的。

中断向量表:

中断向量表是一个存储中断处理函数地址的表格,当中断发生时,处理器会根据中断号从中断向量表中查找对应的处理函数地址,并跳转到该地址执行中断处理程序。

嵌套中断:

嵌套中断是指当一个中断正在执行时,另一个中断发生,NVIC能够管理这些中断,并根据优先级决定是否打断正在执行的中断。

中断控制:

通过配置NVIC寄存器,可以控制特定中断的使能与禁用,以及设置中断触发方式(上升沿、下降沿、边沿等)

异常处理:除了外部中断,NVIC还负责处理各种异常,如硬件错误、系统调用等。

5、简述一下冯诺依曼架构和哈佛架构

冯诺依曼架构:

冯诺依曼架构中,计算机的存储器包括程序存储器和数据存储器,它们共用同一总线进行数据传输。

程序和数据都存储在同一个存储器中,由计算机内部的控制单元根据需要再来读取指令或数据进行处理。

冯诺依曼架构的特点是存

储器与中央处理器(CPU)之间通过总线进行通信。指令和数据使用相同的地址空间,因此程序可以自我修改和自我复制。

冯诺依曼架构的优点是灵活,程序和数据可以自由地在存储器中移动,但由于指令和数据共用一个总线,可能会出现瓶颈,影响计算机性能。

哈佛架构:

哈佛架构中,计算机的存储器分为两个部分:指令存储器(程序存储器)和数据存储器,它们分别使用不同的总线进行数据传输。

指令和数据使用不同的存储器,它们分别有自己独立的地址空间,互相之间没有直接交互,因此指令和数据不能共享存储器。

哈佛架构的特点是指令和数据访问可以并行进行,同时也可以采取不同的存储器技术,从而提高计算机的性能。

哈佛架构的优点是指令和数据分开存储,避免了数据与指令之间的竞争和冲突,提高了数据传输的效率,但由于需要独立的指令和数据存储器,造成了硬件成本的增加。

  1. qM0内核有多少个内部异常?多少个外部中断?

Cortex-M0内核 可以处理15个内部异常和32个外部中断

STM32G030 只使用了6个内部异常和28个外部中断

Cortex-M33内核可以处理16个内部异常和240个外部中断

STM32U575使用了16个异常和138个外部中断

  1. 简述外部中断事件框图

外部事件触发:外部事件可以是来自外部硬件设备或其他外部信号的触发事件,例如GPIO引脚的电平变化、外部设备的请求信号等。当外部事件发生时,会触发外部中断。

中断请求产生:外部事件触发后,硬件会产生一个中断请求信号,通常称为“中断触发信号”或“中断源信号” 。这个中断请求信号会传递给中断控制器。

中断服务例程:中断控制器收到中断请求后,会根据优先级和中断掩码等设置决定是否接受中断请求。如果中断被接受,中断控制器会根据中断向量表中对应的中断处理函数的地址,跳转到相应的中断服务例程(中断处理函数)。

中断服务例程执行: 中断服务例程是预先定义好的处理外部中断的函数。当中断服务例程执行时,会完成对外部事件的处理。这可能涉及到读取GPIO状态、处理外部设备请求、清除中断标志等操作。

中断处理结束:中断服务例程执行完成后,控制权会返回到中断控制器,继续执行主程序(即中断发生时的上下文)。如果有其他挂起的中断请求,中断控制器可能会继续处理其他中断。

主程序执行:  中断处理结束后,CPU会继续执行主程序的代码,从上次中断发生的地方继续运行。

8、简述单片机中的前后台操作(什么是前台,什么是后台)

后台操作:

后台操作也称为主循环或主任务,是单片机系统中最重要的任务。在后台操作中,程序执行主要的任务逻辑,如系统初始化、数据采集、数据处理、通信等。后台操作是单片机程序的主要部分,其执行频率较高,通常是以一个循环结构组织的,不断地重复执行主要任务。

在后台操作中,任务的执行是按照固定的顺序进行的,且执行时间是可控的。由于后台操作需要频繁地执行,因此其代码应该尽量精简,避免耗时过长的操作,以确保系统的响应性和实时性。

前台操作:

前台操作也称为前台任务或中断服务例程(ISR,Interrupt Service Routine),是单片机系统中的中断处理程序。当外部事件发生时,如定时器溢出、外部中断、串口接收等,中断控制器会暂停当前的后台操作,跳转到相应的前台操作执行。

在前台操作中,程序执行特定的中断处理代码,完成对中断事件的响应和处理。由于前台操作是在中断发生时执行的,其执行时间是不确定的,可能会打断正在进行的后台操作。因此,在编写前台操作时,需要注意其代码应尽量简短、高效,以尽快完成对中断事件的处理,减少对后台操作的影响。

9、如何保障串口通信过程中数据的安全性?

加密: 使用加密算法对传输的数据进行加密,确保数据在传输过程中是不可读的。常见的加密算法包括AES、DES、RSA等。

数据校验: 在传输的数据中添加校验码,如CRC校验、校验和等,以检测数据是否在传输过程中发生错误或被篡改。

数据压缩: 使用数据压缩算法可以减少数据传输的长度,提高传输效率,并降低被窃听和篡改的风险。

数据分包: 将数据分成较小的包进行传输,每个包都有唯一的标识符,以提高传输的可靠性和安全性。

认证和授权: 在通信双方进行认证和授权,确保只有经过授权的设备可以进行通信。

物理层安全: 确保串口的物理连接是安全可靠的,防止被未经授权的设备插入串口进行数据窃听或篡改。

访问控制: 对串口通信进行限制访问控制,只有授权的用户或设备可以访问串口。

防止重放攻击: 在数据传输中防止重放攻击,可以使用时间戳、随机数等方法来确保数据的唯一性。

安全协议: 使用已有的安全通信协议,如SSL/TLS、SSH等,来保障数据的安全传输。

10、简述同步通信和异步通信的区别

同步通信:

同步通信是指发送方和接收方在数据传输过程中严格按照事先约定的时钟信号进行数据的传输和接收。

在同步通信中,发送方和接收方必须使用相同的时钟源,以确保数据的时序一致性。

发送方发送数据后会等待接收方确认收到数据,然后再发送下一个数据。因此,同步通信具有一定的阻塞性,发送方和接收方在通信过程中需要保持同步状态。

同步通信适用于数据传输要求高度可靠、不允许数据丢失或顺序错乱的场景,例如在一些高速数据传输系统中。

异步通信:

异步通信是指发送方和接收方在数据传输过程中不需要共享时钟信号,数据的传输和接收是根据起始位、数据位、校验位和停止位等信息来进行的。

在异步通信中,发送方发送数据时会在数据之间插入起始位和停止位,并在通信过程中通过起始位来确定数据的开始,通过停止位来确定数据的结束。

异步通信具有较好的灵活性,发送方和接收方不需要保持同步状态,因此允许数据传输的速率不同步。

异步通信适用于一些简单的串口通信、短距离通信和不要求高度可靠性的数据传输场景。

  1. 谈谈你对ARM的理解

ARM(Advanced RISC Machines)是一家英国公司,它设计并授权基于RISC(Reduced Instruction Set Computing,精简指令集计算)架构的处理器内核及相关技术。ARM公司本身不直接制造芯片,而是将其设计授权给其他公司,这些公司可以基于ARM架构来制造和销售自己的处理器产品。

ARM的关键特点:

  1. 低功耗:ARM架构以其低功耗特性而闻名,这使其非常适合移动设备、嵌入式系统和其他需要长时间运行而无需频繁充电的应用场景。
  2. 广泛的适用性:ARM架构被广泛应用于各种领域,包括智能手机、平板电脑、服务器、嵌入式系统、可穿戴设备等。
  3. 灵活的授权模式:ARM提供不同级别的授权选项,允许合作伙伴根据自身的需求对ARM设计进行不同程度的定制。
  4. 强大的生态系统:ARM与众多半导体制造商、软件开发商和其他合作伙伴共同构建了一个庞大的生态系统,支持丰富的软件和硬件解决方案。

ARM处理器内核类型:

  1. Cortex-A系列:针对高性能应用处理器,适用于智能手机、平板电脑、服务器等。
  2. Cortex-R系列:面向实时应用,例如汽车电子系统和工业控制。
  3. Cortex-M系列:面向微控制器市场,适用于各种嵌入式应用。

12、ARM指令集和RISC之间的关系?RISC-V和RISC之间的关系?

ARM指令集和RISC之间有着密切的关系。ARM(Advanced RISC Machines)是一种基于RISC(Reduced Instruction Set Computer)架构的处理器设计,它是一种典型    ISC架构。RISC架构的特点是指令集精简,指令执行速度快,指令执行时间相对均匀,以及硬件实现简单等。

ARM指令集是ARM处理器支持的指令集合,遵循RISC架构的设计原则。ARM指令集的特点包括:

精简指令集:ARM指令集设计非常精简,指令数量相对较少,每条指令的功能单一。

固定长度指令:ARM指令长 度固定,通常为32位,这使得指令译码和执行更加高效。

三地址格式:大多数ARM指令都采用三地址格式,即一个指令同时涉及三个操作数,分别是目标操作数、源操作数1和源操作数2。

加载-使用模型:ARM采用加载-使用模型,即在加载数据到寄存器后,立即使用该数据执行计算,避免了额外的数据转移操作。

  1. RISC-V是另一种RISC架构的指令集。与ARM指令集不同,RISC-V是一个开放的指令集架构,其设计宗旨是提供一种简洁、通用的指令集架构,适用于各种应用和平台。RISC-V的特点包括:

开放源代码:RISC-V是一个开源项目,其指令集架构规范是公开的,任何人都可以免费使用和实现。

可扩展性:RISC-V支持可扩展的指令集,可以根据应用需求选择不同的扩展模块。

简洁清晰:RISC-V指令集设计简洁清晰,遵循RISC99架构的设计原则。

模块化:RISC-V指令集采用模块化设计,可以根据需要选择不同的模块组合,实现灵活的处理器设计。

  1.  DHT11使用的是什么协议

单总线通信协议

有什么特点

精度高,可达到±2℃和±5%的误差范围

方便使用,基于数字信号输出,支持多种主流的微控制器平台

体积小,只有12mm x 15.5mm x 5.5mm,适合于各种小型设备的集成

耐用性强,由高品质的材料制成,可以长期稳定地工作

14、简述DMA作用

DMA(Direct Memory Access,直接内存访问)是计算机系统中的一种数据传输技术,其作用是在不经过CPU的直接控制下,实现外设和内存之间的数据传输.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

DMA的作用主要体现在以下几个方面:

  1. 提高数据传输效率:DMA可以直接从外设读取数据或向外设写入数据,不需要CPU的干预, 因此可以大大提DMA能够显著提高系统的性能。高数据传输的效率。在大量数据传输或高速数据传输的场景下,
  2. 减轻CPU负担:使用DMA进行数据传输时,CPU不需要参与实际的数据传输过程,可以将更多的计算资源用于其他任务,从而减轻CPU的负担,提高系统的并行处理能力。
  3. 支持异步传输:DMA可以在CPU工作的同时进行数据传输,支持异步传输。这对于实时性要求较高的应用场景非常有用,例如音视频数据的处理和传输。
  4. 多通道传输:现代DMA控制器通常支持多通道传输,可以同时处理多个数据传输请求,提高系统的并行处理能力。

15、SPI是同步通信还是异步通信、I2C呢

SPI(Serial Peripheral Interface)是一种同步通信协议。在SPI通信中,数据的传输是通过时钟信号进行同步的,发送方和接收方在时钟的控制下进行数据的传输,数据的传输速率和时序是预先定义好的,发送方和接收方必须严格遵循同样的时钟和时序规则。

SPI使用四根线来实现数据传输:主设备发送数据(Master Out Slave In,MOSI)、主设备接收数据(Master In Slave Out,MISO)、时钟线(SCLK),以及片选线(Slave Select,SS)。数据的传输是通过MOSI和MISO线进行的,时钟信号由SCLK提供,而片选线用于选择特定的从设备进行通信。

由于SPI是同步通信,因此数据传输的时序非常精确,通信双方需要事先约定好数据传输的速率和时序规则。

I2C(Inter-Integrated Circuit),也称为IIC(Inter-Integrated Circuit),是一种同步通信协议。在I2C通信中,数据的传输是通过时钟信号进行同步的,主设备通过时钟信号来控制数据的传输,从设备在时钟信号的控制下响应主设备的请求。

I2C通信使用两根线来实现数据传输:串行数据线(Serial Data Line,SDA)和串行时钟线(Serial Clock Line,SCL)。数据的传输是通过SDA线进行的,时钟信号由SCL线提供,主设备通过控制时钟信号来发起数据传输和接收从设备的响应。

在I2C通信中,主设备在开始通信之前需要向从设备发送一个起始信号,然后发送从设备的地址和数据。从设备在接收到地址匹配后,会发送应答信号给主设备。数据的传输和接收都是在时钟信号的控制下进行的,主设备和从设备必须严格遵循同样的时钟和时序规则。

因为I2C是同步通信协议,所以通信的时序非常精确,主设备和从设备之间需要事先约定好通信速率和时序规则。

16、简述单片机中断触发过程

在单片机中,中断是一种异步事件触发的机制,用于处理紧急或优先级较高的事件。当中断事件发生时,会打断正在执行的程序,转而去执行与中断事件相关的中断服务子程序(Interrupt Service Routine,ISR),处理完中断事件后再返回到原来的程序继续执行。

单片机中断触发的过程如下:

中断源触发:当发生中断源所对应的事件时(例如外部输入变化、定时器计时溢出、串口接收数据等),硬件会产生一个中断请求信号。

中断请求响应:当中断请求信号产生后,单片机中断控制器会检查当前是                 否允许响应该中断。如果允许,则会响应中断请求,并跳转到中断服务子程序的入口地址开始执行。

保存现场:在进入中断

服务子程序之前,单片机会自动保存一些关键寄存器的值,以便在中断服务子程序执行完毕后能够恢复原来的现场。

执行中断服务子程序:中断服务子程序是用来处理中断事件的代码段,它会根据中断事件的类型进行相应的处理。

恢复现场:在中断服务子程序执行完毕后,单片机会自动恢复之前保存的寄存器值,将中断服务子程序执行前的现场恢复到原来的状态。

返回原程序:完成中断服务子程序后,单片机会从中断返回指令(Return from Interrupt,RTI)或特定中断返回指令返回到原来的程序,并继续执行原来的程序。

17、在PWM中,占空比是什么

在PWM(脉宽调制)中,占空比(Duty Cycle)是指高电平信号在一个周期内的持续时间与一个周期的总时间之间的比例。它通常以百分比的形式表示,表示高电平信号所占据的时间与一个周期的时间的比例。

假设PWM的周期为T,高电平信号的持续时间为t(t <= T),那么占空比D为:

D = (t / T) * 100%

占空比的取值范围是0%到100%。当占空比为0%时,高电平信号的持续时间为0,即输出为低电平;当占空比为100%时,高电平信号的持续时间等于周期T,即输出为高电平。

通过调整PWM的占空比,可以控制输出信号的平均电平值,从而实现模拟信号的控制。在许多应用中,PWM被用来控制电机的转速、LED的亮度调节、音频信号的幅度调节等。占空比越大,输出信号的平均电平值越高;占空比越小,输出信号的平均电平值越低。

18、简述几个PWM的应用场景

电机控制:PWM广泛应用于电机的控制中,可以调节电机的转速和转向。通过调整PWM的占空比,可以改变电机驱动信号的平均电平值,从而控制电机的转速和力矩。

LED亮度调节:PWM被广泛用于LED灯的亮度调节。通过改变PWM的占空比,可以控制LED的发光时间和暗时间,从而实现灯光的亮度调节。

音频信号处理:PWM在音频信号处理中也有应用。通过PWM技术,可以将模拟音频信号转换为数字信号,然后进行数字信号处理,再将处理后的数字信号重新转换为模拟音频信号。

电源管理:PWM在电源管理中也有重要应用。例如,开关电源使用PWM来控制开关管的通断,实现高效稳定的电源输出。

无线通信:PWM也可以用于无线通信中,例如脉冲位置调制(PPM)用于遥控器中的信号传输,或脉冲编码调制(PCM)用于数字通信中的数据传输。

数字控制系统:在数字控制系统中,PWM可以用于数字信号的控制和处理,例如数字信号处理器(DSP)中的PWM模块。

19、单片机IO框图中,保护二极管如何实现的保护功能,保护的谁?

在单片机IO(输入/输出)框图中,保护二极管是为了保护IO口不受外部干扰或过电压的影响,以防止IO口被损坏或烧毁。这些保护二极管通常称为ESD二极管(Electrostatic Discharge Diode)或者TVS二极管(Transient Voltage Suppression Diode)。

保护二极管连接在单片机的每个IO口和地之间,其作用是:

静电放电保护:当外部静电放电事件发生时,保护二极管会吸收并分散静电放电的能量,防止静电对IO口的损害。

抑制电磁干扰:保护二极管还可以起到抑制电磁干扰的作用,防止外部电磁干扰对IO口信号的干扰。

过电压保护:当外部出现过电压冲击时,保护二极管会把过电压的能量引导到地,保护IO口不受过电压的影响。

保护二极管通常是快速响应的二极管,其工作速度非常快,可以在毫微秒级别内响应外部干扰或过电压。通过这些保护二极管,单片机的IO口得到了有效的保护,提高了系统的稳定性和可靠性。

20、ARM内核的单片机通常情况下使用的是精简指令集还是复杂指令集

ARM内核的单片机通常情况下使用的是精简指令集(Reduced Instruction Set Computing,RISC)设计理念,旨在提高指令的执行速度和系统的性能,并降低功耗。ARM处理器最初设计时就采用了精简指令集的功耗和芯片面积。

精简指令集(RISC)的特点是指令简单、固定长度、执行速度快、寻址灵活,每条指令执行的时间相对较短,且指令格式规整。这样的设计使得ARM处理器在较低的时钟频率下就能提供很好的性能表现,适用于嵌入式系统和低功耗应用。

相比之下,复杂指令集(Complex Instruction Set Computing,CISC)设计的处理器指令较为复杂,指令长度不固定,执行速度较慢。复杂指令集在一条指令中执行多个操作,指令格式不规整,通常需要更高的时钟频率来保证性能。

设计的处理器指令较为复杂,指令长度不固定,执行速度较慢。复杂指令集在一条指令中执行多个操作,指令格式不规整,通常需要更高的时钟频率来保证性能。

21、单片机I/O口有什么作用?上拉电阻与下拉电阻的作用?

单片机的I/O口(输入/输出口)是连接单片机与外部设备或其他电路的接口,用于实现数据的输入和输出。I/O口在单片机系统中有以下几个主要作用:

输入数据:通过I/O口,单片机可以接收外部设备或传感器等的数据,并将其输入到单片机的内部,以便进行处理和控制。

输出数据:单片机可以通过I/O口将内部处理的数据输出到外部设备,如显示屏、LED、电机等,实现各种控制和显示功能。

控制信号:I/O口可以输出各种控制信号,用于控制外部设备的工作状态,如使能信号、时钟信号等。

状态检测:通过I/O口,单片机可以检测外部设备的状态,如开关状态、传感器状态等,从而实现实时监测和反馈功能。

上拉电阻和下拉电阻是在特定的应用场景下对I/O口进行电气连接的一种方式,其作用如下:

上拉电阻:在需要将I/O口拉高时,可以使用上拉电阻将I/O口连接到高电平(通常是Vcc电源),以保证I/O口在未连接外部设备时保持高电平状态。当外部设备接入时,会改变I/O口的电平,使得I/O口可以读取外部设备的状态。

下拉电阻:在需要将I/O口拉低时,可以使用下拉电阻将I/O口连接到低电平(通常是GND地),以保证I/O口在未连接外部设备时保持低电平状态。当外部设备接入时,会改变I/O口的电平,使得I/O口可以读取外部设备的状态。

上拉电阻和下拉电阻在单片机系统中常用于输入端口的状态检测,以确保输入端口在未连接外部设备时有确定的电平状态,避免产生干扰。这样可以保证单片机对输入信号的准确读取和判断。

22、单片机的寻址方式有哪些?

直接寻址:直接给出要访问的内存地址,是最基本的寻址方式。

立即寻址:指令中直接给出操作数的数值,而不是地址。适用于操作数较小且不需要存储在内存中的情况。

间接寻址:使用寄存器中的内容作为操作数的地址,通过寄存器间接访问内存。

寄存器寻址:将操作数直接存储在寄存器中,然后使用寄存器进行操作。

寄存器间接寻址:使用寄存器中的内容作为另一个寄存器的地址,通过两个寄存器间接访问内存。

基址寻址:使用一个寄存器中的内容作为一个基地址,再加上一个偏移地址来访问内存。

变址寻址:使用一个寄存器中的内容作为一个变址地址,再加上一个索引地址来访问内存。

23、看门狗的原理?

看门狗(Watchdog)是一种用于监控系统运行状态的硬件设备或软件机制。其原理是定期向系统发送一个计时器信号,如果系统正常运行,会在规定时间内定期重置或喂狗,否则系统会因为未及时喂狗而触发看门狗超时,自动执行复位操作,将系统恢复到初始状态。

看门狗的作用是保障系统的稳定性和可靠性。当系统出现死机或故障时,看门狗能够自动触发复位操作,防止系统一直停留在异常状态,从而保证系统的可用性。在嵌入式系统和关键系统中,看门狗是一种重要的故障保护机制,能够提高系统的稳定性和可靠性。

看门狗的工作原理可以简单描述如*

看门狗定时器设置:在系统启动时,配置看门狗的定时器,设置定时器的计数周期和重置时间。

系统正常运行:在系统正常运行期间,软件会定期喂狗,向看门狗定时器发送喂狗信号,重置计时器的计数值。

系统故障或死机:如果系统出现故障或死机,软件无法定期喂狗,看门狗定时器会在设定的时间内未收到喂狗信号,触发看门狗超时。

看门狗复位:看门狗超时后,看门狗会向系统发送复位信号,将系统强制复位,将系统恢复到初始状态,重新启动系统。

24、复位时单片机有什么动作?

当单片机发生复位时,会执行以下动作:

清除寄存器状态:复位会将CPU的寄存器状态清零,包括通用寄存器、程序计数器(PC)、堆栈指针(SP)等。

初始化时钟:复位会重新初始化时钟模块,将系统时钟设置为默认值。

清除RAM:有些单片机会在复位时将RAM中的内容清零,以确保系统从一个干净的状态开始。

初始化外设:复位时可能会对某些外设进行初始化,将其设置为默认状态。

执行复位向量:在复位时,单片机会跳转到指定的复位向量地址,从该地址开始执行初始化代码。

启动时钟:在复位向量地址处执行的初始化代码中,会重新启动系统时钟,启动中断服务和其他系统模块。

进行系统初始化:根据具体的应用场景和需求,单片机可能会进行其他的系统初始化工作,如配置外设引脚、初始化外部存储器等。

总的来说,单片机在复位时会将系统状态初始化为一个确定的状态,以确保系统从可控的状态开始运行。复位是单片机启动的第一步,通过复位可以将系统恢复到初始状态,保证系统的可靠启动和正常运行。

25、中断嵌套的好处与坏处?

中断嵌套指的是在处理一个中断的过程中,又发生了另一个中断,并且这两个中断的优先级不同。

好处:

提高系统响应能力:中断嵌套可以在处理一个中断时,及时响应更高优先级的中断请求,从而提高系统的响应能力和实时性。

多任务处理:中断嵌套可以使单片机实现多任务处理,通过合理设置不同中断的优先级,可以处理多个任务,提高系统的并行处理能力。

简化编程:使用中断嵌套可以简化编程,将不同的任务分散到不同的中断服务函数中,代码结构更清晰,易于维护和扩展。

坏处

复杂性增加:中断嵌套会增加系统的复杂性,特别是当多个中断同时发生时,可能需要处理复杂的中断优先级和中断嵌套关系。

时间延迟:中断嵌套可能会导致中断服务函数的执行时间延长,影响其他中断的响应时间,降低系统的实时性。

资源竞争:中断嵌套可能会引发资源竞争问题,特别是对共享资源的访问,需要仔细处理,避免死锁和数据错误。

26、什么是可重入型函数,使用时需要注意哪些问题?

可重入型函数(Reentrant Function)是指一个函数可以被同时多个任务(线程)调用,且不会出现竞争资源的问题或产生意外结果。这意味着在多个任务同时调用这个函数时,函数内部不会使用全局变量、静态变量或其他共享资源,以确保函数的行为是确定的、可预测的。

在使用可重入型函数时,需要注意以下几个问题:

线程安全性:由于可重入型函数可能会被多个任务同时调用,因此需要确保函数内部使用的数据是线程安全的,不会出现竞争条件或数据污染。

不可重入型函数调用:在一个可重入型函数中,不应该调用其他不可重入型函数,否则可能会破坏可重入性。

不可中断性:可重入型函数在执行过程中一般不会被中断,否则可能导致函数状态不一致。

数据保护:如果可重入型函数需要访问共享资源,必须使用互斥锁或其他同步机制保护这些资源,以防止数据竞争。

局部变量:可重入型函数应尽量使用局部变量,避免使用全局变量或静态变量,以避免多个任务之间共享数据。

递归调用:可重入型函数可以是递归调用的,但需要注意递归深度,避免栈溢出或死锁。

  1. ROM与RAM的区别?

ROM(Read-Only Memory)和 RAM(Random Access Memory)是计算机系统中两种基本的存储器类型,它们在许多方面存在显著的区别。下面是它们的详细比较:

1.

定义:ROM 是一种非易失性存储器,存储的数据在断电后仍然保持不变。它通常用于存储固件或嵌入式系统的永久数据。RAM 是一种易失性存储器,存储的数据在断电后会丢失。RAM 用作计算机的主要内存,以提供快速数据访问和运行中的程序支持。

2.

数据存储特性:ROM 只读,通常在出厂时或通过专门的编程方式写入数据,用户一般不能修改或删除。适合存储固定数据,如启动程序、固件等。RAM 读写都可以,支持数据的快速读取和写入。数据是临时的,通常用于存储正在运行的程序和当前处理的数据。

3.数据时,因为数据通常是在制造时就已写入的。RAM 的存取速度快,支持快速读写操作,适合需要快速数据处理的应用。

4.

易失性:ROM 是非易失性存储,数据在断电后不会丢失。RAM 是易失性存储,数据在断电后会丢失。

5.

使用场景:ROM 用于存储引导程序(BIOS)、基本输入输出系统、嵌入式系统中的固件、游戏机中的游戏等。RAM 用于电脑、手机等计算设备的操作系统、应用程序和数据,支持程序的快速运行和当前任务的处理。

6.

容量和成本:RAM 通常容量较小,且在成本上相对较高,因为它的制造过程更复杂。ROM 通常更大,且价格相对便宜,以支持更多的运行数据和程序。

7.

类型:ROM 包括基本的 ROM(如 PROM, EPROM, EEPROM)和 Flash 存储器等。RAM 包括静态 RAM(SRAM)和动态 RAM(DRAM),后者常用于 PC 和移动设备中。

存储速度:ROM 的存取速度相对较慢,尤其是在写入

作者:KELE_1332

物联沃分享整理
物联沃-IOTWORD物联网 » 嵌入式面试题八股文(STM32)

发表回复