1. STM32微控制器的核心特性是什么?
- STM32微控制器是基于ARM Cortex-M 处理器 , 它具有高性能处理能力和低功耗的特性 , 适合用于嵌入式系统
- STM32系列具有多种多样的内存大小和丰富的内置外设选项,包括 多通道ADC , 定时器 , 通信接口 UART ,SPI , I2C,此外它支持广泛的中断和事件管理,并且提供了复杂的电源管理方案**
2. 如何配置STM32的GPIO进行数字输入输出?
- 首先我们需要使能GPIO的时钟
- 使用库函数来对GPIO端口进行初始化,比如配置引脚位推挽输出,配置它的速度,配置上下拉电阻
- 最后我们通过寄存器 ODR(输出数据寄存器) 以及BSRR(置位/复位寄存器) 来对引脚输出高低电平
3. 在STM32中如何实现定时器的配置和使用?
- 定时器的配置首先要选择合适的定时器并开启时钟, 然后设置预分频来决定定时器的时钟频率,以及设置自动重载寄存器来确定溢出时间,即定时周期
- 在配置好基本定时参数后,可以选择定时器模式,如基本计数模式或者更复杂的PWM输出模式。
- 在定时器中断后,可以实现周期性的任务。
- 通过库函数 可以来启动定时器启用中断
4. 什么是PLL
- PLL (phase-locked-loop) 是一种电子控制系统 , 它能够调整振荡的频率使得它和其他频率或者相位 保持同步 , 主要是由三部分组成 , 相位比较器 , 低通滤波器 , 以及压控振荡器
- PLL 广泛用于STM32 中, 它能使得 稳定的外部或者内部时钟 生成我们想要的系统时钟频率, 比如在STM32F4 中 , 我们可以使用8MHZ 的时钟源 进行分屏调整成100MHZ 的时钟 ,从外为CPU 和 外设提供时钟
5. 在单片机中 SPI , I2C 以及 UART 的区别和联系
5.1 区别和联系
- 速度 : SPI 是三者中最快的, 适合高速传输 。 UART 速度适中, 适合中长距离通信 。 I2C 的速度相对较慢, 但足以满足多数外设的需求
- 复杂性: SPI 相对简单 但是需要更多的 IO 口线 . UART 最简单 只需要两根线 , I2C 复杂性适中,但提供了更灵活的总线控制
- 硬件需求:UART硬件需求最简单 , SPI 以及I2C 需要更多的硬件支持,尤其是处理多个设备的时候
5.2 SPI(Serial Peripheral Interface)
- 特点:
- 快速的全双工通信 , 可以同时发送和接收
- 基于主从架构, 一个设备可以控制多个从设备, 但同时只与一个设备进行通信
- 通信涉及4条线 : MOSI , MISO , SCK , CS
- 不需要任何地址和协议来控制数据流
- 应用场景:
- 高度数据传输 ,例如SD 卡 TFT显示屏等
5.2 UART(Univeral Asynchronous Receiver / Transmitter)
- 特点:
- 异步通信,没有时钟线, 仅依靠波特率传输
- 通常用于点对点传输, 只涉及两根线 :TX , RX
- 传输数据时需要起始位和停止位来表示数据包的开始和结束
- 错误校检能力弱, 只依赖奇偶校检位
- 应用场景:
- 用于长距离或者低速通信设备 , 例如GPS 模块, 串口调试 与PC通信等
5.2 I2C(Inter - Intergrated Circuit)
- 特点:
-半双工通信,同一时刻只能发送或者接收- 基于主从架构, 支持多主多从的配置, 每个设备都有唯一的 地址
- 通信涉及两根线 SDA 和 SCL
- 需要地址来确定通信的目标设备
- 应用场景:
- 用于低速外围设备, 如传感器 ,EEPROM , LCD 显示器等
6. UART通信中的挑战:
“UART通信没有时钟信号来同步数据传输。在这种情况下,如何确保数据的正确传输和接收?并描述一下在实现UART通信时可能会遇到的挑战和如何解决这些挑战。”
- UART是一种异步通讯协议其主要挑战包括:
- 同步问题:用于缺乏共享时钟 , 接收双方必须知道发送方的波特率来正确解码信号
- 错误检测: UART 通常依赖起始位 , 停止位以及可选的奇偶校验位来进行基本的错位检测, 但是对于高误码的环境这可能有点不够
- 长距离通讯问题: 长线上可能出现信号衰减和出现噪声干扰等问题
- 解决办法:
- 使用一致的波特率和标准的帧格式(起始位 , 停止位 , 奇偶校检位) 来确保数据的正确传输和接收
- 在噪声多的环境 , 使用差分信号来提高信号的鲁棒性
- 使用额外的错误检测和纠正机制 , 来提高数据传输的可靠性
6.1 关键词:
异步 ,一致波特率 ,标准数据帧 ,信号衰减 噪声
7. 描述一下嵌入式基于ROM 和基于RAM 运行方式的异同
1. 基于RAM 的运行方式
- **数据存储:**程序和数据存储在RAM 中 , 可读可写 ,便于在运行时修改数据, 断电之后数据会消失, 不能用来保存数据
- 运行速度 : 运行的速度慢,程序需要从其他存储介质加载,可能会导致延迟。
- 适用场景 : 适合需要频繁的修改或者更新程序的地方使用,如开发和调试过程
2. 基于ROM的运行方式
- 数据存储:程序和数据 存储在ROM中 , ROM只允许之读操作 , 写入通常在生产过程中完成 ,断电之后数据依然存在
- 运行速度: 运行速度较快,适合即插即用
- 适用场景: 适合不需要或者很少更新的应用 。
7.1 关键词:
可读可写 , 只读 , 运行快, 断电数据消失 , 即插即用
8 . 哈佛结构和冯诺依曼结构的区别
- 冯诺依曼结构 :
- 指令和数据存储在同一个地方,通过同一根总线进行传输, 就像图书馆只有一个书架, 指令和数据都放在上面, 但是你要拿的时候,每次只可以拿一个,不能同时拿两个 。
- 优点:布局简单,易于编程
- 缺点: 指令和数据的获取不能同时进行 , 可能导致瓶颈(称为冯诺依曼瓶颈)
- 哈佛结构:
- 指令和数据分开存储 ,有着各自的总线进行传输。 就像图书馆有两个书架, 数据和指令分开放在两个书架,可以同时拿两个
- 优点: 高效快捷, 可以分别获取指令和数据,避免了瓶颈
- 缺点: 设计更复杂, 成本更高 。
8.1 关键词:
指令和数据, 分开存储, 共同存储
9. 中断和异常有什么区别
- 中断(Interupt)
- 来源: 是指由外部硬件产生的一个电信号从cpu中断引脚进入, 打断cpu的运行 。 中断事由外部硬件或外部设备触发的
- 目的: 中断能使处理器响应异步事件 ,当中断发生时, 处理器暂停当前的任务, 转而去处理中断服务进程(ISR)的特殊函数,响应外部中断
- 特点: 中断可以由用户软件层面控制 , 中断系统通常与硬件驱动和操作系统相关联
2.异常(exceptions) - 来源 : 指软件运行过程中发生了一些必须做出处理的事件,异常在处理的时候必须考虑与处理器的时钟同步,也称同步中断 。
- 目的: 异常处理允许操作系统捕捉错误或特殊情况,然后决定如何处理,例如终止有问题的程序或提供一个错误报告。
- 特点: 异常通常表明程序中的错误或特殊情况,需要操作系统的干预。
中断和异常都是处理器设计中处理特殊情况的机制, 中断只要用于响应外部硬件设备或者事件, 而异常用于处理程序执行过程中的错误或特殊情况 。
9.1 关键词
外部硬件设备或事件 , 软件运行错误 ,同步中断