【STM32】从新建一个工程开始:STM32 新建工程的详细步骤
STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 + STM32CubeMX 创建 STM32 工程的详细步骤。
新建的标准库工程文件已上传至资源中,下载后即可直接使用。
标准库新建 STM32 工程的基本目录结构:STD_STM32F103RC_Demo
1. 新建 STM32 工程的基本目录结构
在 STM32 工程中,通常会有以下几个文件夹:


外设库(FWLib):存放 STM32 官方提供的驱动库,例如 HAL 库或标准外设库(
StdPeriph Lib)
用户文件(USER):存放用户编写的代码,如 main.c
工程文件(MDK-ARM):存放 Keil 相关的 *.uvprojx 工程文件
核心文件(COER):CMSIS 核心支持库
编译中间文件(OBJ):存放编译过程中生成的 .o 文件
系统文件(SYSTEM):存放 STM32 系统初始化相关的 system_stm32f10x.c
2. 使用 STM32CubeMX 生成工程
⭐ 2.1 安装必要的软件
✅ Keil MDK-ARM(用于编写和编译代码)
✅ STM32CubeMX(用于生成初始化代码)
✅ ST-Link 驱动 和 FlyMcu(用于调试和烧录)
⭐ 2.2 创建 STM32CubeMX 工程
- 打开 STM32CubeMX,点击 “New Project”
- 选择目标 STM32 芯片(例如 STM32F103C8T6)
- 配置文件:时钟(RCC)、串口(USART)、GPIO、定时器(TIM)等外设
- 选择代码生成方式
- 库类型:HAL 库(推荐)或 LL 库
- IDE 选择:Keil MDK-ARM
- 点击“Generate Code” 生成工程



标准库移植 STM32F10x_StdPeriph_Lib_V3.5.0:
标准库目录:

移植第一 步在 COER 文件夹下:
G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
文件夹下的文件:

文件夹:
G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
添加文件:startup_stm32f10x_hd.s 和 startup_stm32f10x_md.s

移植第二步在 USER 文件夹下:
进入标准库的文件夹中:
G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

在标准库的文件夹中:
G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

移植第三步在 FWLib 文件夹下:
G:\(stm32)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
将 文件夹 inc 和 src 复制到工程目录的 FWLib 下

第四步 在 Keil uVision5 中新建的工程目录中,将标准库的 .c 和 .h 文件分别加入在工程中:


以上。便添加完成了标准库中的所有 .c 文件,之后点击魔法棒,开始添加 .h 文件。
第一步:改为V5版本:

第二步:进入C/C++目录下新增目录:
\COER
\FWLib\inc
\USER


然后在 Define 中添加宏:
STM32F10X_HD,USE_STDPERIPH_DRIVER
点击 OK 结束。以上,便完成了标准库的前置配置。接下来我们测试一下代码是否能够调试与运行↓:

配置一下,将生成文件的目录放在OBJ文件夹下:

LED 亮灭:写一段点亮 LED 灯的代码:
在 main.c 中编写代码:
int main(void)
{GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStruct);GPIO_WriteBit(GPIOC, GPIO_Pin_7, Bit_RESET);}
编译工程
- 点击“Build”按钮(F7)编译代码
- 若无报错,生成
*.hex文件
然后点击编译:此时会将代码生成至OBJ文件夹下:
打开 FlyMcu.exe


这里按一下开发板上的复位键(记得此时开发板的按钮开关模式为 ISR)
开发板的 ISR(Interrupt Service Routine)和 RUN(运行模式)ISR(中断服务程序) 是 当外部或内部事件发生时,CPU 自动执行的特定函数,用于响应和处理中断事件。
📌 1.1 ISR 主要用于:外部中断(按键、传感器触发)定时器中断(周期性任务、PWM 计时)串行通信中断(USART、I2C、SPI 数据接收)DMA 传输完成中断异常处理(如硬件故障)✅ 1.2 ISR 的运行流程1.中断发生(如 GPIO 触发、定时器超时)。2.CPU 停止当前任务,保存上下文(寄存器、堆栈)。3.跳转到 ISR 处理程序,执行中断任务。4.ISR 结束,恢复原任务,继续运行。在嵌入式系统中,RUN 模式指的是 MCU 正常运行的状态。
📌 MCU 可能有多种运行模式,如:RUN 模式(正常运行)SLEEP 模式(低功耗模式,CPU 暂停但外设运行)STOP 模式(更低功耗,RAM 保持但 CPU 停止)STANDBY 模式(最低功耗,RAM 断电)

以上。代码便烧录成功了。然后将按钮切换至 RUN 运行模式,

测试成功。以上,是标准库新建工程的流程。
以上。仅供学习与分享交流,请勿用于商业用途!转载需提前说明。
我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!
相关文章:
【STM32】从新建一个工程开始:STM32 新建工程的详细步骤
STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 STM32CubeMX 创建 STM32 工程的详细步骤。 新建的标准库工程文件已上传至资源中,下载后即可直接使用。 标准库新建 STM32 工程的基本目录结构:STD_STM…...
基于“动手学强化学习”的知识点(五):第 18 章 离线强化学习(gym版本 >= 0.26)
第 18 章 离线强化学习(gym版本 > 0.26) 摘要SAC 算法部分CQL 算法CQL 总结与大函数意义CQL 总结CQL 类详细分析 摘要 本系列知识点讲解基于动手学强化学习中的内容进行详细的疑难点分析!具体内容请阅读动手学强化学习࿰…...
搞定python之九----常用内置模块
本文是《搞定python》系列文章的第九篇,介绍常用的内置模块的使用。到此为止python的基础用法就彻底说完了,大家可以在此基础上学习爬虫、web处理等框架了。 本文的代码相对比较多,大家注意看代码即可。python的文档我贴出来,毕竟…...
判断是不是完全二叉树(C++)
目录 1 问题描述 1.1 示例1 1.2 示例2 1.3 示例3 2 解题思路 3 代码实现 4 代码解析 4.1 定义队列,初始化根节点 4.2 层序遍历,处理每个节点 4.3 处理空节点 4.4 处理非空节点 5 总结 1 问题描述 给定一个二叉树,确定他是否是一…...
DeepSeek在学术研究方向初期工作提示词分享
目录 论文选题 研读文献 拟定提纲 大家好这里是AIWritePaper官方账号!更多内容👉AIWritePaper~在如今这个学术圈的“快车道”上,时间就像是一场永不停歇的赛跑,而论文质量则是那颗我们拼命追逐的“金苹果”。最近一款名为DeepS…...
神经外科手术规划的实现方案及未来发展方向
Summary: 手术规划软件 效果图,样例: 神经外科手术规划样例: 神经外科手术规划,三维重建,三维建模,三维可视化 Part1: 手术规划的定义与作用 一、手术规划的定义 手术规划是指在手术前,通过详…...
easypoi导入Excel兼容日期和字符串格式的日期和时间
问题场景 在使用easypoi导入Excel时,涉及到的常用日期会有yyyy-MM-dd HH:mm:ss、yyyy-MM-dd和HH:mm:ss,但是Excel上面的格式可不止这些,用户总会输入一些其他格式,如 如果在定义verify时用下面这种格式定义,那么总会…...
【计算机视觉】工业表计读数(2)--表计检测
1. 简介 工业表计(如压力表、电表、气表等)在工控系统、能源管理等领域具有重要应用。然而,传统人工抄表不仅工作量大、效率低,而且容易产生数据误差。近年来,基于深度学习的目标检测方法在工业检测中展现出极大优势&…...
Zbrush插件安装
安装目录在: ...\Zbrush2022\ZStartup\ZPlugs64...
LeRobot源码剖析——对机器人各个动作策略的统一封装:包含ALOHA ACT、Diffusion Policy、VLA模型π0
前言 过去2年多的深入超过此前7年,全靠夜以继日的勤奋,一天当两天用,抠论文 抠代码 和大模型及具身同事讨论,是目前日常 而具身库里,idp3、π0、lerobot值得反复研究,故,近期我一直在抠π0及l…...
OpenCV基础【图像和视频的加载与显示】
目录 一.创建一个窗口,显示图片 二.显示摄像头/多媒体文件 三.把摄像头录取到的视频存储在本地 四.鼠标回调事件 五.TrackBar滑动条 一.创建一个窗口,显示图片 import cv2img_path "src/fengjing.jpg" # 自己的图片路径 img cv2.imre…...
Visual Studio2022 中的键盘注释快捷方式
键盘快捷键 - Visual Studio (Windows) | Microsoft Learn 从官网查询: 注释选定内容CtrlKC [文本编辑器]编辑.注释选定内容 取消注释选定内容CtrlKU [文本编辑器]编辑.取消注释选定内容 官网显示版本2010应该也是用以上办法,本人还没尝试过。 使用注…...
【iOS】SwiftUI 路由管理(NavigationStack)
QDRouter.swift import SwiftUIMainActor class QDRouter: ObservableObject {Published var path NavigationPath()static let main QDRouter() // 单例private init() {}func open(_ url: String) {guard let url URL(string: url) else {return}UIApplication.shared.op…...
杨校老师课堂之编程入门与软件安装【图文笔记】
亲爱的同学们,热烈欢迎踏入青少年编程的奇妙世界! 我是你们的授课老师杨校 ,期待与大家一同开启编程之旅。 1. 轻松叩开编程之门 1.1 程序的定义及生活中的应用 程序是人与计算机沟通的工具。在日常生活中,像手机里的各类 APP、电…...
numpy学习笔记6:np.sin(a) 的详细解释
numpy学习笔记6:np.sin(a) 的详细解释 以下是关于 np.sin(a) 的详细解释: 1. 函数作用 np.sin(a) 是 NumPy 中用于计算数组(或标量)元素的正弦值的函数: 输入:数组 a(元素单位为弧度ÿ…...
Excel(函数篇):IF函数、FREQUNCY函数、截取函数、文本处理函数、日期函数、常用函数详解
目录 IF函数等于判断区间判断与AND函数、OR函数一同使用IFNA函数和IFERROR函数 FREQUNCY函数、分断统计LEFT、RIGHT、MID截取函数FIND函数、LEN函数SUBSTITUTE函数ASC函数、WIDECHAR函数实战:如何获取到表中所有工作簿名称文本处理函数TEXT函数TEXTJOIN函数 日期函数…...
利用大语言模型生成的合成数据训练YOLOv12:提升商业果园苹果检测的精度与效
之前小编分享过关于《YOLO11-CBAM集成:提升商业苹果园树干与树枝分割的精准度》,改进YOLO11算法后,进行苹果树的实例分割。本期文章我们将分享关于最新的YOLO12算法改进的苹果目标检测。 论文题目:Improved YOLOv12 with LLM-Gen…...
RabbitMQ 和 Redis 的选择
在处理大规模消息场景时,RabbitMQ 和 Redis 的选择需根据具体需求权衡。 大规模消息场景的关键考量 吞吐量需求: Redis:更适合 超高频写入(如百万级/秒),但需牺牲部分可靠性。RabbitMQÿ…...
整合百款经典街机游戏的模拟器介绍
对于80、90后而言,街机游戏承载着童年的欢乐记忆。今天要给大家介绍一款超棒的软件——「MXui街机厅经典游戏101款」,它能带你重回那段热血沸腾的街机时光。 「MXui街机厅经典游戏101款」是一款绿色免安装的街机模拟器,体积约1.39G。无需繁琐…...
Qt 读取数据库
在 Qt 中读取数据库文件通常涉及以下步骤。这里以 SQLite 为例(Qt 内置支持),其他数据库(如 MySQL、PostgreSQL)需要对应驱动: 1. 添加 SQL 模块依赖 在项目文件 .pro 中添加: QT sql2. 基本…...
中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南
目录 背景一、环境规划与依赖准备1. 服务器规划(3节点集群)2. 系统与依赖3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…...
Tomcat、Open Liberty 和 WebSphere Application Server (WAS) 的配置、调试和跟踪
一、Tomcat Tomcat 是一个轻量级的开源 Java Servlet 容器。 1、配置 Tomcat 的主要配置文件位于其安装目录下的 conf 文件夹中。 server.xml: 这是 Tomcat 的核心配置文件,包含了服务器的基本设置,例如端口号、连接器配置、虚拟主机配置、以及全局的…...
使用yolov8+flask实现精美登录界面+图片视频摄像头检测系统
这个是使用flask实现好看登录界面和友好的检测界面实现yolov8推理和展示,代码仅仅有2个html文件和一个python文件,真正做到了用最简洁的代码实现复杂功能。 测试通过环境: windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.2…...
Go语言环境搭建(Day1) 常见问题及解决方案指南
Go语言环境搭建(Day1)整理的 常见问题及解决方案指南: Go环境搭建问题排查手册 一、安装阶段问题 问题现象原因分析解决方案安装包下载失败网络问题或官网访问慢使用国内镜像下载:- Go中文网提示"Access Denied"Window…...
微软OneNote无法同步解决方案
目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑,最方便且免费的多设备笔记同步方案就是微软自家的OneNote,使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote,经常会出现无法同步、同步失败࿱…...
Log4j2漏洞实战
1,打开环境后访问该ip 2,打开dnslog.cn,获取一个域名,我们这里是2bfvl6.dnslog.cn 3,访问http://47.122.51.245:8983/solr/admin/coresaction${jndi:ldap://${sys:java.version}.2bfvl6.dnslog.cn} 4,返回d…...
【蓝桥杯速成】| 6.背包问题(01版)
01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 接下来让我们从题目入手,看看这个背包到底是怎么个事 题目ÿ…...
【含文档+PPT+源码】基于小程序的智能停车管理系统设计与开发
项目介绍 本课程演示的是一款基于小程序的智能停车管理系统设计与开发,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3…...
idea 编译打包nacos2.0.3源码,生成可执行jar 包常见问题
目录 问题1 问题2 问题3 问题4 简单记录一下nacos2.0.3,编译打包的步骤,首先下载源码,免积分下载: nacos源码: https://download.csdn.net/download/fyihdg/90461118 protoc 安装包 https://download.csdn.net…...
YOLOv8 OBB 旋转目标检测模型详解与实践
引言 在计算机视觉领域,目标检测是至关重要的任务之一。YOLO(You Only Look Once)系列算法因其高效性和准确性而广受欢迎。YOLOv8 作为稳定版本,在目标检测领域取得了显著成果,依旧能打。本文将深入探讨 YOLOv8 OBB&a…...
