打印
[其他ST产品]

STM32官方固件库下载并且新建自己的工程

[复制链接]
264|59
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
甲虫666|  楼主 | 2023-12-21 11:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 固件库下载和新建工程

这里记录一下怎么从ST官网下载固件包并新建一个属于自己的工程模板,这里以STM32F103系列为例



一、怎么下载官网固件库
1、打开ST官网:https://www.st.com/content/st_com/en.html,选择Tools & Software



使用特权

评论回复
沙发
甲虫666|  楼主 | 2023-12-21 11:22 | 只看该作者
2、点击Embedded Software,选择STM32 Embedded Software

使用特权

评论回复
板凳
甲虫666|  楼主 | 2023-12-21 11:25 | 只看该作者
4、选择F1系列

使用特权

评论回复
地板
甲虫666|  楼主 | 2023-12-21 11:25 | 只看该作者
5、下载固件包,这里版本我们选择3.5.0,下载固件包需要先注册一个ST的账号,这里我已经注册好了,直接下载

使用特权

评论回复
5
甲虫666|  楼主 | 2023-12-21 11:56 | 只看该作者
### 6、解压文件如下



使用特权

评论回复
6
甲虫666|  楼主 | 2023-12-21 11:56 | 只看该作者
二、固件库
1.固件库文件分类

使用特权

评论回复
7
甲虫666|  楼主 | 2023-12-21 11:56 | 只看该作者
Libraries:文件夹下是驱动库的源代码及启动文件,这个非常重要,我们要使用的固件库就在这个文件夹里面

使用特权

评论回复
8
甲虫666|  楼主 | 2023-12-21 11:56 | 只看该作者
Project:文件夹下是用驱动库写的例子和工程模板,其中那些为每个外设写好的例程对我们非常有用,我们在学习的时候就可以参考这里面的例程

使用特权

评论回复
9
甲虫666|  楼主 | 2023-12-21 11:57 | 只看该作者
stm32f10x_stdperiph_lib_um.chm:库帮助文档,这个很有用,不喜欢直接看源码的可以在合理查询每个外设的函数说明,非常详细,这是一个已经编译好的HTML文件,主要讲述如何使用驱动库来编写自己的应用程序

使用特权

评论回复
10
甲虫666|  楼主 | 2023-12-21 11:57 | 只看该作者
2.文件说明

使用特权

评论回复
11
甲虫666|  楼主 | 2023-12-21 11:57 | 只看该作者
图片来源于网络,上图中红色部分是我们新建工程需要用到的文件,下面我们简要说明一下其中的几个文件


使用特权

评论回复
12
甲虫666|  楼主 | 2023-12-21 11:57 | 只看该作者
2.1启动文件startup_stm32f10x.s
在固件库如图所示的路径下,找到启动文件startup_stm32f10x.s,我们需要选择对应芯片容量的启动文件

使用特权

评论回复
13
甲虫666|  楼主 | 2023-12-21 11:58 | 只看该作者
不同芯片对应的FLASH大小是不一样的,选择启动文件的时候,也需要按照相应芯片的FLASH选择对应的启动文件,以STM32F103RCT6芯片为例

使用特权

评论回复
14
甲虫666|  楼主 | 2023-12-21 11:58 | 只看该作者
FLASH大小为256KB,对照下表,属于中容量型芯片,所以等会新建工程的时候,我们需要添加startup_stm32f10x_hd.s文件

使用特权

评论回复
15
甲虫666|  楼主 | 2023-12-21 11:58 | 只看该作者
单片机上电后,进入startup_stm32f10x_hd.s启动文件,启动文件是用汇编写的,启动文件内定义了中断向量表,中断服务函数等。中断服务函数中有个复位中断。这就是整个程序的入口;当STM32上电复位或者按下复位键之后,程序就会进入复位中断函数执行;复位中断函数主要就做了两件事情。第一个是调用SystemInit函数,第二个是调用main函数

使用特权

评论回复
16
甲虫666|  楼主 | 2023-12-21 11:58 | 只看该作者

使用特权

评论回复
17
甲虫666|  楼主 | 2023-12-21 11:58 | 只看该作者
2.2 stm32f10x.h
这个头文件实现了片上外设的所以寄存器的映射,是一个非常重要的头文件,在内核中与之相对应的头文件是core_cm3.h。

使用特权

评论回复
18
甲虫666|  楼主 | 2023-12-21 11:59 | 只看该作者
2.3 system_stm32f10x.c
system_stm32f10x.c文件实现了STM32的时钟配置,操作的是片上的RCC这个外设。系统在上电之后,首先会执行由汇编编写的启动文件,启动文件中的复位函数中调用的SystemInit()函数就在这个文件里面定义。调用完之后,系统的时钟就被初始化成72M。如果后面我们需要重新配置系统时钟,我们就可以参考这个函数重写。

使用特权

评论回复
19
甲虫666|  楼主 | 2023-12-21 11:59 | 只看该作者
2.3 system_stm32f10x.c
system_stm32f10x.c文件实现了STM32的时钟配置,操作的是片上的RCC这个外设。系统在上电之后,首先会执行由汇编编写的启动文件,启动文件中的复位函数中调用的SystemInit()函数就在这个文件里面定义。调用完之后,系统的时钟就被初始化成72M。如果后面我们需要重新配置系统时钟,我们就可以参考这个函数重写。

使用特权

评论回复
20
甲虫666|  楼主 | 2023-12-21 11:59 | 只看该作者
Systemlnit()函数就是定义在这个文件里面,上面的brief说明了函数的功能


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

131

帖子

0

粉丝