1 固件库下载和新建工程
这里记录一下怎么从ST官网下载固件包并新建一个属于自己的工程模板,这里以STM32F103系列为例
一、怎么下载官网固件库
1、打开ST官网:https://www.st.com/content/st_com/en.html,选择Tools & Software
2、点击Embedded Software,选择STM32 Embedded Software
3、选择STM32 Standard PeripheralLibraries
4、选择F1系列
5、下载固件包,这里版本我们选择3.5.0,下载固件包需要先注册一个ST的账号,这里我已经注册好了,直接下载### 6、解压文件如下
二、固件库
1.固件库文件分类
-
Libraries:文件夹下是驱动库的源代码及启动文件,这个非常重要,我们要使用的固件库就在这个文件夹里面
-
Project:文件夹下是用驱动库写的例子和工程模板,其中那些为每个外设写好的例程对我们非常有用,我们在学习的时候就可以参考这里面的例程
-
stm32f10x_stdperiph_lib_um.chm:库帮助文档,这个很有用,不喜欢直接看源码的可以在合理查询每个外设的函数说明,非常详细,这是一个已经编译好的HTML文件,主要讲述如何使用驱动库来编写自己的应用程序
2.文件说明
图片来源于网络,上图中红色部分是我们新建工程需要用到的文件,下面我们简要说明一下其中的几个文件
2.1启动文件startup_stm32f10x.s
在固件库如图所示的路径下,找到启动文件startup_stm32f10x.s,我们需要选择对应芯片容量的启动文件
不同芯片对应的FLASH大小是不一样的,选择启动文件的时候,也需要按照相应芯片的FLASH选择对应的启动文件,以STM32F103RCT6芯片为例
FLASH大小为256KB,对照下表,属于中容量型芯片,所以等会新建工程的时候,我们需要添加startup_stm32f10x_hd.s文件
单片机上电后,进入startup_stm32f10x_hd.s启动文件,启动文件是用汇编写的,启动文件内定义了中断向量表,中断服务函数等。中断服务函数中有个复位中断。这就是整个程序的入口;当STM32上电复位或者按下复位键之后,程序就会进入复位中断函数执行;复位中断函数主要就做了两件事情。第一个是调用SystemInit函数,第二个是调用main函数
2.2 stm32f10x.h
这个头文件实现了片上外设的所以寄存器的映射,是一个非常重要的头文件,在内核中与之相对应的头文件是core_cm3.h。
2.3 system_stm32f10x.c
system_stm32f10x.c文件实现了STM32的时钟配置,操作的是片上的RCC这个外设。系统在上电之后,首先会执行由汇编编写的启动文件,启动文件中的复位函数中调用的SystemInit()函数就在这个文件里面定义。调用完之后,系统的时钟就被初始化成72M。如果后面我们需要重新配置系统时钟,我们就可以参考这个函数重写。
Systemlnit()函数就是定义在这个文件里面,上面的brief说明了函数的功能
2.4 stm32f10x_conf.h
这个stm32f10x_conf.h的文件就是用来配置头文件的包含关系的,stm32f10x_conf.h里面indlude了所有的库函数头文件,同时我们在stm32f10x.h的最后包含了stm32f10x_conf.h,所以在使用这些库函数时,我们只需要包含stm32f10xh这一个头文件,就相当于包含了所有的库函数头文件。这样我们就可以任意地调用库函数了
2.5 每个文件之间的联系
每个文件之间的联系如下图,参考了江科大的PPT
三、 新建工程
下面是新建工程具体操作步骤
1、新建Templete文件夹,如下所示
2、复制相应文件
2.1 把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport目录下的core_cm3.c和core_cm3.h两个文件复制到文件夹Templete\Libraries\CMSIS目录下
2.2 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x路径下的4个文件复制到文件夹Templete\Libraries\CMSIS目录下,对于startup文件夹,只需要startup/arm路径下的文件,把该路径下的文件移动到startup文件夹下面,其余全部删掉
此时,Templete\Libraries\CMSIS文件夹包含文件如下
Templete\Libraries\CMSIS\startup文件夹包含文件如下
2.3 把固件库STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下的inc和src两个文件夹复制到Templete\Libraries\STM32F10x_StdPeriph_Driver
2.4 把固件库STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下的4个文件复制到Templete\User
到此,我们需要的文件就已经添加好了,总的来说,添加了3次文件
3、在工程中包含文件
3.1 打开Keil,新建工程,工程保存在Project文件夹下面
3.2 选择芯片,这里我们选择STM32F103RCT6
3.3 新建如图的4个分组,然后添加文件
startup添加文件如下,三个文件都位于Templete\Libraries\CMSIS目录下
Driver文件夹里面添加所有外设的源文件,文件路径Templete\Libraries\STM32F10x_StdPeriph_Driver\src,源文件里面是ST写好的各个外设的驱动
User文件夹里面添加文件如下
3.4 点击魔术棒,包含文件头路径
包含头文件路径如图
3.5 把main.c文件里面的内容删除,填入如下内容
#include "stm32f10x.h"
int main(void)
{
while(1)
{
}
}
3.6 对魔术棒所做的一些更改
3.6.1 因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。定位到魔术棒 c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面(请注意,两个标识符中间是逗号不是句号),这里解释一下,如果你用的是中容量那么STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD,然后点击 OK。
- STM32F10X_HD 宏:为了告诉 STM32 标准库,我们使用的芯片类型是大容量的,使 STM32标准库根据我们选定的芯片型号来配置。
- USE_STDPERIPH_DRIVER 宏:为了让 stm32f10x.h 包含 stm32f10x_conf.h 这个头文件。
3.6.2 修改输出文件夹路径
打开魔术棒,把输出文件夹选择为我们创建的Output文件夹,顺便创建HEX文件勾选上,这样工程就能产生HEX文件
返回Project文件夹,可以看到,在新建了工程以后,里面多了如图的几个文件夹,其中,DebugConfig、Listings 和 Objects 文件夹是 MDK 自动生成的文件夹,Listings 和 Objects 用于存放编译过程产生的中间文件,DebugConfig 文件夹用于存储一些调试配置文件,我们把 Listings 和 Objects 这两个文件夹删除(DebugConfig 文件夹不可以删除),我们用Output文件夹来存放编译产生的中间文件文章来源:https://www.toymoban.com/news/detail-665238.html
到这里,文件就新建好啦,点击编译,如图
文章来源地址https://www.toymoban.com/news/detail-665238.html
到了这里,关于STM32官方固件库下载并且新建自己的工程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!