STM32标准固件库工程建立
1、从Libraries 文件夹中提取以下文件:
(1)ARM Cortex 内核文件core_cm3.c/h
(2)对应外设头文件stm32f10x.h
此文件内部封装了STM32的总线、内存和外设寄存器等,同时包含了一些时钟相关的定义和中断相关定义等。
(3)片上外设接入层系统头文件system_stm32f10x.h
此文件主要申明设置系统及总线时钟相关的函数。与其对应的源文件是 system_stm32f10x.c。.c文件里面有一个SystemInit()函数申明,这个函数在系统启动的时候都会调用,用来设置系统的整个系统和总线时钟。
(4)stm32f10x_it.c 文件
用于存放中断函数,不过中断函数也可以放在其他工程文件内,所以这个文件很少操作。
(5)stm32f10x_conf.h 文件
配置文件,用于删减我们使用的外设头文件,比如使用 GPIO 外设,那么就需要调用 stm32f10x_gpio.h 头文件,如果不使用 GPIO 外
设,可以将此头文件注释掉,一般情况下我们不会对这个配置文件操作,因为如果不使用一个外设,可以在工程内不调用即可。
(6)STM32 启动文件
根据芯片型号选择。
(7)STM32 外设驱动文件
2、库函数工程创建
2.1新建3个文件夹
pro存放工程文件,out存放输出文件,src存放源文件。
src分类建立各个目录:
User文件夹存放以下文件:
Libraries文件夹文件如下:
2.2打开keil5软件建立工程
在KEIL5 软件界面,新建一个工程,工程名命名使用英文,使用中文名可能会出现一些奇怪的错误。
2.3选择 CPU
2.4在新建的工程中添加文件
其他的外设源文件根据是否使用外设而添加,把所有的源文件都加进来也可以,只不过工程在编译的时候会比较慢,所以原则是使用到哪个外设就添加哪个外设的源文件。
2.5 配置魔术棒选项卡
编译器可选择v5
C/C++选项卡配置
因为创建的是库函数模板,所以需要在对处理器类型和库进行宏定义,在Define 这一栏中复制这两个宏:
USE_STDPERIPH_DRIVER,STM32F10X_HD
添加头文件路径
选择确定即可。
3、工程编译
3.1 编译
3.2 编译结果说明
编译结果里面的几个数据的意义:
Code:表示程序所占用 FLASH 的大小。
RO-data:即 Read Only-data,表示程序定义的常量,存储在 FLASH 内。
RW-data:即 Read Write-data,表示已被初始化的变量,存储在 SRAM 内。
ZI-data:即 Zero Init-data,表示未被初始化的变量,存储在 SRAM 内。
程序的大小不是.hex文件的大小,而是编译后的 Code 和 RO-data 之和,如上代码占用FLASH大小为:1224字节(904+320),所用SRAM大小为:1024个字节(1024+0)。
编辑 2023.03.11 22:45 首次编辑
编辑 2023.03.26 11:14 增加工程编译
注:本文旨于作为自己的学习笔记。