小言_互联网的博客

STM32自定义创建工程模板

279人阅读  评论(0)

自定义创建工程模板

在前面“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”添加外设驱动程序,进行开发。

【总结】
工程模块的创建步骤如下:

  1. 创建相关文件夹;
  2. 复制CMSIS和HAL库;
  3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;
  4. 创建新Keil工程;
  5. 添加组文件夹和工程文件;
  6. 配置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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场