STM32工程文件的建立

  • 1. 解压STM32官方库
  • 2. 建立启动文件夹Libraries。
    • 2.1 内核寄存器描述文件
    • 2.2 外设寄存器描述文件、配置时钟文件
  • 3. 建立输出文件夹Output。
  • 4. 建立工程文件夹Project。
  • 5. 建立工程文件夹User。
  • 6. Keil里的相关配置。
    • 6.1 新建工程时,要将工程放置在Project文件夹当中。
    • 6.2 在Target 1的文件夹下新建STARTUP文件夹。
    • 6.3 在Target 1的文件夹下新建CMSIS文件夹。
    • 6.4 在Target 1的文件夹下新建FWLB文件夹。
    • 6.5 在Target 1的文件夹下新建User文件夹。
    • 6.6 添加头文件路径。
    • 6.7 调试下载配置
  • 7. 基本设置
  • 8. 修改工程名
  • 9. 修改芯片
  • 10. 注释风格

本文以STM32F103ZET6的芯片为例,适用于STM32F1系列的所有芯片及其他类型的芯片,以库函数开发的形式来进行开发工作。

1. 解压STM32官方库

在ST官网- Search STMicrocontrollers (stmicroelectronics.com.cn)寻找STSW-STM32054:STM32F10x standard peripheral library。

2. 建立启动文件夹Libraries。

在文件夹中新建一个Libraries的文件夹,在该文件夹下新建两个文件夹:CMSIS文件夹和外设的头文件和源文件。

将下述两种文件添加到CMSIS文件夹当中。

2.1 内核寄存器描述文件

【STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport】中的core_cm3.c和core_cm3.h两个文件

注:STM32F10x_StdPeriph_Lib_V3.6.0为下载的官方库函数文件

下载方式见上文的 1. 解压STM32官方库

2.2 外设寄存器描述文件、配置时钟文件

【STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x】中的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h这三个文件以及startup文件夹里面的arm文件夹。

将下面的2个文件夹添加到外设的头文件和源文件当中。

【STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver】中的inc和src两个文件夹。

效果如下:
Libraries文件夹

CMSIS文件夹

3. 建立输出文件夹Output。

该文件夹放置输出的所有文件,初始化不用设置。

4. 建立工程文件夹Project。

该文件夹放置工程的所有文件,初始化不用设置。

5. 建立工程文件夹User。

在文件夹新建User的文件夹将存放主函数Main,同时将以下文件复制到User当中。

【STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template】的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h这三个文件。

效果如下:
User文件夹

【main.c文件在工程中创建】

以上从官方库复制的文件均要设置为:只读

以上从官方库复制的文件均要设置为:只读

以上从官方库复制的文件均要设置为:只读

总效果如下:


6. Keil里的相关配置。

6.1 新建工程时,要将工程放置在Project文件夹当中。

  1. 点击菜单栏中的Project,然后点击New uVision Project,然后取名
  2. 选择芯片,接下来弹出的窗口点击取消即可

6.2 在Target 1的文件夹下新建STARTUP文件夹。

在Target 1的文件夹下新建STARTUP文件夹

然后右击STARTUP文件夹,选择“添加已经存在的文件”

点击“向上一级”的按钮

依次进入Libraries文件夹、CMSIS文件夹、startup文件夹、arm文件夹,文件类型选择All files(“.”)

然后选择合适的.s的文件【启动文件只能有一个】对应型号如下表:

缩写 释义 Flash容量 型号
LD_VL 小容量产品超值系列 16~32K STM32F100
MD_VL 中容量产品超值系列 64~128K STM32F100
HD_VL 大容量产品超值系列 256~512K STM32F100
LD 小容量产品 16~32K STM32F101/102/103
MD 中容量产品 64~128K STM32F101/102/103
HD 大容量产品 256~512K STM32F101/102/103
XL 加大容量产品 大于512K STM32F101/102/103
CL 互联型产品 - STM32F105/107

6.3 在Target 1的文件夹下新建CMSIS文件夹。

在Target 1的文件夹下新建CMSIS文件夹

右击CMSIS文件夹,选择“添加已经存在的文件”,点击“向上一级”的按钮后,依次进入Libraries文件夹、CMSIS文件夹,添加core_cm3.c和system_stm32f10x.c文件

6.4 在Target 1的文件夹下新建FWLB文件夹。

在Target 1的文件夹下新建FWLB文件夹

右击FWLB文件夹,选择“添加已经存在的文件”,点击“向上一级”的按钮后,依次进入Libraries文件夹、src文件夹,添加该文件夹下的所有文件【不能添加其他的文件夹】

6.5 在Target 1的文件夹下新建User文件夹。

在Target 1的文件夹下新建User文件夹

右击User文件夹,选择“新建新文件”;

选择C文件,名称为:main

路径选择创建的User文件夹【手动更改】


创建好后插入头文件:#include “stm32f10x.h” 【可右击创建】,main函数的最后一行为空行【不然会报警告】。

​然后右击User文件夹选择“添加已经存在的文件”,点击“向上一级”的按钮后,依次进入User文件夹,选择stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h这三个文件

需要在Options for Target中的C/C++的Define中添加“USE_STDPERIPH_DRIVER, STM32F10X_HD”字符串才能包含标准外设库函数

具体步骤如下:

  1. 点击魔术棒–Options for Target按钮
  2. 点击菜单栏中的C/C++,在Define中添加

    注:其中的"STM32F10X_HD"根据不同的启动文件来进行修改,具体选择见上文关于启动文件的表格

6.6 添加头文件路径。

在Options for Target中的C/C++的Include Paths栏点击右边的三个点,将文件夹User、CMSIS以及外设的头文件的路径添加进来。


6.7 调试下载配置

在Options for Target中的Debug中的Use:选择ST-Link Debugger

然后点击右边的Settings按钮

在Flash Download勾选Reset and Run【下载程序后立马复位并执行】。

7. 基本设置

  1. 在Options for Target中的Output勾选Create HEX File
  2. 在Options for Target中的Output中点击Select Folder for Objects按钮,选择输出文件夹Output
  3. 需要在Options for Target中的C/C++的Define中添加USE_STDPERIPH_DRIVER, STM32F10X_HD
  4. 在Options for Target中的Target页面将ARM Compiler设置为Use default compiler version 5,此时,定义变量要放在函数起始位置【不能在函数中间新建变量】
  5. 在Options for Target中的C/C++中勾选C99 Mode【勾选后定义变量的位置随意,不勾选定义变量的位置必须在开头】
  6. 在Configuration中的Editor页面将Encoding设置为Chinese GB2312(Simplified)【支持中文】
  7. 在Configuration中的Colors&Fonts页面将C/C++ Editor files中的Text位置为12号字体【方便看代码】

8. 修改工程名

  1. 删除工程文件夹下带有原工程名的文件;
  2. 打开Keil,进入该工程,点击品字形图标(箱子图标),在弹出的界面上,双击“Project Targets”下面的工程名,修改成xxxx【新工程名】
  3. 在Options for Target中的Output标签下的Name of Executeable中的名称改为xxxx【新工程名】
  4. 将Project文件夹中的.uvprojx文件重命名为xxxx【新工程名】.uvprojx

9. 修改芯片

  1. 在Options for Target中的Device选择新的芯片
  2. 由于芯片容量不同, 判断启动文件是否需要更改
  3. 由于启动文件、芯片容量不同,需要在Options for Target中的C/C++的Define中判断STM32F10X_HD是否需要更改

10. 注释风格

注释 说明
@brief 对函数简要说明
@ref 引用,参照
@defgroup 用于添加define分组
@param 参数说明
@arg 参量枚举
@note 注释
@retval 返回值说明

STM32工程文件的建立以及Keil软件的基本设置和修改相关推荐

  1. 【STM32学习笔记】(4)—— STM32工程文件详解

    STM32工程文件构成 从下图可以看出我们的工程目录是由CORE.OBJ.STM32F10x_FWLib.USER.SYSTEM以及HARDWARE文件夹组成的.此外还有一个文本文档README.TX ...

  2. keil5新建STM32工程文件--实践篇手把手教学(以STM32F103为例)

    目录 一.文件与文件夹创建 1.1 CMSIS文件夹创建 1.2 FWLIB文件夹创建 1.3 Project文件夹创建 1.4 startup文件夹创建 1.5 user文件夹创建 1.6 read ...

  3. java eclipse导入工程文件_如何在Eclipse软件中导入Java工程文件

    有些在学习Java编程的用户虽然会创建工程,但是对于怎么导入工程文件却不清楚,下面这篇教程我们就来为大家介绍一下,在Eclipse软件中导入Java工程文件的方法,有兴趣的朋友就来了解一下吧. 解决方 ...

  4. STM32工程文件组成结构

    STM32工程文件目录结构 以LED流水灯程序为例 1.CMSIS[内核驱动程序]:包含c文件,ST公司官方提供的,对arm内核和mcu系统的基础文件,一般不做修改. 2.LIB[内部功能的基本函数库 ...

  5. keil建立stm32工程即标准库函数目录结构

    建立keil stm32工程文件 1. 标准库函数目录结构 需要分清库函数和keil的pack包,前者是ST公司对ST系列芯片编写的库函数,其中包括芯片的的启动文件和外设配置函数文件,后者是Keil ...

  6. 【STM32学习笔记】(5)—— STM32工程添加源文件和头文件

    向工程目录里创建头文件和源文件 STM32的工程文件构成较为复杂,同时为STM32工程文件添加源文件和头文件也是较为复杂的,下面就由此文章来介绍怎么给STM32工程添加源文件(.c)与头文件(.h), ...

  7. keil5中新建一个STM32工程

    前言 相信很多stm32的初学者对于创建一个新的工程还是感觉比较困难的,即使学习了一段时间的stm32,创建一个新工程还是会感到无所适从.相信大家在学习stm32之初都是把整个例程工程文件copy下来 ...

  8. X-ray重金属检测仪工程文件的自动格式转换

    X-ray重金属检测仪工程文件的自动格式转换 一.问题背景 仪器简介 二.解决思路 脚本实现 总结 一.问题背景 仪器简介   这个小巧的机器就是重金属检测仪,看似方便实则对试验员来说及其不方便的仪器 ...

  9. Focusky教程 | 如何解决双击工程文件后提示文件不存在的问题?

    (Focusky动画演示大师简称为"FS软件")保存工程文件到桌面,关闭软件后,再双击打开文件时,却提示文件不存在了.此时可以通过两种方法解决这一问题. 方法一: 打开软件,点击主 ...

最新文章

  1. CentOS 7.8升级gcc-8.2
  2. AI学术大地震---YOLO之父退出CV界,以此来反对AI算法用于军事和隐私窥探
  3. vc编程中出现 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h”?...
  4. Activity的启动过程(源码API27)
  5. VLDB 2021 EAB最佳论文:深度解析机器学习的基数估计为何无法实现?
  6. RxJs map operator 工作原理分析
  7. Redis-集群监控之Redis monitor
  8. 数据库连接串你知道多少
  9. python八大排序算法 间书_Python 八大排序算法速度比较
  10. selenium+python自动化106 - 滑动 iframe 上的滚动条
  11. Unity自动设置keystore密匙库的信息
  12. 学校计算机桌子尺寸,电脑书桌尺寸多少合适?看完解决所有困惑!
  13. Go channel 通道
  14. 白盒测试——循环测试
  15. pyhanlp 共性分析与短语提取内容详解
  16. 【郭东白架构课 模块一:生存法则】05|法则二:研发人员的人性需求是如何影响架构活动成败的?
  17. GStreamer基础教程10——GStreamer工具
  18. 高新技术企业代办费用多少?
  19. 使用tdd构建golang Web 应用(4)
  20. metasploit中msf框架以及更新

热门文章

  1. 《面试官不讲武德》对Java初级程序猿死命摩擦Http协议
  2. 实验八 Python文件处理
  3. 2018年第一周APP黑马榜单
  4. gdal gdal2tiles.py 的使用
  5. 重新认识受控和非受控组件
  6. Linux系统中使用vim编写C语言代码实现过程
  7. 农行网上银行交电费痛苦经历
  8. C++打卡4-宝箱密码
  9. SLO 和 SLI的最佳实践
  10. 日语日常信函书信写作范文(6篇)