嵌入式面试经典30问与非标准答案

2023-05-16

原问题见

https://blog.csdn.net/xydlxd118/article/details/105707499

1. 讲一下stm32的时钟系统

时钟在MCU中的作用,就好比于人类的心脏一样不可或缺。STM32有多个时钟源可以使用。因为STM32拥有丰富的外设资源,不同外设使用的时钟也会不一样,同时我们要知道时钟越快,功耗就越大,抗电磁干扰的能力就会减弱,因此,比较复杂的MCU 都会采用多时钟来解决这些问题。

STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。
①、HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。

②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。

③、LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。

④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。作为RTC时钟;

⑤、PLL为锁相环倍频输出。提供2-16倍的倍频输出。

2. C语言中堆和栈的区别;推挽输出是什么?

C语言中堆和栈的区别:
  1. 申请方式
  • 栈(satck):由系统自动分配。
  • 堆(heap):需程序员自己申请和释放。
    // 待补充
32单片机IO口8种状态的理解

1、浮空输入,据我的理解,就是不接上拉,也不接下拉,外部电路是什么状态,就是什么状态,具有不确定性。
2、上拉输入,就是配置好IO口后,默认与VDD相连的开关闭合,读状态默认高电平,外部有低电平才拉低。
3、下拉输入,与上拉输入一个意思。
4、模拟输入,这个我没用到,也不太理解,套用一下前辈的话:模拟输入是指传统方式的输入,数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。

5、开漏输出:据我的理解就是要加上拉电阻,才能拿到低电平,(nmos管为0时,才接通),外部的上拉电阻的高电平拉到了Gnd,默认输出高电平。
6、推挽输出:配置后,输出1,PMOS管接通,外输出高点平,输出0,NMOS管接通,外输出低电平,输出1.
7、推挽复用输出
8、开漏复用输出
复用功能就是外设的配置。

引用CSDN博主「持续学习中」的原创文章:关于32单片机IO口8种状态的理解

3. 假如一个单片机上电之后不运行?这是为什么?

1、检查供电:直接用万用表测量VCC和GND的电平,是否符合要求。如果VCC偏离5V或3.3V过多,检查7805或其他稳压、滤波电路的输出。

2、检查晶振:一般是多换几个晶振上电试试。

3、检查RESET引脚电平逻辑,注意所用机型是高电平复位还是低电平复位的,防止MCU一直处于反复被复位状态。

4、如果设计时,程序是从扩展的外部ROM开始运行的,还需检查EA脚。

5、检查MCU是否损坏或flash无法下载,最好换块新的芯片试试。

6、如果测试程序运行正常。那就基本确定是控制程序的问题了。

个人经验:首先检查MCU供电是否正常,再判断擦除和烧录是否正常,再判断控制程序是否正常,一般情况下3、4不会出现,对于STM32来说可以换内部晶振来排除2。

4. 举你用过的单片机的型号和它的一些主要参数

STM32F103VCT6

内核
-ARM 32位 Cortex - M 3处理器
-高达72 MHz
内存
-256 KB 的 Flash
-48 KB 的 SRAM
3个12位AD,外部通道16个,内部通道2个
7个通道DMA
8个定时器
12个通信接口
-2个 I 2 C 接口
-5 个 UART
-3 个 SPI
-1 个 USB
-1 个 CAN
内置 CRC 计算单元,和96位唯一的 ID 号
具体请参考数据手册。

5. 一个温度传感器模块,按照正确的使用方式和参数指标,对人体皮肤测量之后,得到的温度一直都是35摄氏度,这是为什么?

猜一个:因为该温度传感模块测出的温度为表面温度,而实际上表面温度和实际体温是有差距的。

6.考一些结构体、联合体、sizeof方面的知识

结构体参考:https://blog.csdn.net/abc_xixi111/article/details/80262753 , https://blog.csdn.net/qq_27597629/article/details/112311702
联合体参考:https://www.cnblogs.com/luoxuw/p/11337923.html

10.485有几根线

RS485总线通信的一般是两根线,多出的一根是公共线,也就是地线G【长距离电缆中的屏蔽层】抑制干扰用的必需接!总共要接三根,一般测试时可以不用接。

11.串口和并口有什么区别

并行接口是指数据的各位同时进行传送,其特点是传输速度快,但当传输距离较远、位数又多时,导致了通信线路复杂且成本提高;

串行接口是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢;

14.局部变量和全局变量分别存放在哪里?

C语言中局部变量存在栈里,全局变量存静态存储区。

15.c语言头文件的工作原理

引用头文件相当于复制头文件的内容,但是我们不会直接在源文件中复制头文件的内容,因为这么做很容易出错,特别在程序是由多个源文件组成的时候。

16.精度和分辨率有什么区别

1、精度是接近真实值的程度, 即绝对误差或相对误差的大小.精度做到0.01%极其难
2、分辩率是量化刻度的细度大小。
分辩率高是精度高的必要条件,不是充分条件;分辩率高不等于精度高. 认定精度才是王道。

写不动了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式面试经典30问与非标准答案 的相关文章

  • 机器学习题目汇总

    1 深度学习中的激活函数需要具有哪些属性 xff1f 计算简单非线性具有饱和区几乎处处可微 ABD 解析 xff1a xff08 1 xff09 非线性 xff1a 导数不能是常数 xff08 2 xff09 几乎处处可微 xff1a si
  • 天猫精灵云云对接

    天猫精灵云云对接 一 技能开发二 产品开发 接入过程出现了一些问题 xff0c 特此记录 xff0c 用来给朋友们参考 xff0c 随意记录 xff0c 不接受批评 前情提要 xff1a 注册并认证 天猫精灵开放平台 AliGenie 一
  • 关于Altium Designe中元器件添加PDF的简述

    一 缘由 xff1a 今天无意之间在书本上看到关于元器件的Datasheet添加 xff0c 也想起自己曾经为了查询元器件datasheet xff0c 费了不少时间 xff0c 所以写下了此篇博文 二 关于添加步骤 xff1a 1 打开自
  • opencv面试知识点

    文章目录 一 opencv基础1 OpenCV中cv Mat的深拷贝和浅拷贝问题2 opencv常用数据结构和函数2 1 QImage和Mat之间的转换 3 颜色空间 RGB HSV4 基本图形的绘制 二 opencv xff08 core
  • VSCode 整理格式快捷键

    Shift 43 Alt 43 f
  • 【情人节特辑】相机也成双——直观理解对极几何中的四个重要矩阵(外参矩阵、内参矩阵、基本矩阵、本质矩阵)

    祁子禹 引言 在奔逸不羁的童年 xff0c 笔者对理科知识的好奇无际无边 某天曾在外婆家的煤棚子里一通乱翻 xff0c 缴获了大舅学生时代的几何光学课本 xff0c 不料遭遇开幕雷击 xff1a 人的眼球好比照相机 xff0c 我们要为革命
  • 【2022小米秋招(2023校招)】软件开发方向 笔试题1——链表反转

    题目 xff1a 给你单链表的头指针 head 和两个整数 left 和 right xff0c 其中 left lt 61 right 请你反转从位置 left 到位置 right 的链表节点 xff0c 返回反转后的链表 输入描述 xf
  • 使用stm32裸机或者rtt系统遇到的坑

    目录 一 rt thread使用 16 LSE晶振初始化会出现一定的失败几率 15 串口队列溢出的问题 14 升级失败问题 13 rt thread PWM1 CH1 CH1N 无法同时使用问题 12 使用换用c8芯片不能进入main函数
  • k8s网络通信原理

    https blog csdn net qq 41688840 article details 108708415 要了解和分析Pod中的container容器网络 xff0c 那么首先肯定是要了解docker容器网络的几种模式以及常见用法
  • 修改mavros中话题的发布频率

    修改mavros中话题的发布频率 参考链接及命令分析 参考了以下文章的提高mavros中提高IMU话题频率的方法 xff0c 再通过其介绍推出其他话题的频率修改方法 提高mavros中IMU话题的发布频率 修改命令的含义分析 作者提到了以下
  • Docker入门到实践 (五) docker数据的备份、恢复与迁移

    文章目录 一 前言二 docker数据的备份 恢复与迁移方式一 xff1a docker容器的备份 恢复与迁移1 docker容器的备份 导出 2 docker容器的迁移与恢复 导入 方式二 xff1a docker镜像的备份 恢复与迁移1
  • Telnet协议和SSH协议

    1 Telnet协议定义 远程登陆协议 xff0c 用于对设备进行远程管理 xff0c 基于明文 目前不建议使用 xff0c 建议采用SSH协议 xff0c 采用TCP 23号端口 2 原理 xff1a Telnet12 0 1 28 te
  • js中数组和set的相互转化

    1 array gt set xff08 数组转set xff09 例子 xff1a span class token keyword let span array span class token operator 61 span spa
  • 驼峰命名规则

    驼峰规则 1 小驼峰式命名法 xff08 lower camel case xff09 xff1a 第一个单字以小写字母开始 xff0c 第二个单字的首字母大写 例如 xff1a firstName lastName 2 大驼峰式命名法 x
  • 机器人巡线算法优化方案

    引言 大赛机器人的运行环境是大赛的场地 比赛时场地的情况将非常复杂 因此 机器人必须知道自己当前的位置才能决定要执行怎样的动作 定位是大赛机器人各种性能发挥的基础 也是机器人全场路径自动规划的基础 目前 比较先进的机器人定位方法为陀螺导航
  • 如何在评论中以超链接的方式放置链接

    如何在评论中以超链接的方式放置链接 格式 xff1a url 61 链接 显示的内容 url 例子1 xff1a url 61 http blog csdn net qq 39189509 article details 73716422
  • STM32唯一ID(Unique Device ID)的读取方法

    每一个STM32微控制器都自带一个96位的唯一ID xff0c 也就是Unique Device ID或称为UID xff0c 这个唯一ID在任何情况下都是唯一的且不允许修改 在开发过程中 xff0c 可能需要用到这个UID xff0c 比
  • 设计算法以判断集合A是否是集合B的子集

    一 题目 xff1a 假设递增有序的带头结点的链表A B分别表示一个集合 xff0c 试设计算法以判断集合A是否是集合B的子集 xff0c 如是返回1 xff0c 否则返回0 二 思路 xff1a 1 A的值大于B的值 xff0c 那就A的
  • 将两个递增有序的带头结点的单链表A、B合并成为一个递增有序的带头结点的单链表

    一 题目 将两个递增有序的带头结点的单链表A B合并成为一个递增有序的带头结点的单链表 二 思路 将单链表A B遍历 xff0c 比较两个链表中元素的值 xff0c 分为下列情况 xff1a A lt B 则A的指针向后移一位 xff0c
  • 将链表L就地逆置,即利用原表各结点的空间实现逆置

    一 题目 将链表L就地逆置 xff0c 即利用原表各结点的空间实现逆置 二 思路 在链表的第二个元素开始执行逆置 xff0c 因为如果链表只有一个元素 xff0c 那么逆置就没有意义了 步骤 xff1a 假设原链表如下 xff1a 将结点1

随机推荐

  • Android| failed to connect to /10.0.2.2 (port 80) after 10000ms

    关于使用android模拟器访问本地服务器失败 第一种 xff1a 使用Google自带的模拟器 用http 127 0 1 1访问失败 描述 xff1a 明明在浏览器中使用http 127 0 1 1可以访问Apache本地服务器 xff
  • you-get【视频下载】

    如何安装you get 在目录C Users jia AppData Local Programs Python Python36 Scripts中shift 43 右键 xff0c 唤出命令行窗口 xff08 如果配置好了环境变量 xff
  • python中调用adb命令来控制手机

    前言 如今python是非常多人学习的 xff0c 而手机也几乎人手一部 对于很多Python学习者 xff0c 想用python来完成android手机中各种炫酷的的控制 xff0c adb是必不可缺少的工具之一 比如17年末大热的微信
  • 中断和中断Handlers

    任意一个操作系统的核心responsibility都是管理连接到机器上面的硬件 包括硬盘 键盘 鼠标 3D处理器等 为了满足这项responsibility xff0c 内核需要和机器本身通信 xff0c 假如说处理器在维度上比他访问的硬件
  • 从github下载项目(clone)

    1 首先去官网下载git xff0c 安装 xff08 基本都是默认 xff09 2 本地创建文件夹用来存放下载的项目 3 在第二个文件夹下打开 git bash here 4 复制地址 5 在bash下面输入 git clone 43 地
  • 结构体中有指针成员的逐层malloc 与 free

    1 malloc的时候注意 xff0c 如果结构体有结构体指针成员 xff0c malloc的时候需要逐层都进行malloc 先malloc最外面的event nodeP xff0c 才能访问到event nodeP gt dataP 和
  • 摄像头云台的设计,组装与使用方法

    摄像头云台的设计 xff0c 组装与使用方法 简介三维模型的设计实物组装接线配置环境编写程序实物效果 简介 本篇是摄像头云台的设计与使用方法 xff0c 用树莓派进行控制 xff0c 具体应用于我自制的多功能小车上边 xff0c 目前整个小
  • map文件查看

    map文件里面内容大致分为五大类 xff08 按照map文件分类的顺序 xff09 xff1a 1 Section Cross References xff1a 模块 段 入口 交叉引用 xff1b 2 Removing Unused in
  • AuthenticationProvider AuthenticationManager

    1 AuthenticationManager AuthenticationProvider UserDetailsService 2 多重认证 3 实现
  • docker之dockerFile

    在Dockerfile中用到的命令有 FROM FROM指定一个基础镜像 xff0c 一般情况下一个可用的 Dockerfile一定是 FROM 为第一个指令 至于image则可以是任何合理存在的image镜像 FROM 一定是首个非注释指
  • ubuntu如何安装最新版的npm

    使用 apt安装的npm总是因为版本过低报错 xff0c span class token function npm span ERR span class token operator span Linux 4 15 0 136 gene
  • C语言之__attribute__

    公众号 xff1a 嵌入式不难 attribute 声明函数属性 可以使用 attribute 来声明函数的属性 xff0c 这些属性可以帮助编译器优化调用或更仔细地检查代码的正确性 例如 xff0c 属性 noreturn 用来指定函数从
  • 树莓派3B 2.0 通用联网篇

    文章目录 前言一 开篇说明二 使用步骤用无线免驱网卡 xff08 推荐 xff09 用下载器来控制ssh终端手机USB共享网络ENC28J60共享网络查询IP 针对于用手机usb共享的方法 使用SSH开启VNC 总结 前言 继上篇文章更新一
  • 关于因子图在SLAM中的应用基础理论总结

    参考文章 xff1a 1 张兴学 基于因子图的多传感器信息融合导航算法研究 D 哈尔滨工业大学 2018 2 SLAM 中的位姿图优化 xff0c BA优化 xff0c 因子图优化 xff0c 非线性优化之间的区别 3 因子图的理论基础 4
  • 如何理解卡尔曼滤波(Kalman Filter)实现数据融合

    本篇博客主要是记录自己 KF 的学习过程 xff0c 其中遇到的疑惑 xff0c 和自己的理解 如有错误欢迎指正交流 xff5e 参考相关资料 基础理论介绍 xff1a 扩展卡尔曼滤波EKF用于多源传感器融合 详解卡尔曼滤波原理 我所理解的
  • ROS机器人入门课程之Cmake工程的创建与使用

    因为要做一次关于ROS的分享 xff0c 于是撰写了一下分享内容 ROS是一个机器人平台 xff0c 在ROS中包含了各种各样的功能算法 xff0c 各个功能算法之间通过消息进行传递数据 在ROS中编写一个C 43 43 工程 编写一个he
  • 编译工程需要Opencv3 与 ROS自带Opencv4冲突解决办法

    在CmakeLists中 屏蔽ROS自带的Opencv库 file span class token punctuation span GLOB RECURSE OLD OPENCV span class token string 34 u
  • ARM仿真器

    RAM V11串口配置 1 Jlink的驱动版本最好是V5 12以上 xff0c 或者是V5 12 2 打开安装Jlink的文件目录SEGGER xff0c 在目录中找到J Link Commander程序 3 首先在命令窗口中执行si 0
  • ROS移植KCF代码

    ROS 移植KCF代码 首先说明一下 xff0c melodic版本支持python2 7 因此python版本的kcf没有尝试过 xff0c 3 6版本的python可以直接调用 安装过opencv contrib3 4 1的c 43 4
  • 嵌入式面试经典30问与非标准答案

    原问题见 https blog csdn net xydlxd118 article details 105707499 1 讲一下stm32的时钟系统 时钟在MCU中的作用 xff0c 就好比于人类的心脏一样不可或缺 STM32有多个时钟