ARM 处理器架构
ARM 处理器从 1984 ARM-1 发展到 2004 ARM-11 之后,放弃数字命名,用 cortex
来命令处理器产品。
Cortex-A系列 主打高性能 手机,平板,智能电视等
Cortex-R系列 主打实时 汽车,工业控制,医疗设备等
Cortex-M系列 主打嵌入式 传感器、智能家居等。
STM32 概述
STM32 是 ST 公司设计的一系列以 ARM Cortex-M 为核心的 32 位微控制器。ST 表示是 ST 公司(ST 是世界最大的半导体公司之一);M 表示是以 ARM Cortex-M 为核心;32 表示是 32 位微控制器(MCU)。
意法半导体(STMicroelectronics,简称 ST)集团于1987年成立,是由意大利的 SGS 微电子公司和法国 Thomson 半导体公司合并而成。
基于 Arm Cortex 内核的 32 位 MCU 和 MPU
CM3:表示基于 Cortex-M3 内核架构
STM32 应用场景
物联网(IT) 智能农场管理系统,使用 STM32 控制传感器收集环境数据并通过无线网络发送到云端进行处理。
工业自动化 用于制造业中的自动化装配线,STM32 控制机器人臂的精确移动和操作。
汽车电子 在高级驾驶辅助系统(ADAS)中,STM32 用于处理车辆周围环境的实时数据,提高驾驶安全。
消费电子 在智能手表中,STM32 处理各种传感器数据,提供健康追踪、消息通知等功能
医疗设备 可穿戴心率监测设备,使用 STM32 进行实时数据处理和分析,监控患者心脏健康状况。
STM32 系列 MCU 命名规则
QFP:方型扁平式封装技术(Quad Flat Package)
DIP:双列直插式封装技术(Dual In-line Package)
STM32 开发方式
基于寄存器开发
优点:代码执行效率高。对硬件理解深入。有利于新手学习 STM32 知识更换其他芯片上手快。
缺点:开发效率低。代码移植不方便。
基于标准库函数开发
优点:相比寄存器开发效率提高,相比寄存器开发难度降低,相比寄存器开发移植容易。
缺点:屏蔽一些硬件信息,不利于新手学习知识。官方已经停止对标准库的更新,新的芯片已经不提供标准库。
基于 HAL 库函数开发(Hardware Abstraction Layer 硬件抽象层)
优点:ST主推,支持力度大。开发工具持续更新。开发难度相比前面两种大大降低移植极其容易
缺点:屏蔽几乎所有硬件信息,不利于新手学习知识。只学习 HAL,学完之后基础知识不够牢固。当迁移到其他 MCU 设备时,一切都要重新学习。
STM32 开发工具选择
Keil MDK(收费)
目前国内主流的单片机开发工具,历史悠久,调试功能强大,网上资料多。一款通用的IDE,兼容市面上大部分单片机。代码编辑能力比较弱,代码联想功能贼差。
IAR(收费)
目前国内主流的STM32开发工具。兼容大多数单片机。代码编编辑能力也不好用。
STM32CubeIDE(ST 官方)(免费)
ST 官方软件,对 STM32 开发很友好。基于 Eclipse 工具链,界面更现代化。仅限 STM32,不支持其他厂家单片机。相对 Keil 更耗电脑 CPU 资源。
Clion(工具新星)(收费)
Jetbrains 系的 IDE,做 Java 的都知道,他家的 IDE 宇宙第一好用。由于是近几年才推出的针对 STM32 的开发工具,目前使用的人还不是那么多。
STM32 开发工具推荐总结
要使用 Keil + Vscode 配合开发。Keil 负责编译下载调试,Vscode 负责编码。在进行 HAL 库的学习时,使用 STM32CubeMX,进行图形化配置。
Keil MDK 下载和安装
KEIL 是一个由 ARM 公司推出的基于 ARM 平台 C\C++ 语言 IDE 集成开发环境,使用 KEIL 就可以完成代码的编写、编译,将程序下载到开发板,和程序的调试工作。KEIL 是 STM32开发常用的工具之一。
下载地址:https://www.keil.com/download/product/
PackInstaller.exe 芯片包下载器
下载 STM32F103V8 芯片包
破解 Keil MDK
STM32 最小系统
STM32 单片机能工作的最小外围电路就叫最小系统。最小系统通常包括:STM32 芯片、电源、时钟、下载调试和复位 5 部分组成。
单片机存储器
单片机的 FLASH 存储器和 SRAM 存储器都嵌入在单片机芯片内部,能够方便的实现对程序和数据、变量的读写操作,通常编译器会把程序烧录在 FLASH 存储器,并使用 SRAM 存储器来存储变量、函数堆栈以及其他的临时变量。
SRAM 是一种易失性存储器,具有相对较快的读写速度和无限的读写次数,但掉电时会失去所有内容,SRAM 主要用于暂存数据和临时变量,读写操作由 CPU 直接完成,访问速度较快。
STM32 采用 3.3V电源供电。可以通过 USB 的 TypeC 供电,TypeC 提供的是 5V,使用芯片 AMS1117 把 5V 转成 3.3V。电容起到滤波作用。
安装串口驱动
启动文件选择标准
文件名 | 描述 | 适用范围 |
---|---|---|
startup_stm3210x_cl.s | 适用于互娱低阶部件 | 105xx及F107xx系列芯片 |
startup_stm3210x_ld_vl.s | 适用于小型量(16KB-32KB) | F100xx系列芯片 |
startup_stm3210x_md_vl.s | 适用于中型量(64KB-128KB) | F100xx系列芯片 |
startup_stm3210x_hd_vl.s | 适用于大型量(256KB-512KB) | F100xx系列芯片 |
startup_stm3210x_ld.s | 适用于小型量(16KB-32KB) | F101xx、F102xx、F103xx系列芯片 |
startup_stm3210x_md.s | 适用于中型量(64KB-128KB) | F101xx、F102xx、F103xx系列芯片 |
startup_stm3210x_hd.s | 适用于大型量(256KB-512KB) | F101xx、F102xx、F103xx系列芯片 |
startup_stm3210x_xl.s | 适用于超大型量(512KB-1024KB) | F101xx、F102xx、F103xx系列芯片 |
配置 CMSIS-DAP
DAP 通常指的是 Debug Access Port(调试访问端口)。DAP 是 ARM 架构(例如 STM32 的 Cortex-M 内核)中用于调试和编程的核心组件,属于 ARM CoreSight 调试架构的一部分。它通过调试接口(如 SWD 或 JTAG)连接微控制器与调试器,提供对芯片的调试、跟踪和编程功能。