校园招聘攻略----嵌入式软件工程师基础问题(一)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
问题1
面试官
STM32 中断是如何进入到中断服务程序的
学生
在STM32中为了区分不同的中断每个设备有自己的中断号
。系统有0-255一共256个中断。系统有一张中断向量表
用于存放256个中断的中断服务程序入口地址。每个入口地址对应一段代码即中断服务程序
问题2
面试官
简述均值滤波和滑动滤波
学生
- 均值滤波优点算法简单对周期性干扰有良好的抑制作用平滑度高适用于
高频振动的系统
缺点对异常信号的抑制作用差无法消除脉冲干扰的影响 - 滑动均值滤波把连续取N个采样值看成一个队列队列的长度固定为N每次采样到一个新数据放入队尾并扔掉原来队首的一次数据(先进先出原则)。把队列中的N个数据进行算术平均运算就可获得新的滤波结果
问题3
面试官
简述STM32 中断
学生
- STM32中断CPU在处理某一事件A时发生了另一事件B请求CPU迅速去处理(中断发生)CPU暂时中断当前的工作转去处理事件B(中断响应和中断服务)待CPU将事件B处理完毕后再回到原来事件A被中断的地方继续处理事件A(中断返回)这一过程称为中断
STM32中断的顺序
1初始化 IO 口2开启 AFIO 时钟3EXTI配置4NVIC配置5编写中断服务函数
问题4
面试官
简述STM32 看门狗
学生
- 对单片机运行状态进行实时监测的考虑便产生了一种专门用于
监测单片机程序运行状态的模块或者芯片
俗称“看门狗”(watchdog) - STM32 有两个看门狗
独立看门狗和窗口看门狗
其实两者的功能是类似的只是喂狗的限制时间不同。独立看门狗是由专门的低速总线进行驱动即LSI总线(时钟频率40KHz)窗口看门狗是用APB1总线驱动的时钟频率最36MHz。独立看门狗适合应用于需要看门狗作为一个在主程序之外 能够完全独立工作并且对时间精度要求低的场合 - 在独立看门狗中我们可以从计数器的值一直减到0的中间的任何时刻都可以进行喂狗但是在窗口看门狗中我们规定只能在某一个时间段内进行喂狗。
窗口看门狗的安全性比独立看门狗要高一些
毕竟它喂狗的时间段缩短了这样就会降低由于程序跑飞而误打误撞的去执行喂狗操作的几率了
问题5
面试官
UART帧格式停止位如何配置波特率是什么
学生
- 波特率每秒传输的位数(bit)。一般选波特率都会有960019200115200等选项。其实意思就是
每秒传输这么多个比特位数(bit)
- 起始位先发出一个逻辑 0 的信号表示传输数据的开始
- 数据位可以选择的值有5678这四个值可以传输这么多个值为 0 或者 1 的bit位。
这个参数最好为8
因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单一个ASCII字符值为8位如果一帧的数据位为7那么还有一位就是不确定的值这样就会出错 - 校验位数据位加上这一位后使得 1 的位数应为偶数(偶校验)或奇数(奇校验)以此来
校验数据传送的正确性
- 停止位它是一帧数据的结束标志可以是1bit、1.5bit、2bit的空闲电平
- 空闲位没有数据传输时线路上的电平状态为逻辑 1
- 传输方向即
数据是从高位(MSB)开始传输还是从低位(LSB)开始传输
- UART传输数据的顺序就是刚开始传输一个起始位接着传输数据位接着传输校验位(可不需要此位)最后传输停止位。这样一帧的数据就传输完了
- 帧间隔即传送数据的帧与帧之间的间隔大小可以以位为计量也可以用时间
问题6
面试官
UART如何判断一帧数据结束
学生
- 1、
空闲中断
。在总线上接收到数据后一个字节的时间内没有再接收到数据空闲标志位置位便认为一帧接收完毕。如STM32的空闲中断 - 2、
延时等待
。设定一个超时时间在总线上接收到数据后设定时间内没有再接收到数据认为一帧接收完毕。如看门狗 - 3、
通信协议
。最常见的通信协议就是判断字符串末尾的回车符\r、换行符\n等或者特定的帧尾。也可加入帧头、数据长度、数据校验等构成较为复杂点的通信协议
问题7
面试官
空闲中断是什么
学生
空闲的定义是总线上在一个字节的时间内没有再接收到数据。空闲中断是检测到有数据被接收后总线上在一个字节的时间内没有再接收到数据的时候发生的。一般就只有一个数据帧发送完成的情况所以串口的空闲中断也叫帧中断
问题8
面试官
SPI通信的数据线有几根如果去掉一根可以是哪根
学生
- 只有一个主机和一个或者多个从机。标准的SPI是
4根线
串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线(CS) 从机选择线(CS)可以去掉
问题9
面试官
程序编译过程
学生
预处理阶段
。预处理器(cpp)根据以字符#开头的命令修改原始的C程序。比如hello.c中第一行的#include<stdio.h>命令告诉预处理器读取系统头文件stdio.h的内容并把它直接插入程序文本中结果就得到了另一个C程序通常是以.i作为文件扩展名编译阶段
。编译器(ccl)将文本文件hello.i翻译成文本文件hello.s它包含一个汇编语言程序。汇编语言程序中的每条语句都以一种标准的文本格式确切的描述了一条低级机器语言指令汇编阶段
。汇编器(as)将hello.s翻译成机器语言指令把这些指令打包成一种可重定位目标程序的格式并将结果保存在目标文件hello.o中。hello.o文件是一个二进制文件它的字节编码是机器语言指令而不是字符如果我们在文本文件中打开hello.o文件看到的将是一堆乱码链接阶段
。链接器(ld)负责处理合并目标代码生成一个可执行目标文件可以被加载到内存中由系统执行
问题10
面试官
TCP/UDP在哪一层两者区别是什么
学生
TCP(传输控制协议)和 UDP(用户数据报协议)在传输层
- 1、
TCP面向连接
(如打电话要先拨号建立连接)UDP是无连接的
即发送数据之前不需要建立连接 - 2、
TCP提供可靠的服务
。也就是说通过TCP连接传送的数据无差错不丢失不重复且按序到达UDP尽最大努力交付即不保证可靠交付
- 3、
TCP面向字节流
实际上是TCP把数据看成一连串无结构的字节流UDP是面向报文的
UDP没有拥塞控制因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用如IP电话实时视频会议等) - 4、每一条TCP连接只能是
点到点的
UDP支持一对一一对多多对一和多对多的交互通信 - 5、TCP首部开销20字节UDP的首部开销小只有8个字节
- 6、TCP的逻辑通信信道是全双工的可靠信道UDP则是不可靠信道
希望本文对大家有帮助上文若有不妥之处欢迎指正
分享决定高度学习拉开差距
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |