GPIO
1. IO 有哪三种常用方式?
- 输入模式:读取外部信号。
- 输出模式:控制外部设备。
- 复用模式:将IO引脚配置为特定外设(如UART、SPI等)的功能。
2. 状态怎么转换?
- 通过寄存器设置模式(如GPIO_MODER):设置为输入、输出或复用。
- 拉高或拉低状态:设置上拉/下拉寄存器(如PUPDR)。
- 输出电平切换:通过写GPIO输出数据寄存器(如ODR)。
中断
1. 什么是中断?
中断是嵌入式系统的一种机制,在发生特定事件时,处理器暂停当前任务,跳转到预先定义的中断服务程序(ISR)以处理事件。
2. 中断的触发方式有哪些?
- 电平触发:高电平或低电平触发。
- 边沿触发:上升沿或下降沿触发。
3. 哪些函数不能在中断中使用?
- 耗时函数(如
delay
)。 - 阻塞函数(如
printf
)。 - 非重入函数(如标准库函数:
malloc
、free
等)。
4. 什么叫不可重入函数?
一个函数如果在没有完成当前调用时再次被调用,可能会导致数据错误或死锁,则称为不可重入函数。
5. 中断与异常有何区别?
项目 | 中断 | 异常 |
---|---|---|
定义 | 外部事件触发 | 内部错误或事件触发 |
例子 | GPIO中断、外部设备中断 | 除零错误、非法指令 |
优先级 | 通常可配置 | 通常由硬件固定 |
6. 中断的响应执行流程是什么?
- 中断事件发生。
- 当前任务保存上下文。
- 跳转到ISR。
- 执行中断处理。
- 恢复上下文,返回主程序。
7. 写一个中断服务需要注意哪些?
- 尽量简短、快速完成。
- 禁止嵌套调用过多函数。
- 清除中断标志位以防重复触发。
- 考虑线程安全问题。
8. 中断和轮询哪个效率高?
- 中断效率高:适用于频率低或实时性要求高的场景。
- 轮询简单:适合频繁触发但实时性要求不高的任务。
9. 怎样决定是采用中断还是轮询?
- 中断:高实时性需求、较低事件频率。
- 轮询:较高事件频率、简单任务。
10. 中断优先级有哪些?
- 固定优先级:由硬件决定。
- 可配置优先级:通过软件配置,如STM32中的NVIC。
定时器
1. 定时器的特殊工作模式有哪些?
- 定时模式:产生固定时间间隔。
- PWM模式:产生占空比可调的脉冲信号。
- 捕获模式:测量外部信号的周期或频率。
- 比较模式:输出特定事件。
2. 定时器PWM?如何实现PWM调速?
- PWM原理:通过调节占空比(高电平时间占总周期的比例)控制输出功率。
- 实现调速:通过修改定时器比较值,动态调整占空比。
3. 定时器中断?
定时器溢出或比较匹配时触发中断,可用于周期性任务。
通信协议
1. 什么是异步传输和同步传输?
- 异步传输:没有时钟信号,通过起始位和停止位同步数据(如UART)。
- 同步传输:需要时钟信号同步发送和接收(如I2C、SPI)。
2. UART、IIC、SPI对比的优缺点?
项目 | UART | I2C | SPI |
---|---|---|---|
时钟 | 无 | 有 | 有 |
速度 | 较低 | 中等 | 高速 |
接线 | 2根 | 2根+上拉电阻 | 4根 |
数据传输 | 单点到单点 | 多主多从 | 单主多从 |
3. RX为什么要上拉?
RX上拉可避免在空闲状态(无输入信号)时电平悬空导致误触发。
IIC
1. IIC的特点
- 两线通信:SDA(数据)和SCL(时钟)。
- 支持多主多从。
- 需要上拉电阻。
2. 数据有效性
- 数据在线路稳定后有效。
- 时钟高电平期间,数据不能改变。
3. IIC的总线仲裁机制?
多主设备在总线冲突时,检测信号电平并停止发送,以避免数据错误。
4. 主设备3.3V从设备1.8V通信(无电平转换):
通过加适配电阻上拉到1.8V实现兼容。
SPI
1. SPI最大传输速率受什么影响?
- 主机时钟频率。
- 电气特性(寄生电容、电阻等)。
2. SPI的四种模式及其时序图?
SPI有两种参数控制:
- 时钟极性(CPOL)。
- 时钟相位(CPHA)。 组合成四种模式。
3. SPI如何读写?
主机发送数据的同时接收数据,使用双向移位寄存器。
DMA
1. DMA是什么?
直接内存访问(Direct Memory Access),无需CPU参与完成数据传输。
2. DMA与中断的比较
- DMA效率更高:适合大块数据传输。
- 中断更灵活:适合小数据或异步事件。
ADC
1. ADC的实现原理?
将模拟信号通过采样、量化转为数字信号。
2. ADC的种类?
- SAR ADC(逐次逼近)。
- Sigma-Delta ADC(Σ-Δ调制)。
- Flash ADC(并行比较)。
存储
1. NAND和NOR Flash的区别?
特性 | NAND Flash | NOR Flash |
---|---|---|
存储容量 | 大 | 较小 |
读写速度 | 较快 | 较慢 |
随机读写性能 | 较差 | 较好 |