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

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

总结:

相关推荐
安庆平.Я1 天前
STM32——IWDG
stm32·单片机·嵌入式硬件
太空1号1 天前
VxWorks入门小白菜鸟教程4 —— 异步I/O库(AIO)的使用
嵌入式硬件
怀民民民1 天前
轮询&中断 串口实训
单片机·嵌入式硬件·串口·中断·轮询·学习日志·keill
kaka❷❷1 天前
STM32 单片机 ESP8266 联网 和 MQTT协议
stm32·单片机·嵌入式硬件·物联网·mqtt·esp8266
古译汉书1 天前
Stm32江科大入门教程--各章节详细笔记---查阅传送门
数据结构·stm32·单片机·嵌入式硬件·算法
brave and determined1 天前
硬件-内存学习DAY20——GDDR6革命:显存技术如何重塑游戏与AI未来
嵌入式硬件·ddr·ddr4·ddr5·ddr6·内存原理·内存技术
一个学Java小白1 天前
LV.5 文件IO
stm32·单片机·嵌入式硬件
电鱼智能的电小鱼1 天前
基于电鱼 ARM 工控机的煤矿主控系统高可靠运行方案——让井下控制系统告别“死机与重启”
arm开发·人工智能·嵌入式硬件·深度学习·机器学习
sheepwjl1 天前
《嵌入式硬件(十八):基于IMX6ULL的ADC操作》
单片机·嵌入式硬件·imx6ull·adc
2301_805962932 天前
AXF文件变量地址查找完全指南
stm32