自定义创建工程模板
在前面“C语言使用HAL库开发”章节里,体验了如何使用HAL快速开发。不同于使用汇编和寄存器开发,使用HAL库需要为工程准备许多相关文件,也就是创建HAL库的工程模板。工程模块没有统一的格式,通常是根据多年的开发经验和使用习惯总结出来的,以“5_程序源码\1_创建工程模板”为例,介绍如何一 个工程模板是如何创建的。
如图 7.1.1 所示,一个工程包含五个文件夹,一个清理脚本,一个说明文本文件。
各文件夹、文件说明如下:
- Core:存放从SDK文件夹抽取的部分可能会修改的核心文件;
- Driver: 存放用户编写的外设驱动文件;
- Main: 存放主函数文件;
- Project: 存放Keil工程文件,包含目标二进制文件;
- SDK:存放CMSIS和HAL库;
- Clean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;
- Readme.txt:该工程的说明信息;
“SDK”目录的内容来自配套资料“2_官方资料\7.0_en.stm32cubef1(官方固件包示例源码).zip”,即里 面“Drivers”目录下的“CMSIS”“STM32F1xx_HAL_Driver”。
“Core”目录的内容来自“CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xe.s”; “STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Templates\”下的“Src\system_stm32f1xx.c”、“Src\stm32f1xx_it.c”、“Inc\stm32f1xx_it.h”、“Inc\stm32f1xx_it.h”;还需要手动创建“stm32f1xx_clk.c”
和“stm32f1xx_clk.h”,这两个文件内容是一些时钟初始化,参考“1_工程模板”的工程代码。
“Driver”目录存放用户编写的外设驱动代码,比如LED灯驱动,这里示例不涉及外设,暂为空。
“Main”为存放主函数文件目录,创建“main.c”和“main.h” ,参考“1_工程模板”的工程代码。
“Project”用于存放工程文件,工程文件由创建Keil工程自动生成,这里打开Keil。
打开Keil后,点击“Project”下的“New μVision Project”,如图 7.1.2 所示。
随后在弹出的路径选择界面,选择“Project”目录,工程名字任意,假设这里为“Template”,如图 7.1.3所示。
接着在设备选择界面的搜索框输入“STM32F103ZE”,然后选择“STM32F103ZE”,点击“OK”,如图 7.1.14 所示。
随后弹出运行时环境(Run-Time Environment,RTE),目前用不到,直接选择“Cancel”,如图 7.1.5所示。
接着进入主界面,点击“工程项目管理”按钮 ,为工程添加文件,如图 7.1.6 所示。
在工程项目管理界面,有三个窗口,分别是目标工程(Project Targets)、分组(Groups)、文件(Core)。双击“Project Targets”下的“Target 1”,可修改名字,这里改为“Template”,双击“Groups”下的“Source Groups 1”,改为“Core”,如图 7.1.7 所示。
接着选中“Core”,点击“Add Files…”,接着在弹出的文件选择界面,进入“Core”目录,然后需要
修改“文件类型”下拉选择框为“All files(.)”,才能看到所有文件,如图 7.1.8 所示。
然后选中“startup_stm32f103xe.s”,点击“Add”,如此循环直至如图 7.1.9所示的五个文件全部加入“Core”。
再点击“Groups”的 新建图标,创建一个新的组,名为“Main”,如图 7.1.10 所示。
接着选中“Main”组后,点击“Add Files…”,选中“main.c”,再点击“Add”,如图 7.1.11 所示。
再点击“Groups”的 新建图标,创建一个新的组,名为“Driver”,该组没有文件,无需添加。再新
建“SDK”,加入“SDK\STM32F1xx_HAL_Driver\Src”下的几个必须文件,如图 7.1.12 所示。
按上图添加完后,点击“OK”保存,如图 7.1.14 所示。
接着进入主界面,点击“工程项目选项”按钮 ,
在弹出的窗口,选择“Target”标签,如图 7.1.16 所示。追求稳定,这里设置ARM交叉编译工具链为 “Use default compiler version 5”。“Use MicroLIB”也可以勾选上,编译出来的文件占用资源会更小,也为后面调试串口实验提供printf。再下面是Flash和RAM的起始地址和大小,与前面图 6.1.4 所示的Flash和RAM是吻合的,这里无需修改。
切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用,如图 7.1.17 所示。
再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103Xe”,分别表示使 用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不然会编译报错。最后点击“Include Paths”最右边的按钮 添加头文件,如图 7.1.18 所示。
在弹出的文件夹设置窗口,点击 按钮,依次添加如图 7.1.19 所示路径,最后点击“OK”。
切换到“Debug”标签,我们使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”,如图 7.1.20 所示。
以上全部设置完后,点击 编译,编译完后,点击 下载,出现如图 7.1.21 所示的红色下划线提示,即表示编译、烧写都正常(当前工程主函数没有任何内容,开发板无任何现象)。之后便可以,以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。
【总结】
工程模块的创建步骤如下:
- 创建相关文件夹;
- 复制CMSIS和HAL库;
- 创建“main.c/h”和“stm32f1xx_clk.c/h”;
- 创建新Keil工程;
- 添加组文件夹和工程文件;
- 配置Keil设置
百问网技术论坛:
http://bbs.100ask.net/
百问网嵌入式视频官网:
https://www.100ask.net/index
百问网开发板:
淘宝:https://100ask.taobao.com/
天猫:https://weidongshan.tmall.com/
技术交流群(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
QQ群:869222007(已满)752871361
单片机-嵌入式Linux交流群:
QQ群:536785813
转载:https://blog.csdn.net/thisway_diy/article/details/115521408