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这里粘贴刚刚的内容

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

总结:

相关推荐
新晨单片机设计4 分钟前
S028C-基于STM32单片机WIFI智能电表(温度)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·wifi智能电表
幼儿园蛋小黑37 分钟前
LVGL 入门指南:从零搭建嵌入式 GUI 界面
嵌入式硬件
1234567890@world1 小时前
正点原子 ATK-DLRK3568 嵌入式Linux系统开发手册V1.3 详细总结
linux·stm32·单片机
女神下凡2 小时前
芯参谋(68):ADC模数转换器电路设计指南
arm开发·单片机·嵌入式硬件·硬件工程·设计规范
Zwawa3 小时前
一盏 LED 不够用了:让同一盏灯说出不同的话
c语言·单片机·嵌入式
芯岭技术郦4 小时前
入门级 32 位 MCU,PY32F002B
单片机·嵌入式硬件
三佛科技-134163842124 小时前
景观雾化器方案开发,鱼缸/假山造雾器方案开发(主控FT61F021封装SOP16)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
架构师伯子明4 小时前
socket通信
单片机·嵌入式硬件
创界工坊工作室5 小时前
46-基于AT89C51脉冲式电表数据采集器设计
stm32·单片机·嵌入式硬件·51单片机·proteus
恒锐丰科技林技术员5 小时前
EG27324 双通道驱动芯片:小封装下的高性能功率驱动方案
经验分享·嵌入式硬件·硬件工程