跳到正文
XiaoGao 的个人博客

NO.10 · 嵌入式开发

STM32 单片机开发笔记:从寄存器到物联网通信

STM32 单片机开发课程笔记,覆盖 GPIO、中断、USART、I2C、SPI、DMA、ADC、FSMC 等外设,以及 CAN、以太网、Wi-Fi、BLE、LoRa 等物联网通信。

发布 DATE
字数 WORDS
1,023
阅读 READ
3 分钟

STM32 是嵌入式开发的主战场。这份笔记覆盖基础外设、通信协议、存储器、低功耗、实时系统和工程开发流程,从寄存器与 HAL 库双视角出发,一路延伸到 CAN、以太网、Wi-Fi、蓝牙和 LoRa 等物联网通信。

学习路线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
STM32 基础
├── ARM 内核、STM32 系列和开发工具
├── 最小系统、开发板和工程创建
├── GPIO、时钟和 HAL 库
├── 中断、USART、I2C 和定时器
├── DMA、ADC、SPI 和外部存储
└── FSMC、LCD 和寄存器映射
↓
STM32 高级通信
├── CAN 总线
├── W5500 以太网
├── ESP32-C3 Wi-Fi
├── ESP32-C3 Bluetooth LE
└── LoRa 节点与网关
↓
STM32 系统扩展
├── 电源管理与低功耗
├── RTC 与备份寄存器
├── 闹钟唤醒和掉电保持
├── 独立看门狗与窗口看门狗
└── HAL 工程结构、编译过程和程序状态

基础篇:外设与开发流程

  1. 芯片与工程环境:ARM 内核介绍、STM32 系列命名规则、Keil MDK / STM32CubeMX / ST-LINK 工具链、最小系统与第一个工程;
  2. GPIO 与寄存器:工作模式、端口配置和数据寄存器(GPIOx_CRL/CRH/IDR/ODR/BSRR/BRR/LCKR),寄存器方式实现流水灯;
  3. 系统架构与时钟:STM32 总体架构与时钟树;
  4. HAL 库开发:CubeMX 生成 HAL 工程,理解自动生成代码和用户代码的组织方式;
  5. 中断:中断体系、NVIC、外部中断控制器与按键检测案例;
  6. USART 串口通信:并行/串行、单工/半双工/全双工、同步/异步,轮询与中断接收,printf 重定向;
  7. I2C 通信:通过 M24C02 案例学习软件模拟 I2C 与硬件 I2C;
  8. 定时器:SysTick、基本/通用/高级定时器,PWM 呼吸灯与频率、占空比测量;
  9. DMA:ROM 到 RAM、RAM 到串口的数据传输;
  10. ADC:逐次逼近型 ADC 原理、单通道采集与多通道采集;
  11. SPI 与 Flash:W25Q32 读写,软件模拟 SPI 与硬件 SPI;
  12. 存储器与 FSMC:存储器映射、FSMC 扩展外部 SRAM、8080 时序控制 LCD。

高级篇:物联网通信

  • CAN 通信:物理层、协议层、数据帧与总线仲裁,环回静默模式测试与双节点通信;
  • 以太网与 W5500:OSI 七层模型、TCP/IP 四层模型,TCP 服务端/客户端、UDP 通信与简易 Web 服务器;
  • Wi-Fi 与 ESP32-C3:ESP-AT 固件与 AT 指令,STM32 与 ESP32-C3 串口交互,建立 TCP 通信;
  • Bluetooth LE:BLE 协议栈(PHY / LL / HCI / GAP / ATT / GATT)、广播扫描与透传模式数据收发;
  • LoRa:E220-400M22S 模块、普通节点与网关搭建,验证节点到网关的数据传输。

扩展篇:系统级功能

  • 电源控制与低功耗:睡眠、停机、待机三种低功耗模式与唤醒源管理;
  • RTC 与备份域:掉电继续运行、备份寄存器保存数据、闹钟唤醒待机模式;
  • 看门狗:独立看门狗与窗口看门狗的工作方式和触发条件;
  • HAL 工程与编译流程:startup_stm32f103xe.s、system_stm32f1xx.c、HAL_Init() 初始化流程与 Keil MDK 编译过程。

开发方式对比

方式 主要特点 学习重点
寄存器开发 直接操作外设寄存器,接近芯片硬件 地址、位域、时序和参考手册
HAL 库开发 使用 ST 提供的抽象接口,提高开发效率 CubeMX 配置、回调、状态和生成代码
混合开发 在 HAL 工程中针对关键功能使用寄存器 抽象层边界、时序控制和可维护性

推荐学习顺序

  1. 完成基础篇中的 GPIO、时钟、HAL 和第一个下载运行工程;
  2. 按 USART、I2C、SPI 的顺序学习常用片上通信接口;
  3. 学习中断、定时器、DMA 和 ADC,建立事件驱动与数据搬运能力;
  4. 学习存储器映射、FSMC 和 LCD,理解外部设备扩展;
  5. 进入高级篇,依次学习 CAN、以太网、Wi-Fi、蓝牙和 LoRa;
  6. 最后学习扩展篇中的低功耗、RTC、备份域、看门狗和 HAL 工程分析。

仓库

    ↑↓ 选择↵ 打开>theme · >random · >top · >archive