嵌入式实战场景题目(一)

此部分不只包含面经内容,均是实战类型不必全文背诵,有思路即可

后续收录于专栏:嵌入式最强面经

1.我们通常所说的波特率9600bps,这个bps的意思是?

简答:

波特率(baud rate)是衡量数据传输速率的单位,通常以每秒传输的比特数来表示。在串行通信中,发送端和接收端必须保持相同的波特率设置,以确保正确传输数据。如果发送端和接收端使用不同的波特率设置,那么数据传输会出现问题。如果发送端使用9600 bps的波特率,而接收端使用不同的波特率,例如4800 bps,那么接收端可能无法正确解析发送端发送的数据。这会导致数据传输错误、乱码和通信障碍。

2.SPI IIC UART那个属于异步通信 那个属于同步通信?

同步? 异步?

最简单的分辨方式就是有无时钟线,(有时钟线就可以同步,没有就异步,很显然UART没有但是USART可以有时钟线。)

当然这是大多数情况下可以这么理解,特殊情况下没有时钟线也可以实现同步

1.UART(异步):UART使用起始位、数据位、校验位和停止位的组合来表示一个字符的传输。通信双方使用自己的时钟源,没有共享的时钟信号,因此是异步通信。

2.SPI(同步):SPI使用主从模式进行通信,主设备提供时钟信号来同步数据传输。通信双方在时钟的控制下进行数据的传输,因此是同步通信。

3.IIC(同步):IIC也称为I2C,使用主从模式进行通信,时钟线是由主设备提供的,从设备根据主设备的时钟信号进行数据传输,因此是同步通信。

3.单片机ADC是什么?主要功能?

ADC (Analog-to-Digital Converter)即模数转换器,是一种将模拟信号转换为数字信号的电子元件。在单片机系统中,ADC主要用于将模拟信号转换为数字信号,以便单片机能够进行数字信号处理。

单片机ADC的主要功能是将外部模拟信号转换为数字信号,这种模拟信号可以来自各种传感器、电位器、电压等。

通过ADC转换后的数字信号可以直接读到单片机内部,进行数字信号处理。ADC的转换精度决定了单片机可以获取到的数字信号的准确程度,因此,ADC的精度对系统的性能有着关键作用。

引出问题:ADC和DAC有什么区别?

ADC的工作原理:

ADC将模拟信号转换为数字信号。它的基本原理是将连续时间的模拟信号转换为离散时间的数字信号。具体来说,ADC将模拟信号在时间上进行采样,然后通过量化操作将每个采样值转换为数字编码。这些数字编码可以用二进制代码表示。ADC在转换过程中需要通过采样频率和量化精度来决定转换质量,采样频率和量化精度越高,转换质量越好,但同时也会增加转换的成本和复杂度。

DAC的工作原理:

DAC将数字信号转换为模拟信号。它的基本原理是将数字信号通过数字编码转换为模拟信号。具体来说,DAC将数字信号的二进制代码解码,并根据解码结果输出对应的模拟信号。DAC的输出模拟信号可以是连续的,也可以是分段的。DAC的输出质量取决于DAC的分辨率和更新速率,分辨率越高,更新速率越快,输出质量越好。

4.存储器 类型 FLASH和RAM的区别

FLASH

FLASH是一种非易失性存储器,即即使在断电情况下仍然可以保存其存储的数据。FLASH主要用于存储程序代码和常量数据,以及需要长期存储、或者经常更新的数据,例如配置信息。使用FLASH可以有效地减少系统启动时间和占用内存空间,同时也可以更好地保护程序数据的安全性。

FLASH的缺点是存储速度相对较慢,写入时需要整个擦除块的数据先清除,再进行数据写入,一般擦除操作时间比写操作时间长,对于需要频繁改变的数据不太适用。

RAM

RAM是一种易失性存储器,它可以快速读写数据,一般用于存储临时数据、变量、堆栈等运行时需要的数据。RAM有多种类型,包括静态RAM(SRAM)和动态RAM(DRAM)等。

SRAM速度快、功耗低,但容量相对较小,容易受到电磁干扰;DRAM容量大,但需要刷新,读写速度较慢。RAM相比FLASH,读取速度更快,但在断电时会丢失数据,不适合存储长期数据。

总的来说,FLASH主要用于存储程序代码和常量数据,RAM主要用于存储临时数据和变量。选择存储器类型时要根据具体的应用需求来进行选择。

5.一般情况下,单片机定时器的相关寄存器有哪些?

1.TCON寄存器(定时器控制寄存器)

TCON寄存器用于控制定时器运行、中断触发等相关操作。

2.TMOD寄存器(定时器/计数器模式控制寄存器)

TMOD寄存器用于设定定时器的工作模式,以确定定时器的计数方式和中断触发条件。

3.TH0、TL0、TH1、TL1寄存器(定时器计数初值与重载值寄存器)

这四个寄存器均为8位寄存器,用于保存定时器的计数初值和重载值。通常情况下,定时器正常计数时由THx和TLx两个寄存器共同组成一个16位定时器计数器,当计数器溢出后,自动将THx和TLx值重载。其中,TH0和TL0寄存器

对应定时器0,TH1和TL1寄存器对应定时器1。

4.IE寄存器(中断使能寄存器)

IE寄存器用于开启或关闭各种中断。对于定时器中断,需要设置相应的中断标志位。

6.嵌入式存储区域(ARM MDK 环境下内存分布情况)

CODE(或ROM):代码存储区域,通常指的是嵌入式系统中的只读存储器(ROM)或闪存(Flash)等。这是用于存储程序的指令代码的区域。

RO(Read-Only):只读存储区域,用于存储只读的常量数据,如字符串、常量数组等。这些数据可以被读取,但不能被修改。

RW(Read-Write):读写存储区域,用于存储可读写的数据,如全局变量、静态变量、堆内存等。这些数据可以被读取和写入,其值在程序执行期间可以被修改。

ZI(Zero Initialization):未初始化数据区域,用于存储未经初始化的全局变量或静态变量。这些变量在编译时分配内存区域,但不被初始化为特定的初值,默认值可能是0或空值。

例:

unsigned char a;
unsigned char b[8] = {1, 2, 3, 4, 5, 6, 7, 8};
unsigned char c[16] = {0};
const unsigned char d[1] = {0xdd};
int main() {
   unsigned char e = 0xee;
} 
a是在ZI区,b是RW区,c是ZI区,d是RO区,e是栈对吗
在这段代码中,变量的内存分配如下:


unsigned char a; 是一个全局变量,它的存储类别是未初始化的数据段(BSS段)或者称为零初始化区(ZI区)。
unsigned char b[8] = {1, 2, 3, 4, 5, 6, 7, 8}; 是一个全局数组变量,它会被分配到可读写数据段(RW段)。
unsigned char c[16] = {0}; 是一个全局数组变量,它同样会被分配到零初始化区(ZI区)。
const unsigned char d[1] = {0xdd}; 是一个全局常量数组变量,它会被分配到只读数据段(RO段)。
unsigned char e = 0xee; 是在 main() 函数中声明的局部变量,它会被分配到栈区。


7.C 程序 地址相关试题

数组 int a[5]= 12345 如果a的地址为0x2000106c 如果 int *p = &(a[1]); p++ ; int m = *p++; 此时m是多少 p是多少?

根据给出的代码和信息:

  • int a[5] = {1, 2, 3, 4, 5};:这里定义了一个包含5个元素的整型数组a,并初始化为{1, 2, 3, 4, 5}。
  • int *p = &(a[1]);:这里定义了一个整型指针p,并将其指向数组a的第二个元素a[1],即2的地址。
  • p++;:指针p的值增加1,所以它现在指向数组a的第三个元素a[2],即3的地址。
  • int m = *p++;:这里有两个操作符,先是解引用操作符*,然后是后递增操作符++。首先,对指针p进行解引用操作,得到其指向的值,即a[2],即3。然后,指针p递增1,移动到下一个元素a[3]的地址。
  • 所以,在这段代码执行后:
  • m 的值为3,因为它存储了指针p解引用时的值。
  • p 的值指向数组a的第四个元素a[3]的地址,即

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

c++/嵌入式面经专栏 文章被收录于专栏

BG双9,目前就职intel。打算把之前校招时做的笔记通过专栏发出来,本专栏适合于C/C++、嵌入式方向就业的同学,本篇面经总结数千篇面经的知识集合,实时更新全网最新的嵌入式/C++最新内容,囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构、数据库等一系列知识点,在我看来这些是求职者在面试中必须掌握的知识点。最后呢祝各位能找到自己合适的工作。

全部评论
点赞 回复 分享
发布于 02-19 13:34 北京
谢谢大佬
点赞 回复 分享
发布于 02-19 13:46 广东

相关推荐

1. 实时数据采集  在嵌入式系统中,如何有效地实现实时数据采集?请列出关键步骤和考虑因素。2. UART通信注意事项  在使用UART进行设备间通信时,需注意哪些事项以确保数据传输的可靠性?3. FreeRTOS任务延时  在FreeRTOS中,如何实现任务的延时功能?请给出具体的API和示例。4. SPI数据交换  如何通过SPI与传感器进行数据交换?请描述配置和数据传输的过程。5. TCP/IP协议栈配置  在嵌入式系统中,如何配置和使用TCP/IP协议栈以实现网络通信?6. PWM控制伺服电机  如何使用PWM信号控制伺服电机的角度?请说明具体的实现方法。7. FreeRTOS互斥量  在FreeRTOS中,如何实现互斥量的使用以保护共享资源?8. 低功耗模式实现  在嵌入式系统中,如何实现低功耗模式?请列出可采取的策略。9. I2C温度传感器读取  如何使用I2C与温度传感器进行数据读取?请描述具体的步骤。10. FreeRTOS任务通知机制  在FreeRTOS中,如何实现任务的通知机制以同步任务间的操作?11. ADC配置  如何配置ADC以读取温度传感器的数值?请列出配置步骤。12. 数据压缩实现  在嵌入式系统中,如何实现数据压缩以节省存储空间?13. PWM控制电机速度  使用PWM控制电机速度的基本原理是什么?请解释其工作机制。14. 优先级反转  在FreeRTOS中,如何处理任务的优先级反转问题?请给出解决方案。15. 中断处理按键输入  如何使用中断来处理按键输入?请描述具体的实现过程。16. CRC校验实现  在嵌入式系统中,如何实现数据的CRC校验?请提供算法和步骤。17. CAN总线通信原理  使用CAN总线进行车辆数据通信的基本原理是什么?请简述其工作流程。18. FreeRTOS事件组  在FreeRTOS中,如何实现事件组的使用以管理多个任务的同步?19. 外部中断响应  如何使用外部中断来响应传感器数据变化?请说明具体的配置和实现。20. 压力传感器读取  在嵌入式系统中,如何实现压力传感器的读取?请描述相关步骤。21. DMA音频数据传输  使用DMA进行音频数据传输的优势是什么?请说明其实现方法。22. 软件定时器使用  在FreeRTOS中,如何实现软件定时器的使用以定时执行任务?23. 图像传输实现  在嵌入式系统中,如何实现图像传输?请列出所需的协议和步骤。24. RTC定时事件调度  如何使用RTC进行定时事件的调度?请描述配置和使用方法。25. 内存使用监控  在FreeRTOS中,如何监控内存使用情况以避免内存泄漏?26. USB设备识别  使用USB进行设备识别和通信的基本原理是什么?请简述其工作流程。27. 音频录制实现  在嵌入式系统中,如何实现音频录制?请列出关键步骤。28. MQTT设备监控  如何使用MQTT协议进行设备状态监控?请描述实现流程。29. FreeRTOS时间管理  在FreeRTOS中,如何实现任务的时间管理以优化系统性能?30. 固件安全更新机制  在嵌入式系统中,如何实现固件的安全更新机制?请列出关键考虑因素。嵌入式C++面经推荐大佬面经  链接在下边https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
评论
3
8
分享

创作者周榜

更多
牛客网
牛客企业服务