如何新建STM32工程

发布时间:2026/9/19 8:31:25

如何新建STM32工程 如何新建STM32工程目前STM32的开发方式主要有基于寄存器的方式、基于标准库库函数的方式和基于HAL库的方式1.基于寄存器的方式用程序直接配置寄存器来达到我们想要的功能这种方式的有点是直接、效率高.但STM32的寄存器太多了这种方法不适用2.基于库函数的方式使用ST官方提供的封装好的函数通过调用这些函数来间接地配置寄存器。由于ST对寄存器封装的比较好所以这种方式既能满足对寄存器的配置对开发人员也比较友好有利于提高开发效率所以我们使用这种方式来进行学习开发3.基于HAL库的方式可以使用图形化界面快速配置STM32。这种适合老手这种方式隐藏了底层逻辑如果对STM32不熟悉不利于对水平的提高新建工程流程1.找个合适的位置新建用于存放工程的文件夹2.找到图片中的这个位置3.在上一个文件夹里再新建一个文件夹来存放本次工程4.写个工程文件的名称5.选择器件型号6.找到STM32的启动文件复制全部启动文件7.回到工程文件夹新建一个Start文件夹将复制的启动文件粘贴到里面8.回到stm32f10x.h找到如图三个文件stm32f10x.h就是STM32的外设寄存器描述文件作用是描述STM32有哪些寄存器和它对应的地址下面两个system文件是用来配置时钟的9.复制上图的三个文件粘贴到Start文件夹10.因为这个STM32是内核和内核外围的设备组成的而且寄存器的内核配置文件和外围设备的描述文件不是一起的所以我们还需要添加一个内核寄存器的描述文件找到这两个内核的寄存器描述和内核配置文件复制粘贴到Start文件夹下11.回到Keil将对应文件改名Start然后添加已经存在的文件到组里来添加这个启动文件剩下的.c和.h文件都要添加12.最后添加头文件路径把Start文件夹添加进来点击确定13.回到工程文件夹新建一个User文件夹用来放main函数回到keil里添加组改名叫User右键添加新文件创建main文件路径记得选择在User14.右键添加头文件选stm32f10c.h编写main函数编译并建立工程说明我的工程建设成功不过只是它现在还是一个基于寄存器开发的工程写个简单的代码接好DAP与STM32在keil里配置调试器点击Setting这样我们下载程序后会立马复位并执行下面这个按钮是下载按钮如果一切正常的话就会下载进STM32里配置寄存器点灯参考STM32的参考手册点灯代码%2Fimg%2Fimage-20260803010017195.pngpos_idimg-n4bcLviB-1785741870305)熄灭代码上述这种操作寄存器的方式要去不断地查手册看对应寄存器的操作流程即使是加上、|、~、^这几个运算也会导致运算麻烦容易出错的问题所以接下来我们引入库函数新建Library来存放库函数找到并 导入库函数的源文件再找到库函数的头文件复制粘贴过来其中misc.c中是内核的库函数源文件回到keil添加Library组同之前的步骤添加已存在的文件现在虽然库函数已经添加进来但还不能使用还要进行下面的操作根据上面这个路径找到这三个文件复制那个conf文件是用来配置库函数头文件的包含关系的还有个用来参数检查的函数定义这是所有库函数都需要的两个it文件是用来存放中断函数的粘贴到User目录下回到User组里把那三个文件添加进来在main.c文件的头文件进行右键打开头文件找到这个是一个条件编译意思是如果你定义了USE_STDPERIPH_DRIVER使用标准外设驱动这个字符串下面这个include conf.h文件才有效复制选中这句打开粘贴到头文件目录也要添加编译发现0错误0警告这样我们基于库函数的工程就完成了用库函数实现点灯的操作这样能看函数的定义说明补充新建工程里的启动文件选择前面的这一块不是只选了一个吗现在我们来讲讲到底怎么选根据这个表先看是什么型号再根据Flash容量的大小看看你是哪一种工程架构startup是启动文件启动文件内定义了中断向量表中断服务函数等中段服务函数中有个复位中断这个是整个程序的入口。当STM32上电复位或者按下复位键之后就会进入复位中断函数执行复位中断幻术组要做两件事情第一是调用SystemInit函数调用main函数。其他中断函数是达到触发条件后就会自动执行SystemInit文件的作用设置微控制器的启动初始化嵌入式闪存接口、锁相环、更新系统内核的时钟变量最右边的是那些文件就是外设和内核外设的寄存器描述。每个寄存器都封装了一大堆的函数给我提供了人性化的函数调用方式。至于conf文件就是包含了头文件的文件我们后面调用就只需要包含stm32f10x.h这个一个文件的头文件就可以达包含所有库函数头文件的效果更加方便我们任意调用所有库函数总结步骤1.建立工程文件夹Keil中新建工程选择型号2.工程文件夹里建立Start、Library、User等文件夹复制固件库里面的文件到工程文件夹3.工程里对应建立Start、Library、User等同名称的分组然后将文件夹内的文件添加到工程分组里4.工程选项C/CInclude Paths内声明所有包含头文件的文件夹5.工程选项C/CDefine内定义USE_STDPERIPH_DRIVER6.工程选项Debug下拉列表选择对应调试器Settings,Flash Download里勾选Reset and Runeil中新建工程选择型号2.工程文件夹里建立Start、Library、User等文件夹复制固件库里面的文件到工程文件夹3.工程里对应建立Start、Library、User等同名称的分组然后将文件夹内的文件添加到工程分组里4.工程选项C/CInclude Paths内声明所有包含头文件的文件夹5.工程选项C/CDefine内定义USE_STDPERIPH_DRIVER6.工程选项Debug下拉列表选择对应调试器Settings,Flash Download里勾选Reset and Run
延伸阅读

更多相关文章

2026/9/12 17:29:12

单片机计算机毕设之基于单片机、TOF 传感器的工业近距离测距报警设备开发 多按键参数调节型 TOF 激光测距硬件系统设计与实现(023401)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/19 8:28:59

AIAgent全流程技术图谱与2026趋势预测

1. 项目概述:AIAgent技术全景图的价值去年我在给一家金融机构做技术咨询时,他们的CTO问了这样一个问题:"现在AI技术层出不穷,但到底哪些技能值得团队重点投入?"这个问题直接促使我整理出了这份AIAgent全流程…

2026/9/19 8:28:59

ADK for Kotlin 实战:Android 开发者如何用 KSP 构建 AI Agent

1. 为什么 ADK for Kotlin 值得每一个 Android 开发者关注Google 把 AI Agent 的开发工具链正式带到了 Kotlin 生态里,这件事对 Android 开发者来说意义比表面看起来大得多。过去一年里,AI Agent 的框架基本被 Python 统治,LangChain、AutoGe…

2026/9/19 8:28:59

机器视觉选型八大深坑:从分辨率到光源的完整避坑指南

1. 先把丑话说在前面:选型阶段犯的错,90%会在现场加倍奉还1.1 视觉选型不是攒电脑,是给产线装"眼睛"机器视觉项目做到一半发现检不出来,十有八九不是算法不行,而是选型阶段就埋了雷。我见过太多项目&#xf…

2026/9/19 8:28:59

Cursor高效编码:上下文、提示词、规则文件与老代码重构

上周三下午,同事老张在群里发了一张截图,Cursor 把一个项目里根本不存在的getUserInfoById函数写进了代码,还煞有介事地补上了注释和异常处理。他甩了一句"这玩意儿就是人工智障"。我让他把当时的对话记录发过来,问题一…

2026/9/19 8:28:59

PyCharm集成QGIS Processing实战:打通内核级空间分析开发流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 8:23:59

汽车出口数字化转型:ERP解决方案与供应链优化

1. 汽车出口行业的数字化转型机遇与挑战2024年上海市政府工作报告释放了一个明确信号:跨境电商和二手车出口等新业态将获得前所未有的政策支持。作为一名深耕外贸ERP领域多年的从业者,我亲眼见证了汽车出口企业在这波政策红利下的转型阵痛与突破。在这个…

2026/9/18 14:13:01

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/19 0:03:10

验证 OpenSpec 兼容性,Cursor 的 Token 从 TaoToken 出

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 0:03:10

书桌角落的 Mac mini,OpenClaw 通过 TaoToken 跑任务。

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 0:03:10

oh-my-hermes:打造跨工具的命令编排与插件化工作流

1. 项目概述与设计初衷1.1 它到底是什么先说结论:oh-my-hermes 是一个面向开发者日常终端操作的效率工具套件,核心定位是“把分散在各类命令行工具里的高频操作,统一收拢成一套插件化、可编排的工作流”。项目灵感来源很明显——oh-my-zsh 重…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码