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

001 嵌入式软件开发工程师实习篇面试——首战总结

2025年5月17日人生中第一次面试

紧张是藏不住的。但是不应该的。

目录

0.准备一份合适的自我介绍

1.结构体内存对齐问题

2.变量在内存中的存储模式

3.嵌入式中程序框架有哪些

4.程序代码设计要遵循什原则

 5.版本号书写

6.单片机最小系统板有哪些组成

必须:

非必须:

7.复位方式有哪些

硬件复位

软件复位

其他复位类型

8.hex文件和bin文件有什么区别

9.如何导出bin文件,如何在bin文件中添加第三方的校验或者序列号

导出bin文件

添加校验

序列号管理

10.嵌入式中阶梯形状的波形可以用哪些实现

11.12位ADC中测到的数值为n对应的电压是多少

12.采样电阻作用是什么

1. 电流与电压测量

2. 系统保护与安全控制——监控电压电流

3. 功率计算与能效分析

13.一个GPIO如何控制一个多个按键

二极管扩展法

大概就是电阻配合二极管配合电路网络生成不同逻辑电平(数字输入)或者电压(ADC)

电阻分压法(ADC方案)

充放电时间检测法(GPIO+RC方案)

14.按键LED有哪些模式

15.PA0和PB0引脚能不能一起作为外部中断信号输入

16.STM32中起始地址是多少,每次读取写入数据的长度大小是多少,他的擦除方式有哪些

Flash起始地址——0x0800 0000        结束地址取决于芯片型号

读写数据长度

擦除方式

17.如何获取芯片序列号

18.如何降低单片机功耗

低功耗模式

降低频率

关闭未使用的外设

减少CPU的计算负载

使用DMA

19.如何快速PID调参

20.一个完整的产品设计开发需要导出哪些设计文件

一、需求分析阶段

二、硬件设计阶段

三、软件开发阶段

四、测试验证阶段

五、生产制造阶段

六、认证与合规

七、产品交付文件

八、维护与迭代

21.如何快速掌握单片机应用

0.准备一份合适的自我介绍

1.结构体内存对齐问题

数据地址是数据类型大小的整数倍,则触发单周期访问。未对齐访问会触发总线错误(HardFault)或产生多次内存操作。

2.变量在内存中的存储模式

小端序

3.嵌入式中程序框架有哪些

框架类型资源占用实时性开发复杂度适用场景
顺序执行的前后台系统简单简单MCU控制
时间片轮询系统一般中等中等复杂度任务轮询
RTOS复杂高实时性、多任务系统
Linux嵌入式架构一般复杂复杂功能设备(如网关、服务器)
硬件抽象层框架一般中等跨平台开发、快速原型

状态机

4.程序代码设计要遵循什原则

1、简单、明了、清晰:

2、精简

3、保持第三方代码风格

4、减少封装

5.注释信息:文件信息注释(文件开头)、函数的注释、代码注释

作用域标识

  • 全局变量:以 g_ 前缀标识(如 g_system_state),避免滥用全局变量。
  • 静态变量:以 s_ 前缀标识(如 s_counter),提升模块封装性。
  • 结构体变量:以 st_ 前缀标识(如 st_date),区分普通变量。
  • 指针:以 p_ 前缀标识(如 p_data),明确指针类型
场景规范命名不规范命名说明
全局变量、文件名g_sensor_valuevalue明确作用域和用途。
结构体成员st_time.yearyear区分结构体内外变量。
局部变量sensor_value(小写,无须作用域)value明确数据来源和类型。
函数App_InitMotor(首字母大写)InitMotor明确模块归属
函数指针p_callback_funcfunc明确指针类型。
常量宏定义MAX_BUFFER_SIZEmaxsize全大写+下划线,区分变量与常量。

 5.版本号书写

参考金典的:V1.2.3.20240518_rc(主版本1,次版本2,修订3,2024年5月18日构建,候选版本)

HAL_LABL_V2.1.1.20250518_rc

6.单片机最小系统板有哪些组成

必须:

主芯片(单片机核心)

电源电路

时钟电路(晶振)

复位电路

需启动电路

程序下载电路

非必须:

指示与扩展电路

7.复位方式有哪些

硬件复位
  • 外部复位:通过外部信号触发,低电平复位信号。通常连接到单片机的复位引脚(如NRST)
  • 电源复位:当系统上电或电源不稳定时,由电源管理电路自动触发的复位
  • 看门狗复位:看门狗定时器未在规定时间内被刷新,系统认为程序运行异常,自动触发复位
软件复位
  • 指令复位:通过执行特定的非法指令或访问非法地址,强制触发硬件复位
  • 寄存器复位:通过向特定的控制寄存器写入复位命令,实现软件控制的复位
其他复位类型
  • 上电复位(POR):系统首次上电时触发的复位,确保系统从已知的初始状态开始运行
  • 系统复位:影响整个系统,包括CPU、外设和内存等,恢复到默认状态
  • 模块复位:仅对特定模块或外设进行复位,不影响其他部分
  • 备份域复位:针对备份区域(如RTC和备份寄存器)的复位,通常用于低功耗模式
  • 低功耗复位:在系统进入低功耗状态时触发的复位,确保系统正确退出低功耗模式

8.hex文件和bin文件有什么区别

  • HEX文件:适合需要地址信息和校验的复杂场景,如ISP烧录和调试。
  • BIN文件:适合简单烧录或地址固定的系统,文件更紧凑且烧录效率更高
属性HEX文件BIN文件
格式ASCII文本(带元数据)纯二进制数据
地址信息包含起始地址,支持分段映射无地址信息,需手动指定起始地址
校验机制每行校验和确保数据完整性无校验,需额外处理数据完整性
文件大小较大(含元数据)较小(仅数据)
可读性可读(适合调试)不可读(需工具解析)
典型用途复杂场景(多段地址映射、ISP烧录)简单任务(Bootloader升级、固定地址)

9.如何导出bin文件,如何在bin文件中添加第三方的校验或者序列号

导出bin文件

1.调用工具链,Keil mdk中添加生成语句:fromelf --bin --output=@L.bin !L

2.GCC工具链生成:arm-none-eabi-objcopy -O binary -S ${ProjName}.elf ${ProjName}.bin

添加校验

方案1:CRC尾部校验(校验

http://www.xdnf.cn/news/7140.html

相关文章:

  • 使用 Auto-Keras 进行自动化机器学习
  • ElasticSearch-集群
  • 基于JAVA springboot+mybatis 电商书城平台系统设计和实现
  • day29 python深入探索类装饰器
  • FreeRTOS “探究任务调度机制魅力”
  • 数据清洗-案例
  • 浅谈迷宫类问题中的BFS和DFS
  • 【算法剖析】产值调整:从迭代到收敛,洞悉数字变化的本质
  • 【MySQL】(12) 事务
  • Java大师成长计划之第26天:Spring生态与微服务架构之消息驱动的微服务
  • 基于YOLOv8-OBB的旋转目标检测:从数据制作到自动标注完整指南
  • RAG检索增强生成(持续更新ing...)
  • vLLM - 控制生成过程中返回对数概率信息 logprobs的输出和解释
  • 计算机软件的基本组成
  • 本地无损放大软件-realesrgan-gui
  • AI 制作游戏美术素材流程分享(程序员方向粗糙版)
  • 计算机网络 - 2.基础协议
  • 日志参数含义
  • 等 级 保 护
  • 一文掌握工业相机选型计算
  • Spring Cloud Alibaba Nacos安装+服务注册中心+服务配置中心
  • SOC-ESP32S3部分:0、什么是ESP32
  • 创建型:原型模式
  • 【每天一个知识点】湖仓一体(Data Lakehouse)
  • Vibe Coding:编程中的氛围与效率的艺术
  • 【数据结构】堆
  • BUUCTF——ReadlezPHP
  • KnowCard:我的知识卡片生成器是怎么炼成的?
  • 高能数造闪耀 CIBF 2025,以创新技术引领新能源智造新征程
  • Android 自定义悬浮拖动吸附按钮