嵌入式开发教程:如何新建STM32工程(标准库)

目录

一、初识标准库

1.CMSIS标准及库层级关系

2.库文件介绍

(1)Libraries文件夹

①CMSIS文件夹

②STM32F10x_Std_Periph_Driver文件夹

③ 在用库建立一个完整的工程时,还需要添加stm32f10x_it.c、 stm32f10x_conf.h 和 system_stm32f10x.c文件

(2)Project文件夹

(3)Utilities文件夹

3.库各文件之间的关系

二、使用帮助文档

1. 《STM32F10x-中文参考手册》

2.《STM32规格书》

3.《Cortex-M3 内核编程手册》

4. 《Cortex-M3权威指南》

三、新建工程步骤

1.在本地电脑上新建一个“工程模板”文件夹,在它之下再新建6个文件夹。

2.把准备好的库文件添加到相应的文件夹下。

3.打开keil5,新建一个工程。

(1)选择CPU型号。

(2)在线添加库文件,这里单击关闭按钮。

(3)添加组文件

  (4)添加文件。

4.配置魔术棒选项卡

5.仿真器配置

6.选择CPU型号


一、初识标准库

1.CMSIS标准及库层级关系

        基于 Cortex系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,而这些差异却导致软件在同内核、不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了 CMSIS标准(Cortex Micro Controller Software Interface Standard)。所谓 CMSIS标准,实际是新建了一个软件抽象层

CMSIS标准中最主要的是CMSIS核心层,它包括:

内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由 ARM公司提供。

• 设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。

2.库文件介绍

​​​​​​​

(1)Libraries(CMSIS和STM32F10x_Std_Periph_Driver):文件夹下是驱动库的源代码及启动文件,要使用的固件库就在这个文件夹里。
①CMSIS文件夹

1)内核相关文件

        在CoreSupport文件夹中有 core_cm3.c和 core_cm3.h 两个文件。core_cm3.h头文件里面实现了内核的寄存器映射对应外设头文件 stm32f10x.h,区别就是一个针对内核的外设,一个针对片上(内核之外)的外设。core_cm3.c文件实现了操作内核外部寄存器的函数,用得比较少。

2) 启动文件

        启动文件放在 startup/arm文件夹下,里面启动文件有很多个,不同型号的单片机用的启动文件不一样。

3)  stm32f10x.h

        这个头文件实现了片上外设的所有寄存器的映射,是一个非常重要的头文件,在内核中与之相对应的头文件是 core_cm3.h。

4) system_stm32f10x.c

        该文件实现了STM32的时钟配置,操作的是片上的RCC这个外设。系统在上电之后,首先会执行由汇编编写的启动文件,启动文件中的复位函数中调用的 System_Init 函数就在这个文件里面定义。调用完之后,系统的时钟就被初始化成72M。如果后面我们需要重新配置系统时钟,我们就可以参考这个函数重写。为了维持库的完整性,不会直接在这个文件里面修改时钟配置函数。

②STM32F10x_Std_Periph_Driver文件夹

        inc (include 的缩写)与src(source的缩写)这两个文件夹,属于CMSIS之外的、芯片片上的外设部分。src里面是每个设备外设的驱动源程序,inc则是相对应的外设头文件。src及inc文件夹是ST标准库的主要内容。

        在src和inc文件夹里的就是ST公司针对每个 STM32 外设而编写的库函数文件,每个外设对应一个.c和.h后缀的文件。我们把这类外设文件统称为 stm32f10x_ppp.c或 stm32f10x_ppp.h文件,ppp表示外设名称。

        这两个文件夹中,还有一个很特别的 misc.c文件,这个文件提供了外设对内核中的NVIC(中断向量控制器)的访问函数,在配置中断时,必须把这个文件添加到工程中

③ 在用库建立一个完整的工程时,还需要添加stm32f10x_it.c、 stm32f10x_conf.h 和 system_stm32f10x.c文件

1) stm32f10x_it.c

        这个文件是专门用来编写中断服务函数的,在我们修改前,这个文件已经定义了一些系统异常(特殊中断) 的接口,其他普通中断服务函数由我们自己添加。函数接口可以在汇编启动文件中找到。

2) system_stm32f10x.c

        这个文件包含了 STM32芯片上电后初始化系统时钟、扩展外部存储器用的函数。鉴于保持库的完整性,在做系统时钟配置的时候会另外重写时钟配置函数

3) stm32f10x_conf.h

        这个文件被包含进stm32f10x.h文件。当使用固件库编程的时候,如果需要某个外设的驱动库,就需要包含该外设的头文件:stm32f10x_ppp.h。包含一个还好,如果用了多个外设,就需要包含多个头文件,这不仅影响代码美观,而且也不好管理。现我们用一个头文件 stm32f10x_conf.h把这些外设的头文件都包含在里面,让这个配置头文件统一管理这些外设的头文件,在应用程序中只需要包含这个配置头文件即可。因为这个头文件在 stm32f10x.h 的最后被包含,所以最终我们只需要包含stm32f10x.h这个头文件即可。

(2)Project:文件夹下是用驱动库写的例子和工程模板,其中那些为每个外设写好的例程非常有用,学习的时候可以参考这里面的例程,非常全面,简直就是穷尽了外设的所有功能。
(3)Utilities:包含了基于ST官方实验板的例程,不需要用到,略过即可。

3.库各文件之间的关系

二、使用帮助文档

1. 《STM32F10x-中文参考手册》

        这个手册全方位介绍了 STM32芯片的各种片上外设,它把STM32的时钟、存储器架构,以及各种外设、寄存器都描述得清清楚楚。

2.《STM32规格书》

        本文档相当于STM32的数据手册,包含了STM32芯片所有的引脚功能说明,以及存储器架构、芯片外设架构说明。

3.《Cortex-M3 内核编程手册》

        本手册由ST公司提供,主要讲解STM32内核寄存器相关的说明,例如系统定时器、NVIC等核外设的寄存器。这部分的内容是对《STM32F10X-中文参考手册》没涉及的内核部分的补充。相对来说,本文档虽然介绍了内核寄存器,但不如以下两个文档详细,要了解内核时,可作为以下两个手册的配合资料使用。

4. 《Cortex-M3权威指南》

        这个手册是由 ARM公司提供的,它详细讲解了 Cortex内核的架构和特性,要深入了解 Cortex-M内核,这是首选。

三、新建工程步骤

1.在本地电脑上新建一个“工程模板”文件夹,在它之下再新建6个文件夹。

2.把准备好的库文件添加到相应的文件夹下。

3.打开keil5,新建一个工程。

(1)选择CPU型号。

(2)在线添加库文件,这里单击关闭按钮。

(3)添加组文件

        在新建的工程中添加5个组文件夹,用来存放各种不同的文件。文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件路径的菜单,然后选择文件即可。

  (4)添加文件。

        先把需要用到的文件从ST标准库中复制到工程模板对应文件夹的目录下,然后在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件。

4.配置魔术棒选项卡

(1)在 Output 选项卡中把输出文件夹定位到工程目录下的“Output”文件夹,如果想在编译的过程中生成hex文件,那么把Create HEX File 选项勾选上。

(2)在Listing 选项卡中把输出文件夹定位到工程目录下的“Listing”文件夹。

(3)在C/C++选项卡中添加处理宏及编译器编译时查找的头文件路径。如果头文件路径添加有误,则编译的时候会报错“找不到头文件”。

STM32F10X_HD宏:它告诉STM32标准库,我们使用的芯片类型是 STM32型号,是大容量的,使STM32标准库根据我们选定的芯片型号来配置。

USE_STDPERIPH_DRIVER 宏:让stm32f10x.h包含stm32f10x_conf.h这个头文件。

5.仿真器配置

6.选择CPU型号

        这一步的配置常常会因为各种原因需要重新选择。当下载的时候,若提示“说找不到Device”,应查看该配置是否正确。有时候下载程序之后,不会自动运行,要手动复位的时候,也要再次查看这里的 “Reset and Run”配置是否失效。因为用的STM32的 Flash大小是 512KB,所以选择512k的容量,如果使用的是其他型号的,要根据实际情况选择。

物联沃分享整理
物联沃-IOTWORD物联网 » 嵌入式开发教程:如何新建STM32工程(标准库)

发表评论