Arm Cortex-M3嵌入式系统技术的基础概念

1. 什么是嵌入式系统?简述嵌入式系统组成

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

组成:

  • 硬件层:嵌入式处理器、存储器(ROM/RAM/Flash)、外设接口、电源模块等
  • 软件层:板级支持包(BSP)、嵌入式操作系统(可选)、应用程序

2. STM32是什么?常见的内核型号有哪些?

STM32是意法半导体(ST)公司推出的一系列基于ARM Cortex-M内核的32位微控制器(MCU)。

常见内核型号:

  • Cortex-M0/M0+(入门型,如STM32F0、STM32L0)
  • Cortex-M3(基础型,如STM32F1、STM32L1)
  • Cortex-M4(带FPU,如STM32F4、STM32L4)
  • Cortex-M7(高性能,如STM32F7)
  • Cortex-M33(带安全功能,如STM32L5、STM32U5)

3. 常用的STM32开发工具有哪些?

  • IDE开发环境:Keil MDK-ARM、IAR EWARM、STM32CubeIDE
  • 配置工具:STM32CubeMX(图形化配置外设、生成初始化代码)
  • 调试工具:ST-Link/V2、J-Link
  • 编程工具:STM32CubeProgrammer(烧录程序)

4. 什么是标准库,什么是HAL库?

  • 标准库(StdPeriph Library):ST早期推出的固件库,直接操作寄存器封装的函数库,代码执行效率高,用户需要手动配置外设初始化,学习门槛稍高。
  • HAL库(Hardware Abstraction Layer):ST后期推出的硬件抽象层库,基于标准库封装,提供更通用的API,支持STM32全系列,可配合STM32CubeMX生成初始化代码,开发效率高,便于跨型号移植。

5. STM32的中断优先级如何配置?

STM32的中断优先级由抢占优先级响应优先级组成,配置步骤:

  1. 配置NVIC_PriorityGroupConfig设置优先级分组(决定抢占优先级和响应优先级的位数)
  2. 对每个中断通道配置NVIC_InitTypeDef结构体,指定抢占优先级和响应优先级
  3. 调用NVIC_Init完成配置

规则:

  • 抢占优先级高的中断可打断低抢占优先级的中断
  • 抢占优先级相同时,响应优先级高的先执行
  • 不同分组下,抢占/响应优先级的取值范围不同

6. STM32的GPIO工作模式有哪些?

常见8种模式:

  1. 输入浮空
  2. 输入上拉
  3. 输入下拉
  4. 模拟输入
  5. 通用推挽输出
  6. 通用开漏输出
  7. 复用功能推挽输出
  8. 复用功能开漏输出

7. STM32的三种系统时钟源

  1. HSI(高速内部时钟):内部RC振荡器,频率一般为8MHz,启动快但精度稍低
  2. HSE(高速外部时钟):外部晶振/陶瓷谐振器,常见8MHz/16MHz,精度高
  3. PLL(锁相环):可由HSI或HSE倍频得到,用于生成更高频率的系统时钟(如72MHz、168MHz)

8. STM32的USART的功能特点

  • 支持全双工异步通信,波特率可编程设置
  • 支持同步通信模式(带时钟输出)
  • 支持NRZ数据格式,可配置数据位(8/9位)、停止位(1/1.5/2位)、校验位(无/奇/偶)
  • 支持硬件流控制(RTS/CTS)
  • 支持多机通信模式
  • 可通过DMA、中断方式收发数据
  • 支持LIN、IrDA、SmartCard等扩展功能

9. STM32通用定时器TIMx的特性与特殊工作模式

特性

  • 16位自动重载计数器,支持向上/向下/中心对齐计数模式
  • 可编程预分频器,分频系数1~65535
  • 4个独立通道,可用于输入捕获、输出比较、PWM生成
  • 支持DMA、中断触发
  • 可触发ADC、DAC等外设

特殊工作模式

  • PWM输出模式(边沿对齐/中心对齐)
  • 输入捕获模式(测量脉冲宽度、频率)
  • 输出比较模式(定时输出、波形生成)
  • 单脉冲模式(OPM)
  • 编码器模式(读取正交编码器信号)
  • 从模式(外部触发计数、复位、门控)