面试可能会遇到的问题&回答(嵌入式软件开发部分)

写在前面:

        博主也是刚入社会的小牛马,如果下面有写的不好或者写错的地方欢迎大家指出~

一、四大件基础知识

1、计算机组成原理

(1)简单介绍一下中断是什么。

①回答:

②难度系数:★★

③难点分析:

(2)中断和轮询的区别是什么?

①回答:

②难度系数:★

③难点分析:

2、数据结构

(1)用C语言给定一个链表结构体,试编写一子函数将链表翻转。

①回答:

②难度系数:★

③难点分析:

3、学习资料

(1)计算机组成原理:

计算机组成原理 第一章(计算机系统概论)—第一节(计算机系统简介)-CSDN博客

计算机组成原理 第一章(计算机系统概论)—第二节(计算机的基本组成)-CSDN博客

计算机组成原理 第一章(计算机系统概论)—第三节(计算机硬件的主要技术指标)-CSDN博客

计算机组成原理 第二章(系统总线)—第一节(总线的基本概念、分类与特性)-CSDN博客

计算机组成原理 第二章(系统总线)—第二节(总线结构)-CSDN博客

计算机组成原理 第二章(系统总线)—第三节(总线控制)-CSDN博客

计算机组成原理 第三章(存储器)—第一节(概述)-CSDN博客

计算机组成原理 第三章(存储器)—第二节(主存储器(上))-CSDN博客

计算机组成原理 第三章(存储器)—第三节(主存储器(下))-CSDN博客

计算机组成原理 第三章(存储器)—第四节(高速缓冲存储器)-CSDN博客

计算机组成原理 第三章(存储器)—第五节(辅助存储器)-CSDN博客

计算机组成原理 第四章(输入输出系统)—第一节(概述)-CSDN博客

计算机组成原理 第四章(输入输出系统)—第二节(I/O设备)-CSDN博客

计算机组成原理 第四章(输入输出系统)—第三节(I/O接口)-CSDN博客

计算机组成原理 第四章(输入输出系统)—第四节(程序查询方式)-CSDN博客

计算机组成原理 第四章(输入输出系统)—第五节(程序中断方式)-CSDN博客

计算机组成原理 第四章(输入输出系统)—第六节(DMA方式)-CSDN博客

计算机组成原理 第五章(计算机的运算方法)—第一节(无符号数和有符号数)-CSDN博客

计算机组成原理 第五章(计算机的运算方法)—第二节(数的定点表示和浮点表示)-CSDN博客

计算机组成原理 第五章(计算机的运算方法)—第三节(定点运算(上))-CSDN博客

计算机组成原理 第五章(计算机的运算方法)—第四节(定点运算(下))-CSDN博客

计算机组成原理 第五章(计算机的运算方法)—第五节(浮点四则运算)-CSDN博客

计算机组成原理 第五章(计算机的运算方法)—第六节(算数逻辑单元)-CSDN博客

计算机组成原理 第六章(指令系统)—第一节(机器指令)-CSDN博客

计算机组成原理 第六章(指令系统)—第二节(操作数类型和操作类型)-CSDN博客

计算机组成原理 第六章(指令系统)—第三节(寻址方式)-CSDN博客

计算机组成原理 第六章(指令系统)—第四节(指令格式)-CSDN博客

计算机组成原理 第六章(指令系统)—第五节(RISC技术)-CSDN博客

计算机组成原理 第七章(CPU的工作过程)—第一节(CPU的结构和功能)-CSDN博客

计算机组成原理 第七章(CPU的工作过程)—第二节(指令周期)-CSDN博客

计算机组成原理 第七章(CPU的工作过程)—第三节(指令流水)-CSDN博客

计算机组成原理 第七章(CPU的工作过程)—第四节(中断系统)-CSDN博客

计算机组成原理 第八章(控制单元的功能)—第一节(微操作命令的分析)-CSDN博客

计算机组成原理 第八章(控制单元的功能)—第二节(控制单元的功能)-CSDN博客

计算机组成原理 第九章(控制单元的设计)—第一节(组合逻辑设计)-CSDN博客

计算机组成原理 第九章(控制单元的设计)—第二节(微程序设计(上))-CSDN博客

计算机组成原理 第九章(控制单元的设计)—第三节(微程序设计(下))-CSDN博客

(2)数据结构:

数据结构 第一章(绪论)-CSDN博客

数据结构 第二章(线性表)-CSDN博客

数据结构 第三章(栈和队列)【上】-CSDN博客

数据结构 第三章(栈和队列)【下】-CSDN博客

数据结构 第四章(串、数组和广义表)-CSDN博客

数据结构 第五章(树和二叉树)【上】-CSDN博客

数据结构 第五章(树和二叉树)【下】-CSDN博客

数据结构 第六章(图)【上】-CSDN博客

数据结构 第六章(图)【下】-CSDN博客

数据结构 第七章(查找算法)-CSDN博客

数据结构 第八章(排序算法)【上】-CSDN博客

数据结构 第八章(排序算法)【下】-CSDN博客

(3)操作系统理论:

操作系统理论 第一章(操作系统引论)—第一节(操作系统的目标和作用)-CSDN博客

操作系统理论 第一章(操作系统引论)—第二节(操作系统的发展过程)-CSDN博客

操作系统理论 第一章(操作系统引论)—第三节(操作系统的基本特性)-CSDN博客

操作系统理论 第一章(操作系统引论)—第四节(操作系统的主要功能)-CSDN博客

操作系统理论 第一章(操作系统引论)—第五节(OS结构设计)-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第一节(前趋图和程序执行)-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第二节(进程的描述)-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第三节(进程控制)-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第四节(进程同步(上))-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第五节(进程同步(下))-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第六节(经典进程的同步问题)-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第七节(进程通信)-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第八节(线程的基本概念)-CSDN博客

操作系统理论 第二章(进程的描述与控制)—第九节(线程的实现)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第一节(处理机调度的基本概念)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第二节(作业与作业调度)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第三节(进程调度)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第四节(实时调度)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第五节(死锁概述)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第六节(预防死锁)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第七节(避免死锁)-CSDN博客

操作系统理论 第三章(处理机调度与死锁)—第八节(死锁的检测与解除)-CSDN博客

操作系统理论 第四章(存储器管理)—第一节(存储器的层次结构)-CSDN博客

操作系统理论 第四章(存储器管理)—第二节(程序的装入和链接)-CSDN博客

操作系统理论 第四章(存储器管理)—第三节(连续分配存储管理方式)-CSDN博客

操作系统理论 第四章(存储器管理)—第四节(覆盖与对换)-CSDN博客

操作系统理论 第四章(存储器管理)—第五节(存储管理方式(上))-CSDN博客

操作系统理论 第四章(存储器管理)—第六节(存储管理方式(下))-CSDN博客

操作系统理论 第五章(虚拟存储器)—第一节(虚拟存储器概述)-CSDN博客

操作系统理论 第五章(虚拟存储器)—第二节(请求分页存储管理方式)-CSDN博客

操作系统理论 第五章(虚拟存储器)—第三节(页面置换算法)-CSDN博客

操作系统理论 第五章(虚拟存储器)—第四节(“抖动”与工作集)-CSDN博客

操作系统理论 第五章(虚拟存储器)—第五节(请求分段存储管理方式)-CSDN博客

操作系统理论 第六章(输入输出系统)—第一节(I/O系统的功能、模型和接口)-CSDN博客

操作系统理论 第六章(输入输出系统)—第二节(I/O设备和设备控制器)-CSDN博客

操作系统理论 第六章(输入输出系统)—第三节(中断处理程序)-CSDN博客

操作系统理论 第六章(输入输出系统)—第四节(设备驱动程序)-CSDN博客

操作系统理论 第六章(输入输出系统)—第五节(与设备无关的I/O软件)-CSDN博客

操作系统理论 第六章(输入输出系统)—第六节(用户层的I/O软件)-CSDN博客

操作系统理论 第六章(输入输出系统)—第七节(缓冲区管理)-CSDN博客

操作系统理论 第六章(输入输出系统)—第八节(磁盘存储器的性能和调度)-CSDN博客

操作系统理论 第七章(文件管理)—第一节(文件和文件系统)-CSDN博客

操作系统理论 第七章(文件管理)—第二节(文件的逻辑结构)-CSDN博客

操作系统理论 第七章(文件管理)—第三节(文件目录)-CSDN博客

操作系统理论 第七章(文件管理)—第四节(文件共享)-CSDN博客

操作系统理论 第八章(磁盘存储器的管理)—第一节(外存的组织方式)-CSDN博客

操作系统理论 第八章(磁盘存储器的管理)—第二节(文件存储空间的管理)-CSDN博客

操作系统理论 第八章(磁盘存储器的管理)—第三节(提高磁盘I/O速度的途径)-CSDN博客

(4)计算机网络:

计算机网络 第一章(概述)-CSDN博客

计算机网络 第二章(物理层)-CSDN博客

计算机网络 第三章(数据链路层)【上】-CSDN博客

计算机网络 第三章(数据链路层)【中】-CSDN博客

计算机网络 第三章(数据链路层)【下】-CSDN博客

计算机网络 第四章(网络层)【上】-CSDN博客

计算机网络 第四章(网络层)【下】-CSDN博客

计算机网络 第五章(运输层)【上】-CSDN博客

计算机网络 第五章(运输层)【下】-CSDN博客

计算机网络 第六章(应用层)-CSDN博客

二、基于STM32的软件开发及几个通信协议

1、时钟树

(1)时钟信号的作用是什么?

(1)简单介绍下STM32的时钟信号。

①回答:

        STM32的时钟系统为芯片和外设提供精准的时序基准,其核心是多源时钟架构与灵活分配机制,主要分为四个部分:

        时钟源

                高速时钟:HSI(内部RC振荡器,8MHz,低成本但精度低)和HSE(外部晶振,如8MHz,高精度)。

                低速时钟:LSI(40kHz,用于看门狗)和LSE(32.768kHz外部晶振,用于RTC精准计时)。

                PLL锁相环:通过倍频(如HSE×9)生成高频系统时钟(如72MHz),是性能提升的关键。

        时钟树

                通过分频/倍频将时钟分配到不同总线(如AHB、APB1/APB2),外设按需选择时钟源,例如APB1外设(UART/I2C)最高36MHz,APB2外设(ADC/高级定时器)可达72MHz。

②难度系数:★★

③难点分析:时钟信号无时无刻都会用到,但要给出一个逻辑清晰、语句连贯的回答,在猝不及防的情况下可能会稍微有点难。

(2)时钟信号的作用是什么?

①回答:

        时钟信号是微控制器(如STM32)的“心跳核心作用是为芯片内各模块的操作提供同步基准,确保系统协调工作。具体体现在四个方面:

        同步时序控制

        ​​​​​​​        时钟信号可以统一操作节拍,所有数字电路(CPU、总线、外设)依赖时钟边沿(上升沿/下降沿)触发动作,避免逻辑混乱,例如CPU每条指令的执行周期以时钟周期为单位(如72MHz时钟下,每个周期约13.9ns),以及总线传输(如AHB、APB)的读写操作严格对齐时钟信号

        外设功能协调

        ​​​​​​​        可实现精准定时与速率控制,如定时器(TIM)通过时钟分频生成PWM、捕获/比较信号,以及串口(UART)波特率由时钟分频计算。另外还可实现多模块协同,如ADC采样、DMA传输、中断触发等操作需时钟同步以避免竞争冲突(如DMA需转运ADC读取的数据,如果二者不同步,往往容易引发缓冲区数据错乱)

②难度系数:★★★

③难点分析:时钟信号无时无刻都会用到,但要将其具体化,并列出使用场景,在猝不及防的情况下可能会稍微有点难。

2、GPIO外设

(1)简单介绍下GPIO。

①回答:

②难度系数:★★

③难点分析:

3、SPI协议

(1)介绍下SPI协议。

①回答:

        SPI是一种高速全双工的同步串行协议,通过主设备控制SCLK和SS信号,配合MOSI/MISO实现数据交换。其核心优势是速率高、硬件简单,但需注意主从模式匹配和片选管理典型应用包括Flash存储器和传感器,例如STM32通过SPI以模式0读取温湿度数据时,能在1MHz时钟下实现微秒级响应。相比I2C,SPI更适合对速度要求严苛且设备数量较少的场景

②难度系数:★★★

③难点分析:一个通信协议有很多内容,候选人不可能全部拎出来讲一遍,于是这就涉及到取舍的问题了,既然要直接介绍一个通信协议,不妨从其特点、优势和应用场景切入,而非将其时序或者硬件电路仔仔细细地介绍一遍。

(2)SPI通信中出现通讯故障,应该如何排查?

①回答:

        SPI通信故障排查需分四步:

                硬件检查:确认四线连接正常、电平匹配,示波器观察SS和SCK信号

                协议验证:核对主从模式(CPOL/CPHA)、数据位序和SCK频率是否匹配

                软件调试:检查SPI初始化参数,用逻辑分析仪抓取数据帧,定位传输断点

                工具调试:用逻辑分析仪抓取波形,结合状态寄存器定位错误类型

②难度系数:★★

③难点分析:回答此问题最好有实践经验,亦或是非常熟悉SPI协议。

(3)说说过去在项目中运用到SPI协议时难忘的经历。

①回答:

②难度系数:★★★★

③难点分析:

4、I2C协议

(1)介绍下I2C协议。

①回答:

        I2C是一种两线制的同步串行协议,通过SDA和SCL实现多设备通信,主设备通过唯一地址选择从设备,利用起始/停止条件控制传输周期,并通过ACK机制确保数据可靠性其优势在于引脚资源占用少、支持多主多从,但速率较低,适用于传感器、EEPROM等场景。例如,STM32通过I2C以100kHz读取SHT30传感器时,需严格遵循地址帧、数据帧和应答的时序逻辑。相比SPI,I2C更适合设备数量多但数据量小的系统

②难度系数:★★★

③难点分析:一个通信协议有很多内容,候选人不可能全部拎出来讲一遍,于是这就涉及到取舍的问题了,既然要直接介绍一个通信协议,不妨从其特点、优势和应用场景切入,而非将其时序或者硬件电路仔仔细细地介绍一遍。

(2)I2C通信中出现通讯故障,应该如何排查?

①回答:

        I2C通信故障排查需分四步:

                硬件检查:确认SDA/SCL物理连接、上拉电阻和供电正常,示波器观察信号完整性

                协议分析:验证地址匹配、ACK响应和时序参数(如时钟频率、建立时间)

                软件调试:检查I2C初始化参数,用逻辑分析仪抓取数据帧,定位传输断点

                工具调试:用逻辑分析仪抓取波形,结合状态寄存器定位错误类型

②难度系数:★★

③难点分析:回答此问题最好有实践经验,亦或是非常熟悉I2C协议。

(3)说说过去在项目中运用到I2C协议时难忘的经历。

①回答:

②难度系数:★★★★

③难点分析:

5、CAN协议

(1)介绍下CAN协议。

①回答:

        CAN是一种多主、异步、差分信号的串行通信协议专为高噪声环境下的可靠通信设计(如汽车电子、工业控制),CAN总线中所有节点平等,可主动发起通信,通过非破坏性仲裁解决总线竞争,并且其具有高可靠性,内置有CRC校验、错误帧重传等机制

②难度系数:★★★

③难点分析:一个通信协议有很多内容,候选人不可能全部拎出来讲一遍,于是这就涉及到取舍的问题了,既然要直接介绍一个通信协议,不妨从其特点、优势和应用场景切入,而非将其时序或者硬件电路仔仔细细地介绍一遍。

(2)CAN总线上有节点收不到报文,应该如何进行排查?

①回答:

        排查CAN节点收不到报文的问题需分层逐步分析:

                硬件层:检查终端电阻、线缆通断及信号波形,确认物理连接正常

                协议层:验证波特率一致性、ID过滤设置及错误计数器状态,排除配置错误

                软件层:审查初始化代码与接收逻辑,确保中断和缓冲区管理无误

                环境干扰:检测电磁干扰并优化拓扑结构

②难度系数:★★

③难点分析:回答此问题最好有实践经验,亦或是非常熟悉CAN协议。

(3)说说过去在项目中运用到CAN协议时难忘的经历。

①回答:

②难度系数:★★★★

③难点分析:

6、USART协议

7、DMA外设

8、学习资料

STM32入门教程(绪论)-CSDN博客

STM32入门教程(绪论)-CSDN博客

STM32入门教程(GPIO篇)-CSDN博客

STM32入门教程(OLED屏篇)-CSDN博客

STM32入门教程(EXTI外部中断篇)-CSDN博客

STM32入门教程(定时器篇)-CSDN博客

STM32入门教程(ADC模数转换器篇)-CSDN博客

STM32入门教程(DMA篇)-CSDN博客

STM32入门教程(串口篇)-CSDN博客

STM32入门教程(I2C通信篇)-CSDN博客

STM32入门教程(SPI通信篇)-CSDN博客

STM32入门教程(CAN通信篇)-CSDN博客

STM32入门教程(RTC实时时钟&BKP备份寄存器篇)-CSDN博客

STM32入门教程(PWR电源控制篇)-CSDN博客

STM32入门教程(WDG看门狗篇)-CSDN博客

STM32入门教程(FLASH闪存篇)-CSDN博客

编程技巧(基于STM32)第一章 定时器实现非阻塞式程序——按键控制LED灯闪烁模式-CSDN博客

三、基于51单片机的软件开发及NEC协议

1、中断

2、PWM波驱动电机

3、学习资料

51单片机从零开始入门教程 第一章(51单片机基础知识与工程创建)-CSDN博客

51单片机从零开始入门教程 第二章(LED篇)-CSDN博客

51单片机从零开始入门教程 第三章(独立按键篇)-CSDN博客

51单片机从零开始入门教程 第四章(数码管篇)-CSDN博客

51单片机从零开始入门教程 第五章(模块化编程及调试工具)-CSDN博客

51单片机从零开始入门教程 第六章(矩阵键盘篇)-CSDN博客

51单片机从零开始入门教程 第七章(定时器篇)-CSDN博客

51单片机从零开始入门教程 第八章(串口篇)-CSDN博客

51单片机从零开始入门教程 第九章(LED点阵屏篇)-CSDN博客

51单片机从零开始入门教程 第十章(DS1302实时时钟篇)-CSDN博客

51单片机从零开始入门教程 第十一章(蜂鸣器篇)-CSDN博客

51单片机从零开始入门教程 第十二章(存储器篇)-CSDN博客

51单片机从零开始入门教程 第十三章(传感器篇)-CSDN博客

51单片机从零开始入门教程 第十四章(液晶屏篇)-CSDN博客

51单片机从零开始入门教程 第十五章(直流电机篇)-CSDN博客

51单片机从零开始入门教程 第十六章(模数转换篇)-CSDN博客

51单片机从零开始入门教程 第十七章(红外遥控篇)-CSDN博客

四、基于Arduino/ESP8266的软件开发

1、

2、学习资料

(1)Arduino:

零基础入门学用Arduino 第一部分(一)-CSDN博客

零基础入门学用Arduino 第一部分(二)-CSDN博客

零基础入门学用Arduino 第一部分(三)-CSDN博客

零基础入门学用Arduino 第二部分(一)-CSDN博客

零基础入门学用Arduino 第二部分(二)-CSDN博客

零基础入门学用Arduino 第三部分(一)-CSDN博客

零基础入门学用Arduino 第三部分(二)-CSDN博客

零基础入门学用Arduino 第三部分(三)-CSDN博客

零基础入门学用Arduino 第四部分(一)-CSDN博客

零基础入门学用Arduino 第四部分(二)-CSDN博客

零基础入门学用Arduino 第四部分(三)-CSDN博客

零基础入门学用Arduino 第五部分-CSDN博客

(2)ESP8266:

五、嵌入式操作系统

1、FreeRTOS

(1)FreeRTOS与一般的操作系统(如Windows、Linux)有什么区别?

2、µC/OS-III

3、Linux

4、学习资料

(1)FreeRTOS:

FreeRTOS从入门到精通 第一章(初识FreeRTOS)-CSDN博客

FreeRTOS从入门到精通 第二章(FreeRTOS移植)-CSDN博客

FreeRTOS从入门到精通 第三章(任务创建和任务删除)-CSDN博客

FreeRTOS从入门到精通 第四章(任务挂起和恢复)-CSDN博客

FreeRTOS从入门到精通 第五章(中断管理)-CSDN博客

FreeRTOS从入门到精通 第六章(FreeRTOS临界段代码保护及任务调度器挂起和恢复)-CSDN博客

FreeRTOS从入门到精通 第七章(FreeRTOS列表和列表项)-CSDN博客

FreeRTOS从入门到精通 第八章(任务调度)-CSDN博客

FreeRTOS从入门到精通 第九章(时间片调度)-CSDN博客

FreeRTOS从入门到精通 第十章(FreeRTOS任务相关API函数)-CSDN博客

FreeRTOS从入门到精通 第十一章(FreeRTOS时间管理)-CSDN博客

FreeRTOS从入门到精通 第十二章(FreeRTOS消息队列)-CSDN博客

FreeRTOS从入门到精通 第十三章(信号量)-CSDN博客

FreeRTOS从入门到精通 第十四章(队列集)-CSDN博客

FreeRTOS从入门到精通 第十五章(事件标志组)-CSDN博客

FreeRTOS从入门到精通 第十六章(任务通知)-CSDN博客

FreeRTOS从入门到精通 第十七章(软件定时器)-CSDN博客

FreeRTOS从入门到精通 第十八章(Tickless低功耗模式)-CSDN博客

FreeRTOS从入门到精通 第十九章(内存管理)-CSDN博客

(2)µC/OS-III:

µCOS-III从入门到精通 第一章(初识µCOS-III)-CSDN博客

µCOS-III从入门到精通 第二章(µCOS-III移植)-CSDN博客

µCOS-III从入门到精通 第三章(任务创建和任务删除)-CSDN博客

µCOS-III从入门到精通 第四章(任务挂起和恢复)-CSDN博客

µCOS-III从入门到精通 第五章(中断管理)-CSDN博客

µCOS-III从入门到精通 第六章(µC/OS-III临界区代码保护及任务调度锁)-CSDN博客

µCOS-III从入门到精通 第七章(任务调度)-CSDN博客

µCOS-III从入门到精通 第八章(时间片调度)-CSDN博客

µCOS-III从入门到精通 第九章(时间管理)-CSDN博客

µCOS-III从入门到精通 第十章(µC/OS-III消息队列)-CSDN博客

µCOS-III从入门到精通 第十一章(信号量)-CSDN博客

µCOS-III从入门到精通 第十二章(任务信号量及队列)-CSDN博客

µCOS-III从入门到精通 第十三章(事件标志组)-CSDN博客

µCOS-III从入门到精通 第十四章(软件定时器)-CSDN博客

µCOS-III从入门到精通 第十五章(µC/OS-III内存管理)-CSDN博客

六、汇编语言


持续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值