根据面经准备面试第六期-2026嵌入式软开-cvte

作者:zzck链接:https://www.nowcoder.com/feed/main/detail/47a8cb3cd267449ca888d575a0ad44bd?sourceSSR=search1.自我介绍

2.#include<>和#include“”区别

3.#define 和const有何区别,各自优势

4.指针,用过二级指针吗

5.常见协议,UART iic spi can讲解和相互的优点

6.单片机gpio模式几种,介绍一种模式

7.单片机开漏输出用过吗,用在哪里,介绍一下

8.介绍项目

9.sizeof和strlen介绍

10.讲一下函数调用过程

2.#include<>和#include“”区别

  • #include<>:用于包含系统头文件,编译器在标准系统路径(如/usr/include)中查找文件。
  • #include"":用于包含用户自定义头文件,编译器首先在当前目录(或编译时指定的包含路径)中查找,如果找不到,再按系统路径查找。

3.#define 和const有何区别,各自优势

#define预处理指令、进行简单文本替换、不占内存

优势:可用于定义常量、宏函数、条件编译、灵活性高

缺点、不进行类型检查、可能产生副作用

const:修饰变量,表示只读,占内存(存储在,只读段),有类型检查

优势:类型安全,可调试,避免宏的可能错误

缺点,可能用于条件编译,不能定义宏函数

适合定义有类型的常量,能避免类型不匹配错误,可用于数组长度定义

4.指针,用过二级指针吗

一级指针,指向变量的地址,指针是存储变量地址的变量,通过可间接访问或修改变量的值,是c语言的特性(如动态内存分配、函数传地址修改参数

二级指针,指向指针的地址,常用于动态二维数组,函数中修改指针的值等,即存储指针变量的地址

int a = 10; int *p = &a; // 一级指针:p存储a的地址 int **pp = &p; // 二级指针:pp存储p的地址

5.常见协议,UART iic spi can讲解和相互的优点

uart、2线,tx、rx、异步通信、无时钟线、靠波特率同步、硬件简单、成本低,如串口调试

iic、2线、sda数据线、scl时钟线、同步通信、主设备提供时钟、支持多主多从、传感器、eeprom

spi、4线、mosi、miso、sclk、cs同步通信、主设备控制时钟和片选、cs1、cs2、高速全双工、抗干扰强、适合短距离高速传输、显示屏、flash、adc

can(2线,差分信号)多主通信(总线仲裁机制、抗干扰极强

6.单片机gpio模式几种,介绍一种模式

GPIO(通用输入输出)是单片机与外部设备交互的引脚,常见模式(以 STM32 为例)包括:

  • 输入模式:浮空输入、上拉输入、下拉输入、模拟输入;
  • 输出模式:推挽输出、开漏输出;
  • 复用功能模式:将 GPIO 复用为外设功能(如 UART 的 TX/RX、SPI 的 MOSI)。

举例:推挽输出

  • 原理:输出级由两个 MOS 管组成(P 沟道和 N 沟道),当输出高电平时,P 沟道导通、N 沟道关闭,直接输出高电平(通常等于电源电压);输出低电平时则相反。
  • 特点:能直接驱动外部设备(如 LED、继电器),输出电流较大(一般可达几 mA 到几十 mA),且高低电平驱动能力对称。
  • 应用:常用于需要强驱动能力的场景,如控制 LED 亮灭、驱动小型电机。

7.单片机开漏输出用过吗,用在哪里,介绍一下

开漏输出是gpio模式的一种,需外部上拉电阻才能输出高电平

8.介绍项目

9.sizeof和strlen介绍

sizeof运算符、计算变量/类型占用的内存字节数、可接收变量、类型,包括数组、结构体

strlen运算符、计算'\0'之前的字符个数,仅接受以'\0'之前的字符个数,char,仅仅c风格字符串,abc的strlen为3

10.讲一下函数调用过程

函数调用是程序执行流程跳转的过程、底层通过栈实现,

参数压栈,将函数实参从右到左依次压入栈中

返回地址压栈,将当前代码执行的下一条指令地址压栈,供函数执行完返回

栈帧切换,保存当前栈基地址到栈中

将栈顶指针的值赋给ebp,建立新的栈帧(函数的局部变量将在新栈帧中分配)

执行函数体:为局部变量分配栈空间,执行函数内代码

函数返回,释放局部变量空间

从栈中恢复调用的ebp,恢复原栈帧

弹出返回地址、跳转到该地址执行源程序

#秋招#
全部评论

相关推荐

评论
1
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务