单片机常见经典面试题目总结
1. 单片机IO口开漏输出和推挽输出的区别
- **开漏输出:**只能输出低电平,要输出高电平需通过上拉电阻实现,类似于三极管的集电极输出。
- **推挽输出:**可输出低电平和高电平,能够直接驱动功耗较小的数字器件,具有较低的导通损耗和高效率,且提高了电路的负载能力和开关速度。
拓展:STM32的8种GPIO模式
- 浮空输入:I/O电平不确定,由外部决定。
- 上拉输入:悬空时电平保持高电平。
- 下拉输入:悬空时电平保持低电平。
- 模拟输入:输入模拟信号到片上外设模块。
- 开漏输出:需要外部上拉或下拉电阻来决定电平。
- 开漏复用输出:外设模块控制电平。
- 推挽输出:由P-MOS和N-MOS控制电平。
2. 单片机定时器的作用和优势
- **作用:**计数、延时、输入捕获、输出比较(如输出PWM)、产生中断等。
- **优势:**无需CPU参与,精度高。
3. 同步通信和异步通信的区别
- **同步通信:**发送和接收需要相同的时钟频率,按帧发送数据。
- **异步通信:**无需保持相同时钟,起始位和结束位用于判断数据到达。
4. 什么是中断?
当CPU正在执行程序时,因外部或内部事件使得CPU暂停当前工作,去执行中断服务程序。执行完毕后,恢复现场并继续执行原程序。
中断过程:
- 保护现场,将PC地址压栈。
- 执行中断服务程序。
- 恢复现场,将PC从栈中取回。
- 继续执行被中断的指令。
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的三次握手和四次挥手过程
- 三次握手:
- 客户端发送SYN请求,服务器返回SYN+ACK。
- 客户端发送确认包,建立连接。
- 四次挥手:
- 客户端发送FIN请求,服务器ACK。
- 服务器处理完后发送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];
嵌入式就业-备战>题目>技巧 文章被收录于专栏
嵌入式就业指南 零基础开始-备战->题目->技巧