嵌入式面试提问

这篇具有很好参考价值的文章主要介绍了嵌入式面试提问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

嵌入式面试问题

1.讲一下STM32的时钟系统

  现总结下:首先是时钟源输入时钟信号到单片机,然后单片机对输入的时钟信号进行倍频和分频处理,再将处理后的时钟信号输出至系统,外设或外部接口。
  先看这张图,最外面的线上的方格是时钟相关的外部接口,OSC接口用于连接外部石英晶振时钟电路,最下面的接口用于内部时钟信号的输出。如图所示:
嵌入式面试提问,STM32笔记总结,面试,单片机,职场和发展

图 1 STM32外部时钟接口图

  然后我们介绍时钟源输入,单片机需要通过其产生的时钟信号来控制电路工作。最常见的时钟电路有RC和OSC两种时钟电路。RC时钟精度低且体积小,OSC正好相反。因此单片机往往内置RC时钟,若需要更高精度则需要外界OSC时钟。
  我们现在对时钟电路进行逐个分析:先介绍RC电路,如图所示,上面写了8MHz,HSI,RC。分别表示了时钟频率,时钟类型(高速内部时钟),RC表示电阻电容震荡器时钟电路。如图所示:
嵌入式面试提问,STM32笔记总结,面试,单片机,职场和发展

图2 内部时钟图

  在看第二个,由此可知,时钟频率的范围是4-16MHz,它的类型是外部的高速石英晶振时钟。第三个,时钟类型LSE就是低速石英晶振时钟,频率是32.768KHz。第四个,时钟类型是内部的低速阻容时钟,频率为40KHz。如图所示:
嵌入式面试提问,STM32笔记总结,面试,单片机,职场和发展

图3 外部时钟图

  我们继续看时钟系统手册,绿色竖着的梯形结构是选择器开关。他的作用是:在多个时钟输入的同时,选择一个作为输出。宽边的为输入时钟信号部分,窄边的为选择后的输出信号。然后介绍黄色框线标注的部分为预分频器,它的作用是用于将输入的时钟信号进行分频输出。接着介绍红色框线部分,它是倍频器,起作用是完成倍频功能,将输入的时钟源进行倍频输出。最后看蓝色框线标注的部分,它是数字信号电路里的与门。用来控制时钟信号的导通与否。默认为了降低功耗为关闭状态,即控制端为低电平,当需要使用外设时,会通过程序让其下端也就是控制端处于高电平,使上端的时钟信号导通。时钟系统图如下:
嵌入式面试提问,STM32笔记总结,面试,单片机,职场和发展

图4 时钟系统结构介绍图

  接下来介绍时钟系统的线路连接,从图中我们可以看到,内部高速阻容时钟输出一共有三个部分,第一个是提供给flash编程接口,第二个是通过系统时钟的选择器到达系统时钟。第三个是想通过二分频之后,通过锁相环的选择器进入锁相环。外部高速石英晶振时钟有四个输出,第一个是直接通过系统时钟的选择器到达系统时钟。第二个是通过第一个选择器之后再通过橙色的这条线到达锁相环,第三个是二分频之后通过选择器再通过橙色的这条路线到达锁相环。第四个是经过128分配之后至实时时钟。外部低速石英晶振时钟,它只有一个,就是直接输出至实时时钟。内部的低速阻容时钟,它有两条输出路线,第一个是直接到达实时时钟,直接输出至独立看门狗。如图所示:
嵌入式面试提问,STM32笔记总结,面试,单片机,职场和发展

图5 时钟线路图

  然后我们讲下重点锁相环,来看锁相环的输入及输出。首先锁相环的第一个输入是内部的高速时钟二分频之后输入到锁相环,即红色最下面那一条线,第二个输入是外部高速时钟,即蓝色的第二条再通过棕色那条,第三个输入是外部高速时钟二分频,即蓝色的第三条,那条除以2的再经过棕色那条。它的输出主要有两部分,第一部分是预分频后至USB接口,也就是上面的那条黄色路线。第二部分是直接到达系统时钟,即下面的那条黄色路线。示意图如下:
嵌入式面试提问,STM32笔记总结,面试,单片机,职场和发展

图6 倍频器示意图

  接着来讲系统时钟的输入输出,首先系统时钟的额输入部分有三种选择,第一是内部高速时钟,即红色的第二条线。第二是倍频器,即黄色的下面那条线。第三个输入是外部高速时钟,即蓝色的第一条线。它的输出有三个部分,第一个是IIS2,也就是集成电路内置的音频总线。第二是IIS3,第三个是AHB总线的预分频器。最后讲下主时钟输出,它的输入有四个部分,第一个是倍频器,第二个是内部高速时钟,第三个是内部高速时钟,第四个是系统时钟。主时钟的输出只有一个就是外部接口。上述示意图如下:
嵌入式面试提问,STM32笔记总结,面试,单片机,职场和发展

图7 主时钟即系统时钟示意图

  这样子就理清了时钟主体部分及主体路线的作用。

2.C语言中堆和栈的区别

  堆栈和内存的共同特点就是空间都是在内存上,也就说都是在ram上。

  1. 堆是一个动态的概念,栈是一个静态的概念。
  2. 栈是在编译的时候确定的,堆是在运行的时候确定的。
  3. 栈的大小在编译的时候就已经定好了,堆的大小有可能是一个动态变化的概念,取决于程序运行计算到那一步的具体的数据。一般都是根据使用需求来选择堆或者栈。
  4. 从访问效率上来说,因为堆是动态的,栈是静态的,所以堆的速度要慢。
  5. 再看另外一个特点就是访问权限方面,栈在访问权限上面的特点如下,一个函数的调用,访问的数据都是在栈上的。这个函数调用以后,它栈上的数据无法被另一个函数访问。简单来说就是不同函数之间的栈数据不能共享,这个原则也适用于多线程。堆是不一样的,堆是在程序进程中的堆,只要在这个进程上,所有的线程都可以访问这个堆上的数据。堆上的数据申请访问之后,在不同的语言下,可能处理的环境也是不一样的。
  6. 然后说下使用堆和使用栈的环境条件,当你对于上次的数据不确定,那就用堆而不知栈,但你确定的话,由于效率的问题,肯定要用栈,因为他会极大的提高你的运行速度,如果使用的是特别庞大的内存,一般不去用栈而是用堆,因为用完了要赶快释放掉。

3.GPIO的输出方式

  输出的方式由控制器和两个MOS管组成,这两个mos管一个为Nmos,一个为Pmos,根据两个mos管的开关情况来设置输出模式。

  1. 推挽输出:IO口高电平时,电流输出,IO口低电平时,电流流进
  2. 开漏输出:Q1一直关闭,根据Q2改变IO的电压,接一个上拉电阻,当Q2关闭时,为高阻态,外接接口就可以被上拉到目标电压。

4.单片机上电之后不运行

  1. 先检查电源电压的问题,用万用表测量接地引脚和电源引脚之间的电压。
  2. 检查复位引脚电压是否正常。测一下按下和松开复位按键的电压值。
  3. 检查晶振是否起震,用示波器看晶振引脚的波形。
  4. 如果电源不稳定的话,可以在电源引脚和接地引脚之间接一个0.1uf的电容改善一下。

5.举例你用过的单片机和主要参数

  这里我就以我用过的STM32单片机为例,

STM32C8T6的参数

  1. 是一个基于ARM Cortex—M3内核的32位微控制器
  2. 程序存储容量是64KB,需要电压2V-3.6V,工作温度为-40°-85°。
  3. 37个GPIO
  4. 2个12bitADC合计12路通道,外部通道:PA0-PA7+PB0-PB1,内部通道:温度传感器通道,内部参考电压通道。
  5. 4个定时器,其中TM1带死区(死区就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁。这段延迟时间就是死区。)插入,常用于PWM控制电机。
  6. 通信窗口:两个IIC,两个SPI,3个USART,一个CAN
  7. 系统时钟,内部时钟最高可倍频到64MHz,外部时钟最高可倍频到72MHz。

STM32F407VET6的参数

  1. 基于ARN Cortex—M4内核的323位微控制器
  2. 存储容量512KB闪存,192KBSRAM,
  3. 12位精度,16通道ADC
  4. 3个IIC,3个SPI,3个USART,1个CAN
  5. 外部晶振最高180MHz

6.一个温度传感器按照正确的使用方式和参数指标对人体测量温度后一直都是35°这是为什么

  因为该温度传感模块测出的温度为表⾯温度,⽽实际上表⾯温度和实际体温是有差距的。

7.结构体,联合体和sizeof方面的知识

  1. 结构体:结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。关于其struct声明的位置,也就是这段代码要放到哪里。同样这也是具有作用域的。这种声明如果放在任何函数的外面,那么则可选标记可以在本文件中,该声明的后面的所有函数都可以使用。如果这种声明在某个函数的内部,则它的标记只能在内部使用,并且在其声明之后。
  2. 联合体:在同一个内存空间中存储不同的数据类型。联合体内数据是按地址对齐的。具体是高位数据还是低位数据要看平台的大小端模式,51是大端,stm32默认是小端,如果其他编译器还请自测。仅仅用了一条减法指令就达到了除法、取余的操作,联合体的应用范围非常广泛,可以用于优化内存使用、处理二进制数据等,在进行高频率定时时尤为有用。但是只能同时访问联合体中的一个成员。
  3. sizeof:sizeof是C语言中保留关键字,也可以认为是一种运算符,单目运算符。sizeof实际上是获取了数据在内存中所占用的存储空间,以字节为单位来计数。

8.C语言考察功底的相关例子

博客园的C语言功底测试问题
宏的一些用法和注意事项

9.STM32中断处理流程

  先中断初始化,然后CPU正常运行程序,产生中断,处理中断内的程序,继续检查中断。具体的介绍这个文章可以看看:具体介绍中断异常和处理过程

10.486有几根线

  RS485通信系统通常采用三根线,分别为信号线,地线和电源线。信号线由两根线组成,分别用于发送和接收数据;地线由一根线组成,主要用于接地和接入外部电源;电源线由一根线组成,主要用于接入外部电源,以给接收器提供电源。

11.串口和并口的区别

这篇文章写的很详细串口和并口的区别

12.传感器上输出引脚是高阻抗好还是低阻抗好

高阻抗好。

  1. 传感器的输出引脚采用高阻抗设计,可以减小对传感器的负载,同时也有利于减小电源消耗,提高系统的灵敏度和精度。
  2. 在设计传感器输出电路时,需要根据具体的应用场景和系统需求进行综合考虑,权衡高阻抗和低阻抗的优缺点,选择合适的方案。

13.C语言头文件的工作原理

  1. 预处理阶段:编译器以C文件作为一 个单元,首先读这个C文件,发现第一句与第二句是包含一个头文件,就会在所有搜索路径中寻找这两个文件;
    补充一个知识点:
    #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索;
    #include ""格式:引用非标准库的头文件,编译器从用户的工作目录开始搜索.
  2. 找到之后,就会将相应头文件中再去处理宏,变量, 函数声明,嵌套的头文件包含等,检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的C文件 中,形成一个中间“C文件”;
  3. 编译阶段 :在上一步中相当于将那个头文件中的test变量扫描进了一个中间C文件,那么test变量就变成了这个文件中的一个全局变量,此时就将所有这个中间C文件的所有变量,函数分配空间,将各个函数编译成二进制码,按照特 定目标文件格式生成目标文件,在这种格式的目标文件中进行各个全局变量,函数的符号描述,将这些二进制码按照一定的标准组织成一个目标文件;
  4. 连接阶段 :将上一步成生的各个目标文件,根据一些参数,连接生成最终的可 执行文件,主要的工作就是重定位各个目标文件的函数,变量等,相当于将这个目标文件中的二进制码按一定的规范合到一个文件中再回到C文件与头文件各写什么内容的话题上:理论上来说C文件与头文件里的内容,只要是C语言所支持的,无论写什么都可以的,比如你在头文件中写函数体,只要在任何一个C文件包含此头文件就可以将这个函数编译成目标文件的一部分;

14.C语言指针的简单介绍

  指针是一种单纯的数据类型,本质上指针变量和普通变量没什么区别,指针变量一般用来存储地址,&为取地址操作符,*为取值操作符。

15.正确理解关键字CONST

  首先最常用的就是使用const来修饰一个变量,通过const之后,这个变量的值在初始化后就不会再被改变。

16.CAN总线介绍

  CAN(Controller Area Network),要进行CAN通讯需要专门的CAN收发芯片,单片机与CAN收发芯片进行数据通讯时,普通的高低电平信号,就会被转化为差分信号。差分信号具有抗干扰作用。CAN传输的一帧数据里面,首先是起始位,然后是启示码(用来识别信息发送对象),然后是远程请求或者数据帧的类型,一个是1一个是0,接下来6位是控制码(用于控制数据长度),接下来是16位CRC码(用于确保数据的准确性),然后是两位ACK码,最后是7位结束位。

17.什么是SPI,什么是IIC,什么是UART

  IIC是飞利浦公司开发的一种两线式串行,半双工同步通信总线,可以挂载多个参与通信的器件,常用于板内通信,比如单片机与外围芯片之间短距离,低速的信号传输。IIC有两条线,一条SCL时钟线用于同步,一条SDA数据线用于传输数据。
  IIC通信的一般流程如下:

  1. 主机发送起始位并进行从机寻址
  2. 得到应答后主机开始发送/读取数据位
  3. 数据发送/读取完成,主机发送停止位结束此次通信
      SPI是串行外围设备接口,是一种高速、全双工、同步通信总线,常用于单片机和EEPROM,FLASH,实时时钟,数字信号处理器等器件的通信,它主要是主从方式通信,通常只有一个主机和数个从机。标准SPI有四根线,分别为SCLK:时钟信号,由主机产生,MOSI:主机给从机发送指令或数据的通道,MISO:主机读取从机的状态或数据的通道,CS:从机片选使能信号。
      UART是通用异步收发器,是一种通用串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收,常用于单片机与单片机或外部辅助设备之间的通信。 UART在发送数据时先发送低位后发送高位,当总线处于空闲状态时,线路保持高电平,发送数据时,会先发送一个0.然后依次从低位到高位发送八位数据。八位数据传输完成后会发送一个1.下面说说UART应用的场景,RS232 9针串行接口,一般用于计算机和单片机之间的通信。USB转串口,这个是目前计算机和单片机之间的通信,还有一些控制器中,主辅控制芯片中也会利用UART通信协议进行信号传输。整体来说,UART多用于板间通信。

18.自己的职业规划

这个就根据自己的实际状况来准备。文章来源地址https://www.toymoban.com/news/detail-821559.html

到了这里,关于嵌入式面试提问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式系统开发笔记104:在STM32CubeIDE中导入工程

      本文讲述如何在STM32CubeIDE中导入现有工程。

    2024年02月16日
    浏览(52)
  • 嵌入式学习笔记——STM32的USART收发字符串及串口中断

    上一篇中,介绍了串口收发相关的寄存器,通过代码实现了一个字节的收发,本文接着上面的内容,通过功能函数实现字符串的收发,然后引入中断解决收发过程中while()死等的问题。 根据昨天的字符发送函数,只需要稍作修改即可实现发送函数了,一个字符串的结尾会有一

    2024年02月03日
    浏览(75)
  • 嵌入式学习笔记——STM32的USART相关寄存器介绍及其配置

    上一篇中,对串口做了个概述,主要是介绍了串口通信的特征,异步串行全双工通信,然后就是结合串口的框图梳理了一下STM32中USART的配置流程以及发送接收数据的流程,本文将接着上篇的内容,对串口的寄存器做个介绍,然后实现一个简单的收发实验。 根据之前GPIO的经验

    2024年02月05日
    浏览(54)
  • 蓝桥杯嵌入式CT117E-M4学习笔记02-STM32G431RBT6芯片学习

    首先学习了解一下蓝桥杯嵌入式CT117E-M4开发板的主控芯片STM32G431RBT6,本文仅为个人学习成果总结,如有错误,恳请指正。 上图为STM32CubeMX选型界面,如图可以看出STM32G431RBT6具有以下特点和硬件集成。 采用Cortex-M4 32位RISC核心架构,工作频率最高可达170Mhz。 128kBytes的FLASH,32

    2023年04月09日
    浏览(59)
  • stm32嵌入式实验考核

    STM32 实验考核题目 1. 利用 STM32 小板实现:控制外接 LED 灯每隔 3 秒钟亮暗变换,同 时在 PC 机上显示 MCU 的计时时间,MCU 的初始时间由 PC 机 方设置。 2. 利用 STM32 小板实现:利用导线外接 GPIO 口模拟 2 个按键输入, 根据输入组合的四种情况,分别控制三色灯四种流水灯效果

    2024年02月03日
    浏览(48)
  • STM32串口通信详解(嵌入式学习)

    时钟信号在电子领域中是指用于同步和定时电路操作的周期性信号。它在数字系统和通信系统中起着至关重要的作用,用于协调各个组件之间的数据传输和操作。 时钟信号有以下几个重要的方面: 频率:时钟信号的频率是指单位时间内信号周期的数量。它通常以赫兹(Hz)为

    2024年02月09日
    浏览(66)
  • STM32的时钟系统(嵌入式学习)

    时钟是指用于计量和同步时间的装置或系统。时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作,外设部件在时钟的驱动下完成各种工作,例如:串口数据的发送、AD转换、定时器计数等。因此时钟对于计算机系统是至关重要的,通常时钟系

    2024年02月16日
    浏览(47)
  • 嵌入式 STM32 通讯协议--MODBUS

    目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议  二、MODBUS通信协议 1、概述 2、MODBUS帧结构  协议描述 3、MODBUS数据模型   4、MODBUS事务处理的定义 5、MODBUS功能码  6、功能码定义   7、MODBUS数据链路层 8、MODBUS地址规则  9、MODBUS帧描述 10、MODBUS两种

    2024年02月11日
    浏览(62)
  • 嵌入式——新建STM32工程(标准库)

    目录 一、初识标准库 1.CMSIS标准及库层级关系 2.库文件介绍 (1)Libraries文件夹 ①CMSIS文件夹 ②STM32F10x_Std_Periph_Driver文件夹 ③ 在用库建立一个完整的工程时,还需要添加stm32f10x_it.c、 stm32f10x_conf.h 和 system_stm32f10x.c文件 (2)Project文件夹 (3)Utilities文件夹 3.库各文件之间的关

    2024年01月23日
    浏览(53)
  • 嵌入式项目分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包