当前位置: 首页 > news >正文

2025年最新嵌入式开发STM32单片机详细教程(更新中)

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)连接微控制器与调试器,提供对芯片的调试、跟踪和编程功能。

在这里插入图片描述

待更新···

相关文章:

2025年最新嵌入式开发STM32单片机详细教程(更新中)

ARM 处理器架构 ARM 处理器从 1984 ARM-1 发展到 2004 ARM-11 之后,放弃数字命名,用 cortex 来命令处理器产品。 Cortex-A系列 主打高性能 手机,平板,智能电视等 Cortex-R系列 主打实时 汽车,工业控…...

neatchat轻量级丝滑的ai模型web客户端

NeatChat 人工智能模型对话web客户端 前言 此项目是nextchat分支,相比原者更加简洁流畅。 部署 docker部署 name: next-chat services:chatgpt-next-web:ports:- 8080:3000environment:- OPENAI_API_KEYsk-xx543Ef3d- BASE_URLhttps://api.ai.com- GOOGLE_API_K…...

学习黑客分析案例

▶️ Day 2 任务 – 「怪物图鉴」实战 选一条最新安全事件(国内外均可,建议 1 年内) 例:CVE-2024-21887 Ivanti VPN RCE 用下列表格框架,3 句话归纳它的“派系”“CIA 受击点”“一句话原理”: 攻击流派…...

sonar-scanner在扫描JAVA项目时为什么需要感知.class文件

1 概述 SonarQube是一个静态代码分析工具,主要用于检查源代码的质量,包括代码重复、潜在漏洞、代码风格问题等。而SonarScanner是SonarQube的客户端工具,负责将代码进行形态分析,并将结果发送到SonarQube服务器。所以&#xff0c…...

AtCoder Beginner Contest 404(ABCDE)

A - Not Found 翻译: 给您一个字符串S,长度在1 到25 之间,由小写英文字母组成。 输出S 中没有出现的一个小写英文字母。 如果有多个这样的字母,可以输出其中任何一个。 思路: 数组记录存在于 s 中的字母。&#xff08…...

【言语理解】中心理解题目之结构分析

front:中心理解题目之抓住关键信息 3.1 五种常见对策表达方式 3.1.1 祈使或建议给对策 应该(应) 需要(要) eg:……。对此,媒体要做好自我规约。……。 eg:……。然而,两地仅简单承接…...

DeepSeek-Prover-V2-671B:AI在数学定理证明领域的重大突破

文章目录 什么是DeepSeek-Prover-V2-671B?核心技术亮点1. **超大规模参数与高效推理**2. **超长上下文窗口**3. **强化学习与合成数据** 主要应用场景1. **教育领域**2. **科学研究**3. **工程设计**4. **金融分析** 开源与商业化性能表现总结 2025年4月30日&#x…...

React18组件通信与插槽

1、为DOM组件设置Props 在react中jsx中的标签属性被称为Props DOM组件的类属性,为了防止与js中的class属性冲突改成了className DOM组件的style属性 import image from "./logo.svg"; function App() {const imgStyleObj {width: 200,height: 200,};re…...

第15章 对API的身份验证和授权

第15章 对API的身份验证和授权 在构建RESTful API时,确保只有经过身份验证和授权的用户才能访问特定资源是至关重要的。身份验证是确认用户身份的过程,而授权则是决定用户是否有权访问特定资源的过程。在本章中,我们将详细探讨如何在ASP.NET Core Web API中实现身份验证和授…...

【项目归档】数据抓取+GenAI+数据分析

年后这两个月频繁组织架构变动,所以博客很久没更新。现在暂时算是尘埃落定,趁这段时间整理一下。 入职九个月,自己参与的项目有4个,负责前后端开发,测试,devops(全栈/doge)&#xff…...

如何优化MySQL主从复制的性能?

优化MySQL主从复制的性能需要从硬件、配置、架构设计和运维策略等多方面入手。以下是详细的优化方案: 一、减少主库写入压力 1. ‌主库优化‌ 二进制日志(binlog)优化‌: 使用 binlog_formatROW 以获得更高效的复制和更少的数…...

asp.net客户管理系统批量客户信息上传系统客户跟单系统crm

# crm-150708 客户管理系统批量客户信息上传系统客户跟单系统 # 开发背景 本软件是给郑州某企业管理咨询公司开发的客户管理系统软件 # 功能 1、导入客户数据到系统 2、批量将不同的客户分配给不同的业务员跟进 3、可以对客户数据根据紧急程度标记不同的颜色&#xff0c…...

PCIe | TLP | 报头 / 包格式 / 地址转换 / 配置空间 / 寄存器 / 配置类型

注:本文为 “PCIe - TLP” 相关文章合辑。 英文引文,机翻未校。 中文引文,未整理去重。 图片清晰度受引文原图所限。 略作重排,如有内容异常,请看原文。 PCIe - TLP Header, Packet Formats, Address Translation, Co…...

ip和域名

好的,我来依次回答你的问题: 域名和 IP 地址是什么关系? IP 地址 (Internet Protocol Address):可以想象成互联网上每台设备(比如服务器、电脑、手机)的门牌号码。它是一串数字(例如 IPv4 地址 …...

《解锁GCC版本升级:开启编程新世界大门》

《解锁GCC版本升级:开启编程新世界大门》 一、引言:GCC 版本升级的魔法钥匙 在编程的广阔天地里,GCC(GNU Compiler Collection)宛如一座灯塔,为无数开发者照亮前行的道路。它是一款开源且功能强大的编译器集合,支持 C、C++、Objective - C、Fortran、Ada 等多种编程语言…...

前端跨域问题怎么在后端解决

目录 简单的解决方法: 添加配置类: 为什么会跨域 1. 什么是源 2. URL结构 3. 同源不同源举🌰 同源例子 不同源例子 4. 浏览器为什么需要同源策略 5. 常规前端请求跨域 简单的解决方法: 添加配置类: packag…...

生成式 AI 的工作原理

在科技浪潮汹涌澎湃的当下,生成式 AI 宛如一颗璀璨的新星,照亮了我们探索未知的征程。它不再仅仅是科幻电影中的幻想,而是已经悄然融入我们生活的方方面面,从智能客服的贴心应答,到艺术创作的天马行空,生成式 AI 正以一种前所未有的姿态重塑着世界。然而,你是否曾好奇,…...

DeepSeek辅助学术写作之修订与校稿以及发表与推广相关提示词分享祝你顺利毕业~

目录 1.修订与校对 2.发表与推广 大家好这里是AIWritePaper官方账号,官网👉AIWritePaper~ 宝子们可以使用小编精选的“ChatGPT研究论文提示词”集合来创建研究论文。利用ChatGPT的智能回应生成详尽有效的内容,这样可以加快研究论文的策划、…...

叠层阻抗线框

1.阻抗介绍 特性阻抗:又称“特征阻抗”,它不是直流电阻,属于长线传输中的概念。在高频范围内,信号传输过程中,信号沿到达的地方,信号线和参考平面(电源或地平面)间由于电场的建立&am…...

大数据:驱动技术创新与产业转型的引擎

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 在全球数字化转型的浪潮中,大数据已经成为推动各行各业革新的核心力量。随着信息技术的迅猛发展,数据的收集、存储、处理和分析能力不断提升,大数据不仅改变了企业的运营模式,更引领了技术创新和产业结构…...

C++继承基础总结

引言 在编写多个类时,类之间可能会存在多个相同的成员变量,导致代码冗余度过高,C继承的出现,使得我们可以在已有类的基础上构建新类,从而实现代码复用与结构扩展。 一、继承的基本概念 继承是指子类(派生…...

2025年斯诺克世锦赛——“75三杰”在1/4决赛作为对手的概率

“在最近的斯诺克世锦赛中,中国两名球员成功挺进前8强。此外,前8强也出现令人感慨的一幕:75三杰全部进入到了八强,这也是历史第5次,50岁正是打拼的年纪!传奇之旅继续!”——摘自50岁正是打拼的年…...

Python绘制地球的重力地图

文章目录 Boule重力地图从ensaio下载重力数据Boule boule中定义了多种参考椭球,可用于表示地球、火星等星体的重力分布。可通过pip安装 pip install bouleboule中已经定义的椭球如下 椭球GRS80WGS84MARSMERCURYMOONVENUSVESTA星体地球地球火星水星月球金星灶神星这些椭球可直…...

多端定制系统开发:打造高效全平台覆盖的APP解决方案

在移动互联网时代,用户需求日益多样化,企业若想触达更广泛的受众,仅靠单一平台的应用已远远不够。无论是iOS、Android、Web端,还是智能手表、车载设备等新兴终端,多端适配已成为企业数字化转型的刚需。多端定制系统开发…...

WGDI-分析WGD及祖先核型演化的集成工具-文献精读126

WGDI: A user-friendly toolkit for evolutionary analyses of whole-genome duplications and ancestral karyotypes WGDI:一款面向全基因组重复事件与祖先核型演化分析的易用工具集 摘要 在地球上大多数主要生物类群中,人们已检测到全基因组复制&…...

旋转矩阵公式理解

这里给出其中一种理解方法: 设原始直角坐标系下的坐标为(x,y),我们可以将它分解为两个向量(x,0)和(0,y)。接下来将两个向量分别顺时针旋转θ度,二者就会分别变成:(xcosθ,xsinθ)和(-ysinθ,ycosθ)。 也就是说,二者…...

网络Tips20-002

1..某主机接口的IP地址为192.16.7.131/26.则该IP地址所在网络的广播地址是:192 16.7.191 广播地址是指在特定网络上发送广播消息的地址。它用于向网络上的所有设备发送信息。 方法1:广播地址掩码取反和网络地址的或运算 方法2:广播地址将网…...

firewall docker 冲突问题解决(亲测有效)

# 关闭iptables,使用firewall systemctl disable iptables # 禁用服务 systemctl stop iptables # 关闭服务 systemctl status iptables # 查看服务状态 systemctl enable firewalld # 设置防火墙开机自启动 systemctl start firewalld # 开启服务 systemctl s…...

SwiftUI-MLX本地大模型开发(二)

介绍 在 SwiftUI-MLX本地大模型开发一文中,我们已经详细讲了如何利用 MLX 进行本地大模型的开发。但是通过案例可以发现 2 个问题: MLX 内置的大模型数量有限。每次大模型都需要从 HuggingFace 下载。 如何解决这 2 个问题,方案是&#xff1a…...

基于「骑手外卖系统」串联7大设计原则

你说得对!这些设计原则听起来都很抽象、很“玄”,如果不是实际开发过系统,很难理解“到底为什么要这样设计”。 那我现在就用一个你能想象得很清楚的真实例子,帮你把这7个设计原则一一落地到具体情境里,你会一眼明白。…...

泰迪杯特等奖案例学习资料:基于时空图卷积网络的城市排水系统水位精准重建与异常检测

(第十四届泰迪杯数据挖掘挑战赛A题特等奖案例解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 城市排水系统(Urban Drainage Network, UDN)是城市基础设施的重要组成部分,其运行效率直接影响防洪排涝能力和水环境质量。然而,实际运维中面临以下难题: 监测数据稀…...

嵌入式Linux应用项目----智能网关

一、网关概述: Linux网关的作用在于,通过蓝牙、LoRa、串口、CAN等接口,与哪些无法连接网络的设备建立联系,将它们的数据转发至服务器。这过程中,网关充当了数据的桥梁,将下级设备所产生的数据发送至服务器。…...

C++ 中的继承

目录 前言 一、继承的概念及定义 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承及菱形虚拟继承 (一)单继承与多继承 (二)菱形继承 …...

【中间件】brpc_基础_用户态线程上下文

文章目录 context介绍1 简单介绍2 主要功能2.1 上下文结构定义2.2 上下文切换实现2.3 协程栈管理2.4 平台兼容性处理2.5 性能优化 3 关键代码逻辑示例3.1 上下文初始化 (bthread_make_fcontext)3.2 上下文切换 (bthread_jump_fcontext) 4 与 BRPC 其他模块的协作5 性能与稳定性…...

蟋蟀的叫声,大自然的温度计

夏夜草丛中,蟋蟀的鸣叫声此起彼伏。有趣的是,它们的叫声频率竟然与气温有关!根据图片中的公式: 气温 ( X 8 ) 5 9 \text{气温} \frac{(X 8) \times 5}{9} 气温9(X8)5​ 只需记录蟋蟀在 15 秒内的鸣叫次数( X X X…...

文献总结:TPAMI端到端自动驾驶综述——End-to-End Autonomous Driving: Challenges and Frontiers

端到端自动驾驶综述 1. 文章基本信息2. 背景介绍3. 端到端自动驾驶主要使用方法3. 1 模仿学习3.2 强化学习 4. 测试基准4.1 真实世界评估4.2 在线/闭环仿真测试4.3 离线/开环测试评价 5. 端到端自动驾驶面临的挑战5.1 多模态输入5.2 对视觉表征的依赖5.3 基于模型的强化学习的世…...

二极管反向恢复的定义和原理

二极管的反向恢复定义 二极管的反向恢复是指二极管从正向导通状态切换到反向阻断状态时,电流从正向变为负向并最终回到零所需的时间。具体过程如下: 正向导通:当二极管正向偏置时,电流可以顺利通过,此时二极管处于导…...

# 基于词袋模型(BoW)的猫狗图像分类实践

基于词袋模型(BoW)的猫狗图像分类实践 在计算机视觉领域,图像分类是一项基础且重要的任务。本文将介绍如何使用词袋模型(Bag of Words, BoW)结合支持向量机(SVM)实现猫狗图像分类。通过详细的代…...

Vscode+git笔记

1.U是untracked m是modify modified修改了的。 2.check out 查看观察 3 status changed 暂存区 4.fetch v 取来拿来 5.orangion 起源代表远程分支 git checkout就是可以理解为进入的意思。...

生成式 AI 的未来

在人类文明的长河中,技术革命始终是推动社会跃迁的核心引擎。从蒸汽机解放双手,到电力点亮黑夜,再到互联网编织全球神经网络,每一次技术浪潮都在重塑人类的生产方式与认知边界。而今天,生成式人工智能(Generative AI)正以一种前所未有的姿态登上历史舞台——它不再局限于…...

进程间通信(IPC)

进程间通信(IPC)是操作系统中非常重要且基础的概念,涉及到不同进程之间如何交换数据和同步操作。下面我会一个一个地详细讲解这几种常见的IPC方式:管道(包含匿名管道和有名管道)、消息队列、共享内存、信号量、Socket通信,内容尽量用通俗易懂的语言,并结合具体原理、优…...

C语言奇幻指南:宏、头文件与变量的秘密世界

&#x1f31f; C语言奇幻指南&#xff1a;宏、头文件与变量的秘密世界 &#x1f31f; 一、写一个“比小”宏&#xff1a;三目运算符的魔法 目标&#xff1a;定义一个宏&#xff0c;返回两个参数中较小的值。 代码&#xff1a; #define MIN(a, b) ((a) < (b) ? (a) : (b))…...

【开源免费】二维码批量识别-未来之窗——C#-仙盟创梦IDE

二维码批量识别工具&#xff0c;借助先进图像识别技术&#xff0c;能快速准确读取大量二维码信息。适用于物流与供应链管理&#xff0c;如库存盘点和货物追踪&#xff1b;可用于资产管理&#xff0c;像固定资产盘点与设备巡检&#xff1b;还能助力数据收集与市场调研&#xff0…...

n8n工作流自动化平台的实操:解决中文乱码

解决问题&#xff1a; 通过ftp读取中文内容的文件&#xff0c;会存在乱码&#xff0c;如下图&#xff1a; 解决方案 1.详见《安装 iconv-lite》 2.在code节点&#xff0c;写如下代码&#xff1a; const iconv require(iconv-lite);const items $input.all(); items.forEa…...

MCP 探索:MCP 集成的相关网站 Smithery、PulseMCP 等

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 MCP 探索:MCP 集成的相关网站 Smithery、PulseMCP 等前言一、MCP 集成基础二、利用热门资源平台集成三、集成常见 MCP 服务四、管理集成的 MCP 能力五、集成示例借鉴六、数据交互与安全管理MCP 探索:MCP 集成的相关网…...

linux的时间轮

时间轮&#xff1a;高效管理海量定时任务的利器 1. 引言&#xff1a;为什么需要时间轮&#xff1f; 在许多应用场景中&#xff0c;我们都需要管理大量的定时任务&#xff0c;例如&#xff1a; 网络连接的超时检测。分布式系统中的心跳检测。缓存条目的过期淘汰。需要延迟执行…...

《操作系统真象还原》第十二章(2)——进一步完善内核

文章目录 前言可变参数的原理实现系统调用write更新syscall.h更新syscall.c更新syscall-init.c 实现printf编写stdio.h编写stdio.c 第一次测试main.cmakefile结果截图 完善printf修改main.c 结语 前言 上部分链接&#xff1a;《操作系统真象还原》第十二章&#xff08;1&#…...

MIT6.S081-lab8前置

MIT6.S081-lab8前置 注&#xff1a;本部分除了文件系统还包含了调度的内容。 调度 调度涉及到保存寄存器&#xff0c;恢复寄存器&#xff0c;就这一点而言&#xff0c;和我们的 trap 很像&#xff0c;但是实际上&#xff0c;我们实现并不是复用了 trap 的逻辑&#xff0c;我…...

Java从入门到精通 - Java语法

Java 语法 此笔记参考黑马教程&#xff0c;仅学习使用&#xff0c;如有侵权&#xff0c;联系必删 文章目录 Java 语法01 变量详解1. 变量里的数据在计算机中的存储原理1.1 二进制1.2 十进制转二进制的算法1.3 计算机中表示数据的最小单元总结1.4 字符在计算机中是如何存储的呢…...

【CF】Day50——Codeforces Round 960 (Div. 2) BCD

B. Array Craft 题目&#xff1a; 思路&#xff1a; 有点意思的构造 首先题目告诉我们 y < x&#xff0c;这是一个重要的条件 我们先来考虑简单情况&#xff0c;假如可以放0进去&#xff0c;那么我们只需要在 y ~ x 之间全放 1 &#xff0c;其余都是 0 即可&#xff0c;但…...