单片机常见经典面试题目总结

1. 单片机IO口开漏输出和推挽输出的区别

  • **开漏输出:**只能输出低电平,要输出高电平需通过上拉电阻实现,类似于三极管的集电极输出。
  • **推挽输出:**可输出低电平和高电平,能够直接驱动功耗较小的数字器件,具有较低的导通损耗和高效率,且提高了电路的负载能力和开关速度。

拓展:STM32的8种GPIO模式

  • 浮空输入:I/O电平不确定,由外部决定。
  • 上拉输入:悬空时电平保持高电平。
  • 下拉输入:悬空时电平保持低电平。
  • 模拟输入:输入模拟信号到片上外设模块。
  • 开漏输出:需要外部上拉或下拉电阻来决定电平。
  • 开漏复用输出:外设模块控制电平。
  • 推挽输出:由P-MOS和N-MOS控制电平。

2. 单片机定时器的作用和优势

  • **作用:**计数、延时、输入捕获、输出比较(如输出PWM)、产生中断等。
  • **优势:**无需CPU参与,精度高。

3. 同步通信和异步通信的区别

  • **同步通信:**发送和接收需要相同的时钟频率,按帧发送数据。
  • **异步通信:**无需保持相同时钟,起始位和结束位用于判断数据到达。

4. 什么是中断?

当CPU正在执行程序时,因外部或内部事件使得CPU暂停当前工作,去执行中断服务程序。执行完毕后,恢复现场并继续执行原程序。

中断过程:

  1. 保护现场,将PC地址压栈。
  2. 执行中断服务程序。
  3. 恢复现场,将PC从栈中取回。
  4. 继续执行被中断的指令。

5. SPI、IIC、UART接口的区别及数据收发方式

  • **SPI(全双工,四线):**速度快,但无流控和应答机制。通过MISO、MOSI、SCLK、CS线进行通信。
  • **IIC(半双工,两线):**简单,支持多主控,速度较慢。通过SDA和SCL线通信。
  • **UART(全双工,两线):**无需时钟,传输距离远,有检错机制。通过RX和TX进行通信。

6. 无线通信技术简介

  • **BLE(蓝牙):**近距离通信,频段为2.4GHz ISM频段,适用于短距离、低功耗场景。
  • **WIFI:**基于802.11b协议,频率为2.4GHz,速度可达11Mbps,覆盖范围约100米。
  • **NFC:**短距离通信,频率为13.56MHz,用于双向识别和连接。
  • **Zigbee:**低速、低功耗无线通信技术,支持复杂拓扑结构,使用2.4GHz频段。

7. MQTT、CoAP、HTTP三种协议的区别

  • **MQTT:**基于TCP协议,常用于物联网消息发布和订阅。
  • **CoAP:**基于UDP协议,适合低资源设备和低功耗网络。
  • **HTTP:**基于TCP协议,主要用于Web通信,传输开销较大。

8. TCP的三次握手和四次挥手过程

  • 三次握手:
    1. 客户端发送SYN请求,服务器返回SYN+ACK。
    2. 客户端发送确认包,建立连接。
  • 四次挥手:
    1. 客户端发送FIN请求,服务器ACK。
    2. 服务器处理完后发送FIN,客户端ACK,连接断开。

9. C语言:找到数组中最小值

int get_min(int* array, int n) {
    int min = array[0];
    for (int i = 1; i < n; i++) {
        if (array[i] < min) {
            min = array[i];
        }
    }
    return min;
}

10. 摩拜单车生产的多线程机制

工序A每5分钟生产一辆单车,工序B每1分钟检测一辆,检测失败需返回工序A重新生产。多线程机制可使用生产者-消费者模型最大化产能。

11. 关于指针的定义

  • 指向指针的指针,指向一个整型数: int **a;
  • 有10个指向整型数的指针数组: int *a[10];
  • 指向有10个整型数数组的指针: int (*a)[10];
#嵌入式#

嵌入式就业指南 零基础开始-备战-&gt;题目-&gt;技巧

全部评论

相关推荐

2 1 评论
分享
牛客网
牛客企业服务