【STM32学习笔记3】stm32标准库工程模板搭建

前言

本系列文章统一围绕STM32F103C8T6最小系统开发板进行记录,如涉及其他开发板将会特别说明。

新建标准库工程目录

工程目录创建

一个标准的stm32库工程目录包含以下内容:


标准stm32库工程目录

其中:

  • Doc:用来存放程序说明的文件,由写程序的人添加
  • Libraries:包含两个子目录CMSIS和FWlib。
    • CMSIS:存放与Cortex-M3内核相关的文件,如STM32的启动文件,内核文件等。
    • FWlib:存放stm32外设驱动文件,包含inc(头文件)和src(源文件)两个子目录。
  • Listing:存放编译器编译时候产生的C/汇编/链接的列表清单。
  • Output:存放编译产生的调试信息、hex 文件、预览信息、封装库等。
  • Project:用于存放工程文件。
  • User:用于存放的main.c、stm32f10x.h 头文件、 stm32f10x_conf.h配置文件、stm32f10x_it.c和stm32f10x_it.h中断函数文件,以及用户编写的驱动文件。

固件库文件移植

CMSIS

在stm32官方固件库中找到下列文件:

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

此处应根据开发板型号进行选择,如STM32F103C8T6为中等型号产品,故选择startup_stm32f10x_md.s文件。

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

将上述文件拷贝至CMSIS目录下:

\stm32_template\Libraries\CMSIS

FWlib

将stm32外设驱动文件拷贝至FWlib目录下:

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
\stm32_template\Libraries\FWlib

User

将下列文件拷贝至User目录下:


\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
\stm32_template\User

至此,标准库工程模板已完成搭建。

标准库工程文件结构

新建工程

在Keil5中新建一个工程,保存在上述Project/目录下。

1.选择设备型号

根据芯片型号选择对应的选项:


芯片型号选择


2. 创建组文件夹并添加文件

点击上方Manage Project items按钮,如图所示创建组文件夹:


创建组文件夹

找到对应文件,并将其添加至对应的文件夹下:

目录名 存放的文件 添加文件路径
STARTUP startup_stm32f10x_md.s \stm32_template\Libraries\CMSIS
CMSIS 与Cortex-M3内核相关的文件 \stm32_template\Libraries\CMSIS
FWlib 系统外设驱动文件(源文件) \stm32_template\Libraries\FWlib\src
USER main.c,stm32f10x_it.c \stm32_template\User
PERIPH 外设驱动文件(如LED、BEEP等外设) 暂无
BSP 板级支持包驱动文件 暂无
DOC 工程说明文件 \stm32_template\Doc

3. “魔法棒”配置

点击“魔法棒”按钮,进行如下配置:


  1. 添加宏定义USE_STDPERIPH_DRIVER
    这里的宏配置对全局生效
    image.png

只有USE_STDPERIPH_DRIVER宏被定义了之后,才会在stm32f10x.h文件中包含stm32f10x_conf.h文件,进而包含系统外设驱动文件的头文件,如下图所示:

stm32f10x.h

stm32f10x_conf.h

  1. 添加头文件路径
    此外,我们还需要在此处将工程所使用到的头文件的绝对路径添加进来,包括用户自己写的头文件:
    image.png

    添加头文件路径
  1. MicroLIB选项
    MicroLIB
  • MicroLIB是KEIL自带的简易库
  • 如使用printf函数,会从串口1输出字符串,直接默认定向到串口1
  • MicroLIB是缺省C库的备选库。它用于必须在极少量内存环境下运行的深层嵌入式应用程序。这些应用程序不在操作系统中运行
  • MicroLIB不会尝试成为符合标准的ISOC库,MicroLIB进行了高度优化以使代码变得很小。它的功能比缺省C库少,并且根本不具备某些ISOC特性。某些库函数的运行速度也比较慢,例如memcpy()
  1. 输出hex可执行文件
    如果需要通过串口ISP方式烧录程序,则需要指定hex可执行文件生成路径为Output文件夹,并勾选“Create HEX File”选项。

    image.png

  2. 添加链接路径
    指定链接路径为Listing文件夹。

    添加链接路径

资源

stm32官方固件库:https://pan.baidu.com/s/1B0tswmMOoqYDUClkc3ZG2g 提取码:9rgh

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容