STM32开发笔记-新建标准库工程

1.STM32开发方式

STM32开发一般包括三种方式:基于寄存器开发、基于标准外设库开发、基于HAL库开发。

标准外设库是最基础的STM32开发方式,提供了一系列函数用于配置和控制STM32的外设,如GPIO、USART、SPI等。使用标准外设库需要手动编写代码,对于有一定嵌入式开发经验的开发者来说比较熟悉。其优点是灵活性高,可以根据具体需求进行定制开发,但缺点是编写代码量大,开发周期较长。

HAL库是STM32提供的一套高级抽象层,封装了底层的硬件操作,提供了一系列易于使用的函数接口。使用HAL库可以大大简化开发流程,减少代码量。开发者只需要调用相应的函数,即可完成对外设的配置和控制。其优点是开发效率高,适合快速开发和原型验证,但缺点是灵活性相对较低,对于一些特殊需求可能需要自行编写底层代码。寄存器开发是通过直接操作寄存器进行开发,但是由于STM32的寄存器数量众多,逐个查询比较繁琐。其优点是对底层了解深入,可以实现一些HAL库无法实现的功能,但缺点是需要手动编写大量代码,且容易出错。

后续应该大力推广的是基于HAL库的形式,但是由于我自己用的是基于标准外设库开发方式,就只在此记录基于标准外设库的工程新建过程。

2. 新建工程文件夹

2.1 下载标准外设库

标准外设库可以到STM32社区下载STM32官方标准库网址: https://www.stmcu.org.cn/下载。这里我所用的芯片为STM32F103C8T6,下载的库为STM32F10x_StdPeriph_Lib_V3.5.0,解压后目录如下;
在这里插入图片描述

其中:Libraries为库函数文件;Project为官网的例程;Utilities文件夹是ST官方评估板源文件(不能了解); Release_Notes.html是固件库的发布日志;stm32f10x_stdperiph_lib_um.chm文件是固件库的帮助文档,可以直接双击打开。

2.2 创建文件夹放置项目工程

创建一个新的文件夹,我这里是命令为controller_project,然后在该文件夹里面创建四个子文件夹来存放不同的文件,包括user、project、FWLIB和CMSIS。其中,user文件夹用来存放主函数和一些用户自定义函数;project文件夹用来存放项目工程文件以及起始代码文件;FWLIB文件夹用来存放库函数;CMSIS文件夹用来存放内核函数及启动引导文件。
在这里插入图片描述

2.3 拷贝工程所需的库文件

首先从固件库路径
STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
中找到stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h 文件
在这里插入图片描述

复制到controller_project/user文件夹中。
在这里插入图片描述

其次,将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中的文件复制到controller_project/CMSIS中。
在这里插入图片描述

找到
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x文件夹下的相应文件,将它复制粘贴到复制到controller_project/CMSIS文件夹中。
在这里插入图片描述

最终效果如图所示。
在这里插入图片描述

最后,在标准库路径
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver中找到如下文件夹内容。
在这里插入图片描述

复制到工程路径controller_project\FWLIB下
在这里插入图片描述

至此文件拷贝工作完成,需要说明的是,文件目录存放在只是为了规范工程,并非一定一板一眼按照流程照做,可以灵活处理。

3 创建项目工程

3.1 新建工程

打开Keil5,点击Project选择New Version Project创建工程项目.
在这里插入图片描述

然后将其放置到创建的文件夹中controller_project/project并重新命令,点击保存。则弹出如下界面。
在这里插入图片描述

在弹出的界面中选择相应的芯片,这里我选择的是STM32F103C8。选择后点击OK。
在这里插入图片描述

弹出了如下菜单,因为我们已经做了库代码的拷贝,不需要在利用KEIL自带的库函数了。因此直接点击OK即可。
在这里插入图片描述

至此,工程就创建完毕。

3.2 项目工程的配置

如图所示,点击“品字”图标,在新建工程选项中添加文件路径。
在这里插入图片描述

在此页面,可以修改Project Targets名并添加多个Groups,修改结果如下。
在这里插入图片描述

接下来我们添加文件进入工程项目中,先单击选中FWLIB,选择add files…进入新建的工程文件夹controller_project/FWLIB\src中,选中所有文件,点击Add完成文件添加。
在这里插入图片描述

再单击选中CMSIS,选择add files…进入新建的工程文件夹controller_project/CMSIS中,选中所有的.c文件,点击Add完成文件添加。
在这里插入图片描述

再单击选中startup,选择add files…进入新建的工程文件夹controller_project/CMSIS/startup/arm文件夹中找到如图所示的startup_stm32f10x_md.s文件,点击Add完成文件添加。
在这里插入图片描述

最后,再单击选中user,选择add files…进入新建的工程文件夹controller_project/user文件夹中找到如图所示的stm32f10x_it.c文件,点击Add完成文件添加。
在这里插入图片描述

3.3 新建main.c并创建main函数

在页面左侧project栏中,选中user按右键,弹出菜单中,选择Add New Item to Group ‘user’。
在这里插入图片描述

弹出如下菜单。在菜单中作如下修改,点击Add完成main.c文件的添加。

在这里插入图片描述

打开main.c,在main.c里,编写如下代码,创建一个空main函数。
在这里插入图片描述

3.4 配置编译环境

点击魔术棒图标,弹出编译配置菜单。选中output选项卡,一般选择把Create Hex File选项勾选上,这样编译才能生成hex文件方便用烧录软件下载到STM32上。如图所示。
在这里插入图片描述

再次选中选中c/c++选项卡。如图所示添加两个宏:STM32F10X_MD, USE_STDPERIPH_DRIVER
在这里插入图片描述

添加USE_STDPERIPH_DRIVER是为了使用ST官方库,
添加STM32F10X_MD宏定义是因为我们用的芯片是中容量的,
小容量的芯片使用:STM32F10X_LD
中容量的芯片使用:STM32F10X_MD
大容量的芯片使用:STM32F10X_HD
这个宏和startup中的启动文件需要匹配上,和芯片型号最好也匹配上,否则可能出现编译不过的情况。
在这里插入图片描述

对应关系总结如下。芯片型号对应的具体内存大小,可以根据芯片手册对应查找。
|宏 |启动文件 |内存大小|

启动文件内存大小
STM32F10X_LDstartup_stm32f10x_ld.s16-32k
STM32F10X_MDstartup_stm32f10x_md.s64-128k
STM32F10X_HDstartup_stm32f10x_hd.s256-512k

在这里插入图片描述

最后一步配置:如图所示,添加文件索引路径:
在这里插入图片描述

点击OK完成配置。

3.5 编译

依次点击图示三个图标。无报错则说明工程配置成功。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

>_<!

码字不易,如有帮助,欢迎鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值