当前位置:   article > 正文

通信电子、嵌入式类面试题刷题计划04_嵌入式通信协议面试题

嵌入式通信协议面试题

036——看门狗电路的作用是什么?【社招】

防止MCU死机。看门狗的作用就是防止程序发生死循环、程序跑飞。

看门狗是一种监控系统的运行状况的手段,通过软硬件结合的方式实现对系统运行状况的监控。稳定运行的软件会在执行完特定指令后进行喂狗,若在一定周期内看门狗没有收到来自软件的喂狗信号,则认为系统故障,会进入中断处理程序或强制系统复位。

037——你了解CAN总线协议吗?说一说你的理解【社招】

在这里插入图片描述

CAN总线接口是一种标准的通信协议,是让系统中各个器件互相通信的一个通信标准。系统上的设备都可以挂在CAN总线上,然后设置不同的地址,这样就可以互相通信。CAN总线的协议主要特点就是通信速度快,最快好像可以到2M。通信稳定,主要用在汽车电子领域。

目前世界上绝大多数汽车制造厂商都采用CAN总线来实现汽车内部控制系统之间的数据通信。

038——锁存器、触发器、寄存器三者的区别?【校招】

锁存器是用来暂存信号状态的器件,其状态更新与输入输出信号有关,是用电平使能来锁存数据的;

触发器是在时钟的沿进行数据的锁存的,而锁存器是用电平使能来锁存数据的。所以触发器的Q输出端在每一个时钟沿都会被更新,而锁存器只能在使能电平有效器件才会被更新。在FPGA设计中建议如果不是必须那么应该尽量使用触发器而不是锁存器。

寄存器是用来存放数据的一些小型存储区域,如果没有程序指令要求将数据写入寄存器,则不会像寄存器或触发器那样经常随着输入输出变化;其实寄存器的存储电路是就由多个锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。

039——D触发器和D锁存器的区别是什么?【校招】

D触发器是边沿触发,时钟上升沿(↑)时保存数据,一个时钟周期只能触发一次;
而锁存器是电平触发,时钟高电平期间输出随输入变化,时钟下降沿(↓)时保存数据,两者触发方式不同。

040——三极管和MOS管的区别?【校招】

1、一个是电流驱动型(三极管),一个是电压驱动型(MOS);
2、三极管廉价,mos管贵;
3、三极管比照廉价,用起来便当,常用在数字电路开关操控。
MOS管用于高频高速电路,大电流场合,以及对基极或漏极操控电流比照活络的本地。
通常来说低本钱场合,通常运用的先思考用三极管,不可的话思考MOS管。

041——说一下DSP、8086和51的区别?【校招】

从初学者的角度考虑,肯定是先学习51单片机(MCU)和8086微处理器,51单片机偏控制,了解片内存储和I/O引脚的功能后就可用于充当控制器做开发,如控制LED,蜂鸣器,温度传感器等,可以处理一些简单的数据;而8086除了学习微处理器的架构,存储,总线等理论知识,主要是用来学习和熟悉汇编语言(Dos汇编),有了这个基础,也可以去学习用汇编语言控制51MCU,虽然开发效率不高,但是特定场合下汇编也有他的优势,如快速,稳定等;此外,相比于前两种,DSP(数字信号处理器)的存在意义在于算法开发了,因为处理速度远远大于MCU,每秒可处理百万条指令,这样就可以去做图像处理或者音频处理算法等需要快速或实时处理大量浮点运算的硬件功能实现,开发语言通常也是汇编,所以应用场合不同。

042——buck和boost的原理是什么?【校招】

buck电路:降压电路(就是输出电压小于输入电压)
boost电路:升压电路(输出电压大于输入电压)

043——谈谈你对大端存储和小端存储的认识【面试】

大端存储:数据的低位(0x05)存放在内存的高地址(栈底)
在这里插入图片描述
小段地址:数据的低位(0x05)存放在内存的低地址(栈顶)
在这里插入图片描述

044——说说栈的入栈出栈方式,高地址在栈顶还是栈底?

最先压入栈的最后弹出(先进后出):
在这里插入图片描述

045——请解释指针,指针变量,指针的指针三者的关系

指针就是地址,地址是一个数值,由指针变量来保存这个数值;

如果指针变量p保存了变量a的地址,那么称作p指向了a,*p 就是变量a(*p 表示了以 p 的内容为地址的变量)

指针变量就是存放普通变量地址的变量,指针变量也有自己的地址;

指针的指针就是存放指针变量地址的变量。

表达式变量内容/等价的表达式
a12
b&a
*ba , 12
c&b
*cb, &a
**c*b, a, 12
#include <stdio.h>   //声明头文件

int main()
{
    int a = 5;  //普通变量
    int* b = &a;  //定义指针变量b,存放变量a的地址
    int** c = &b;  //定义双指针变量c,存放指针变量b的地址
    printf("a的地址为:0x%X\n", &a);  //打印查看a的地址
    printf("b的内容为:0x%X\n", b);  //打印查看b存放的内容
    printf("&b = 0x%X\n", &b);  //打印查看指针变量b的地址
    printf("*b = %d\n", *b);  
    printf("**c = %d\n", **c);
    *b = 20;  //重新给变量a赋值
    printf("a的值为:%d", a);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

046——指针数组和普通的数组有什么区别?

指针数组,或者说数组指针,即指针类型的数组,首先是一个数组,数组存储的元素是普通数组元素的指针:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/136205
推荐阅读
相关标签
  

闽ICP备14008679号