STM32F103 Keil 库函数工程创建
- 标准库下载
ST官网下载标准库可参考该文章- 创建库函数工程所需要标准库文件及说明如下图所示:
- 创建库函数工程所需要标准库文件及说明如下图所示:
- 创建工程需要的文件夹并添加文件
-
创建一个存放整个工程的文件夹,命名为Project_STD;(名字可以任意取,但不要包含中文)
-
在该文件夹下创建6个文件夹,各个文件夹的作用如下所示:
名称 作用 Doc 存放程序的说明文件,由编写程序的人添加 Libraries 存放标准库相关的文件; Listing 存放编译器生成的列表文件(.lst)和.map文件。列表文件包含了源代码、汇编代码以及编译后的机器代码之间的对应关系;.map文件列出了程序中所有符号(如函数和变量)的地址分配; Output 存放编译和链接后的目标文件(.o文件)、库文件(.lib文件)、可执行文件(.hex) Project 存放keil工程文件 User 存放用户编写的文件
- 在Libraries文件夹下创建CMSIS文件夹,在CMSIS文件夹下创建CoreSupport文件夹和DeviceSupport文件夹。之后将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport文件夹下的core_cm3.c和core_cm3.h复制到Libraries\CMSIS\CoreSupport文件夹下。
- 将解压后的标准库StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm文件夹下的startup_stm32f10x_hd.s复制到Libraries\CMSIS\DeviceSupport文件夹下。
【不同型号的单片机的启动文件夹不一样,关于启动文件的选择参考下图】
- 将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h复制到Libraries\CMSIS\DeviceSupport文件夹下;
- 在Libraries文件夹下创建STM32F10x_StdPeriph_Driver文件夹
- 将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver文件夹下的inc和src文件夹复制到Libraries\STM32F10x_StdPeriph_Driver文件夹下;
- 将解压后的标准库STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template文件夹下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h复制到User文件夹下;
- 打开Keil5,新建工程
- Project—》New uVison Project…—》存放在Project文件夹下;
- 选择单片机型号:STMicroelectronics/STM32F1 Series/STM32F103/STM32F103ZE;
- 在线添加组件,keil的服务器在国外,在线添加很慢,关闭。我们之后在本地手动添加库文件;
- 在keil5中添加文件组并把文件添加到keil工程中
-
添加文件组STARTUP、CMSIS、STDLIB、USER、DOC;
-
把Libraries\CMSIS\DeviceSupport下的启动文件添加到STARTUP组;
-
把Project_STD\Libraries\CMSIS\CoreSupport下的core.c、Projects\Project_STD\Libraries\CMSIS\DeviceSupport下的system_stm32f10x.c添加到CMSIS组;
-
把Project_STD\Libraries\STM32F10x_StdPeriph_Driver\src下的所有.c文件添加到STDLIB组;
-
把stm32f10x_it.c和main.c添加到USER组;
- 配置魔术棒选项卡
-
勾选Target选项卡中的"Use MciroLib";把编译器版本改为version 5;如果选择version6,需要把core_cm3.c从工程中移除,具体操作如下所示:
complier version 6和complier version 5的区别- complier version5的编译速度较慢,变量必须定义在函数开头;
- complier version6的编译速度更快,变量定义可以不放在函数开头;但使用complier version6时,需要把core_cm3.c文件从工程中移除;具体操作如下所示:
-
在Output选项卡中把输出文件夹定位到Project_STD\Output下;并勾选Create HEX File;
-
在Listing选项卡中把输出文件夹定位到Project_STD\Listing下;
-
在C/C++选项卡中添加处理宏STM32F10X_HD, USE_STDPERIPH_DRIVER、编译器查找的头文件路径;
-
把下面的内容复制到mai.c中,点击编译按钮即可;
#include "stm32f10x.h" // Device header int main(void) { }