当前位置: 首页 > news >正文

嵌入式面试题(4)

嵌入式面试题(4)

1. TCP 协议和 UDP 协议的区别?
  • 连接性:TCP 是面向连接的协议(需三次握手建立连接,四次挥手断开);UDP 是无连接协议(直接发送数据,无需建立连接)。
  • 可靠性:TCP 提供可靠传输(通过超时重传、拥塞控制、滑动窗口等机制保证数据不丢失、不重复、按序到达);UDP 无可靠性保障(数据可能丢失、乱序)。
  • 适用场景
    • TCP 适用于对可靠性要求高的场景(文件传输、电子邮件、网页浏览等)。
    • UDP 适用于实时性要求高、可容忍少量数据丢失的场景(音视频流、在线游戏、实时监控等)。
2. Git 代码版本控制管理用过吗?最常用哪些命令?什么时候打 tag,什么时候创建 branch?
  • 常用命令

    • git clone <url>:从远程仓库克隆代码到本地。
    • git add <file>:将工作区修改添加到暂存区。
    • git commit -m "message":将暂存区变更提交到本地仓库。
    • git push:将本地仓库提交推送到远程仓库。
    • git pull:拉取远程仓库最新代码并合并到本地。
    • git branch:查看分支;git checkout -b <branch>:创建并切换到新分支。
    • git merge <branch>:合并指定分支到当前分支。
  • 打 tag 时机:用于标记项目的重要里程碑(如版本发布),便于后续追溯特定版本。
    示例:git tag -a v1.0 -m "Version 1.0 正式发布"

  • 创建 branch 时机

    • 并行开发新功能(如独立开发一个模块时,避免影响主分支稳定性)。
    • 修复特定问题(如创建 hotfix 分支修复生产环境bug)。
      例:硬件从 MPU6050 切换到 ICM-20649 时,可创建专门分支开发适配代码。
3. 如何通过一个按键实现单击、双击、长按功能?

通过定时扫描 + 状态机判断实现,核心逻辑如下:

  1. 定时采样:用定时器(如每 10ms)周期性扫描按键状态,同时进行防抖处理(连续多次采样确认状态稳定)。
  2. 记录时间戳:保存按键按下、释放的时刻,用于计算按压时长和间隔。
  3. 状态机设计
    • IDLE(空闲):等待按键按下。
    • PRESSED(按下):检测到按键按下,开始计时。
    • RELEASED(释放):按键松开,判断按压时间(<500ms 则进入等待双击状态)。
    • WAIT_SECOND(等待双击):若 500ms 内再次按下则判定为双击;超时未按则判定为单击。
    • LONG_PRESS(长按):按下持续时间≥1000ms 时触发。
  4. 回调机制:每种状态判定后触发对应功能(如单击执行A、双击执行B、长按执行C)。
4. ADC 在充电时如何采集电量?ADC 的采集频率如何选择?
  • 充电时电量采集方式

    • 电压采集:通过电阻分压网络将电池电压降至 ADC 量程内,采集后换算为实际电压(反映电池当前电量粗略状态)。
    • 电流采集:串联分流电阻或使用霍尔传感器,将电流转换为电压信号输入 ADC,计算实时充电电流。
    • 电量估算:结合电压、电流,通过库仑积分法(电流×时间)计算充入的总电量,提升估算精度。
    • 注意事项:需添加保护电路(如稳压、限流),避免过压损坏 ADC。
  • 采集频率选择

    • 稳态信号(如电池电压):1~100Hz(信号变化缓慢,高频采样无意义)。
    • 动态信号(如脉冲充电电流):需遵循奈奎斯特准则(采样频率≥2倍信号最高频率),通常≥1kHz。
    • 实际限制:受 ADC 转换速度、MCU 主频及系统负载影响(例:STM32 内部 ADC 采集锂电池电压时,常用 10Hz 采样率)。
5. 举例说明两种同步通信总线和异步通信总线协议。
  • 同步通信总线(依赖共享时钟)

    1. SPI(Serial Peripheral Interface)

      • 信号线:SCK(时钟,主设备提供)、MOSI(主发从收)、MISO(主收从发)、SS/CS(从设备选择)。
      • 特点:全双工、高速、主从结构,支持多从设备(通过 SS/CS 选通)。
      • 应用:SD卡、EEPROM、LCD显示屏。
    2. I2C(Inter-Integrated Circuit)

      • 信号线:SCL(时钟,主设备提供)、SDA(数据,双向)。
      • 特点:半双工、多主多从(通过地址区分设备),仅需两根线,通信速率适中。
      • 应用:传感器、RTC(实时时钟)、EEPROM。
  • 异步通信总线(无共享时钟,依赖波特率同步)

    1. UART(Universal Asynchronous Receiver/Transmitter)

      • 帧结构:起始位(1位)+ 数据位(5~8位)+ 校验位(可选)+ 停止位(1~2位)。
      • 特点:全双工、点对点通信,需约定波特率(如9600、115200)。
      • 应用:调试串口、GPS模块、蓝牙模块(基于RS-232/485)。
    2. USB(Universal Serial Bus)

      • 特点:差分信号传输、主从结构、支持热插拔和供电,基于数据包异步通信。
      • 工作方式:主机通过轮询/中断与设备交互,无需全局时钟。
      • 应用:电脑外设(鼠标、打印机)、U盘、手机数据传输。
6. 线程间如何通信?

线程共享同一进程的地址空间,通信方式主要有:

  1. 共享内存:通过全局变量、共享数据结构直接读写(需配合同步机制)。
  2. 同步工具
    • 互斥锁(mutex):保证同一时间只有一个线程访问共享资源。
    • 信号量(semaphore):控制并发线程数量,实现资源计数。
    • 条件变量(condition variable):线程间通过“等待-通知”机制同步状态。
  3. 消息队列:线程通过发送/接收消息通信(解耦线程,支持异步处理)。
  4. 事件/信号:线程通过触发事件或发送信号通知其他线程(如 POSIX 的 signal)。
7. USB 收发数据的流程是什么?
  1. 物理连接:设备接入主机,主机通过 D+/D- 线检测设备并提供供电(低功耗设备直接取电)。
  2. 设备枚举
    • 主机发送控制请求,读取设备描述符(类型、厂商、端点等信息)。
    • 主机配置设备(如分配地址、选择配置),完成初始化。
  3. 端点建立:主机与设备通过端点(Endpoint)建立通信通道(端点是数据传输的唯一标识)。
  4. 数据传输
    • 主机→设备:通过 OUT 端点发送数据。
    • 设备→主机:通过 IN 端点发送数据。
    • 传输类型:控制传输(配置设备)、批量传输(大容量数据,如U盘)、中断传输(低延迟,如鼠标)、同步传输(实时性,如音频)。
  5. 中断与处理:设备通过中断服务程序(ISR)接收数据,处理后可主动通过 IN 端点返回结果。
8. 独立看门狗(IWDG)和窗口看门狗(WWDG)的区别?
对比项独立看门狗(IWDG)窗口看门狗(WWDG)
时钟源独立低速时钟(LSI),不依赖主时钟系统主时钟(PCLK1),依赖主时钟
喂狗时机任意时刻,只要在超时前喂狗即可仅在“窗口时间”内喂狗(太早/太晚均复位)
应用场景主时钟故障或系统严重失控时复位检测程序运行时序(防止死循环或执行超前)
复位范围整个系统通常仅复位内核(部分外设可能不受影响)
9. SPI 通信有哪几根信号线?各有什么作用?

SPI 通常包含4根核心信号线:

  • SCK(Serial Clock):串行时钟线,由主设备生成,用于同步主从设备的数据传输(上升沿/下降沿采样数据)。
  • MOSI(Master Out Slave In):主发从收线,主设备通过此线向从设备发送数据。
  • MISO(Master In Slave Out):主收从发线,从设备通过此线向主设备返回数据。
  • SS/CS(Slave Select/Chip Select):从设备选择线,主设备通过拉低该线选中对应的从设备(同一总线上可接多个从设备,通过 SS/CS 区分)。
10. 高优先级任务执行时遇到中断,系统如何处理?

处理逻辑取决于中断优先级与系统调度策略:

  1. 中断优先级 > 当前任务优先级

    • 系统立即暂停高优先级任务,保存其上下文(寄存器、程序计数器等)。
    • 进入中断服务程序(ISR)执行中断处理。
    • ISR 执行完毕后,恢复被暂停的高优先级任务,从断点继续执行。
  2. 中断优先级 ≤ 当前任务优先级

    • 中断被暂时屏蔽或挂起(进入等待队列)。
    • 待高优先级任务执行完毕(或主动释放 CPU)后,系统再处理该中断。

注:实时操作系统(RTOS)中,中断优先级通常高于所有任务优先级,以保证紧急事件及时响应。

11. 如何只通过操作寄存器实现一个 UART 驱动?
  1. 初始化引脚:配置 UART 对应的 TX(发送)、RX(接收)引脚为复用功能(通过 GPIO 寄存器设置)。
  2. 配置波特率:根据系统时钟和目标波特率,计算并设置 UART 波特率寄存器(BRR),公式:BRR = 系统时钟频率 / 波特率
  3. 配置帧格式:通过控制寄存器(CR1/CR2)设置数据位(5~8位)、停止位(1/2位)、校验位(无/奇/偶校验)。
  4. 使能 UART 功能:通过控制寄存器使能 UART 模块、发送器(TE)和接收器(RE)。
  5. 发送数据
    • 轮询发送数据寄存器空标志(TXE),确认可发送。
    • 将数据写入发送数据寄存器(TDR),硬件自动发送。
  6. 接收数据
    • 轮询接收数据就绪标志(RXNE),确认有数据。
    • 从接收数据寄存器(RDR)读取数据。
  7. 中断配置(可选):通过中断使能寄存器(CR1)开启发送/接收中断,在中断服务程序中处理数据(替代轮询)。
  8. 错误处理:检测奇偶校验错、帧错误等标志(SR寄存器),必要时复位或重试。

文章转载自:

http://oH8KbQUq.dthyq.cn
http://66NgNYNR.dthyq.cn
http://gRpTFZDO.dthyq.cn
http://Ls86GERP.dthyq.cn
http://JkIqF6th.dthyq.cn
http://MOpmtJ9b.dthyq.cn
http://SSmx6gDO.dthyq.cn
http://yazpxthA.dthyq.cn
http://nLQixFXp.dthyq.cn
http://A6jONpmj.dthyq.cn
http://jMeQb1ps.dthyq.cn
http://rZpjwoo8.dthyq.cn
http://sAs4WtzJ.dthyq.cn
http://tciasJ04.dthyq.cn
http://UroFh9Y7.dthyq.cn
http://MRbaiYEj.dthyq.cn
http://AOsclY8u.dthyq.cn
http://rXixDZX6.dthyq.cn
http://af5O2Vsy.dthyq.cn
http://XYIpgRtk.dthyq.cn
http://pWwW9LEW.dthyq.cn
http://XrVOZQ7J.dthyq.cn
http://kzRKEVPL.dthyq.cn
http://XCIv32HZ.dthyq.cn
http://XcvNINrB.dthyq.cn
http://x6tdDkJs.dthyq.cn
http://4jZUmTSJ.dthyq.cn
http://QN01OXXw.dthyq.cn
http://xisquCue.dthyq.cn
http://shLhufGh.dthyq.cn
http://www.dtcms.com/a/377652.html

相关文章:

  • Python中的getattr/setattr和pybind11中的attr相關函數
  • Qt之Model/View架构
  • 龙虎榜——20250910
  • 嵌入式系统
  • Ngrok vs 飞网:内网穿透工具对比指南
  • 计算机毕设 java 高校家教平台 基于 SSM 框架的高校家教服务平台 Java+MySQL 的家教预约与课程管理系统
  • 招聘智能化浪潮:AI面试工具如何重塑招聘格局?
  • Java EE servlet与MySQL表单 工程实现增加查询数据
  • 上网管理行为-路由模式部署
  • Omni-UI:58同城鸿蒙ArkUI精心打造的UI组件库使用
  • 六自由度Stewart并联机器人simulink建模与模拟仿真
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘sympy’问题
  • 测试之道:从新手到专家实战(四)
  • 基于elementUI实现一个可编辑的表格(简洁版)
  • 智能美妆功能开发指南:直播美颜sdk的架构与算法解析
  • MySQL 浮点数、定点数与位类型:搞懂 3 类特殊数值的核心用法
  • 运动生理实验室解决方案 人体生理实验整体解决方案
  • Ping命令为何选择ICMP而非TCP/UDP?
  • 工业锅炉的“健康卫士”—状态监测与故障诊断
  • 大模型微调技术宝典:Transformer架构,从小白到专家
  • 同步框架与底层消费机制解决方案梳理
  • 计算机毕设 java 高校教材管理系统 基于 Java+SSM 的高校教材管控平台 Java+MySQL 的教材全流程管理系统
  • 用分层架构打造单体应用
  • TCP 拥塞控制设计空间课程要点总结
  • 工业网络融合:DEVICENET转PROFINET网关在汽车总装车间的应用
  • AI当调色总监用,合成图一秒融入,甲方看了都说绝
  • 深入浅出CRC校验:从数学原理到单周期硬件实现 (1) 初始CRC校验
  • 基于esp32c3 rust embassy 的墨水屏程序
  • 实战:用 Python 搭建 MCP 服务 —— 模型上下文协议(Model Context Protocol)应用指南
  • 亚马逊关键词引流:从手动操作到智能优化的全流程攻略