STM32 创建一个工程文件(寄存器、标准库)

首先到官网下载对应型号的固件包:

像我的STM32F103C8T6的就下载这个:

依次打开:

.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

可以看到:

这些文件就是STM32F10X的启动文件

启动文件(startup file)是一个非常重要的文件。它的主要作用是完成单片机在启动时的初始化工作,并为 C 语言的运行时环境(runtime environment)做好准备。

启动文件是单片机程序正常运行的基础。它确保了在进入用户 main 函数之前,硬件和内存处于正确的状态,使程序可以正常工作。如果启动文件没有正确设置,可能会导致无法正确访问内存,堆栈溢出,或者中断无法正常处理等问题。

接下来去到工程文件夹下新建一个Start文件

因为如果直接放到工程的目录下就太乱了,也是因为这个操作等一下我们还有配置一下路径,因为工程只能识别到工程目录下的文件

然后把启动文件复制过来:

但是!我在工程文件添加文件时只添加了这个,虽然说其他文件也是在文件夹下的

这是为什么呢?

这就涉及到单片机的型号分类了,因为我的是属于MD这个的所以我就只添加了MD的,按照你的单片机型号来选择就可以了

接下来打开:

.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

把这三个文件也复制到Start文件夹中

stm32f10x.h这个文件是STM32外围设备寄存器地址描述文件,里面包含了各寄存器的地址

另外两个则是用来配置时钟的

因为STM32是由内核和内核外围的设备组成的,所以还要添加内核寄存器的描述文件

依次打开:

.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

把这两个文件也放进Start文件夹下

到此为止工程的必要文件就弄完了

然后把Start文件添加到工程文件里就可以了

还记得我刚刚说的路径问题吗?

打开魔术棒:

在工程文件夹下添加一个User文件夹,用来放我们可以修改的文件,比如main函数文件

这个同理也是要在魔法棒里添加路径的

如果你想基于寄存器开发的话,新建工程文件到这里就可以了!

---------------------------------------------------------------------------------------------------------------------------------

接下来我说一下基于标准库开发的新建工程文件

依次打开:

.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src

在工程文件夹下建立一个新文件夹Library,把这些文件复制过去

这个同理也是要在魔法棒里添加路径的

然后依次再打开:

.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

这个conf文件是用来配置库函数头文件的包含关系的(conf文件是包含所有库函数的头文件的头文件,只要调用这个相当于调用所有库文件)

又因为stm32f10x.h这个头文件里包含了stm3f10x_conf.h这个文件,所以包含一个stm32f10x.h

就相当于包含了全部库函数!

另外两个it文件是用来存放中断函数的

把这三个文件粘贴到User文件夹下

然后接下来还需要一个宏定义

这个文件滑到最下面可以看到

这句的意思是当USE_STDPERIPH_DRIVER成立(即使用标准外设驱动时)stm3f10x_conf.h这个头文件才工作,默认不是这个,所以我们要自己配置

复制下USE_STDPERIPH_DRIVER

打开魔法棒然后在Define这里粘贴刚刚的内容

自此已新建好了一个基于标准库开发的工程

总结:

相关推荐
zlinear数据采集卡6 小时前
从0到1硬核拆解:工业级数据采集卡的隔离设计与Modbus通信实战
arm开发·单片机·嵌入式硬件·fpga开发·开源
FreakStudio11 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
科芯创展11 小时前
XZ61N,N-channel open drain输出电压检测芯片
单片机·嵌入式硬件
省四收割者14 小时前
一文详解信号完整性(3)--规避SI问题的具体实现方法
嵌入式硬件·硬件架构·信号处理·智能硬件·pcb工艺·altium designer
巴巴媛66615 小时前
STM32学习笔记【32.BKP + RTC】
笔记·stm32·学习
KaifuZeng16 小时前
通信与接口协议面试十一、网口
嵌入式硬件·面试·通信与接口协议
ACP广源盛1392462567316 小时前
破局 PCIe 4.0 交换瓶颈@ACP#IX8024 / ASM58024参数及应用对比
大数据·人工智能·分布式·嵌入式硬件
迷茫、Peanut16 小时前
51调时钟(2)
单片机
吠品16 小时前
Python字典键获取的四种实用方法
stm32·单片机·嵌入式硬件