一、教程简介
本节教程主要是介绍程序开发的工程模板,在源码文件里面,提供了官方的工程模板,但是对我个人而言,我还是喜欢做一个自己喜欢的工程模板来用,这一节对我的工程模板进行介绍,仅供参考,后期所有的程序开发全部在此模板上面进行,详见如下介绍。
二、模板介绍
1、工程文件
在凌智君的工程模板下面共分为11个文件夹,每一个文件都有自己独特的作用,相互之间不产影响,层次清晰。

图1 工程根目录文件夹
(1)CMSIS文件夹
这个文件夹主要是存放GD32f10x 的系统文件和内核文件,一般是固定的这几个文件,不会变动,后续开发过程中,如果需要添加会单独介绍。


图2 系统文件
(2)Delay文件夹
这个文件夹主要是存放延时函数,虽然GD32F103的系统文件有专门定义的延时函数(在systick.c文件中),可以通过修改变量实现不同的延时,如图所示,但是在一些开发过程中,为了方便,我们需要根据项目需求自己定义延时函数,所以这个文件夹主要是存放这类延时函数的,关于这个延时函数的定义方式,在后续教程中会进行详细讲解。

图3 系统延时函数
(3)HardWare文件夹
这个文件主要存放一些硬件驱动的定义,在后续开发过程中,我们会使用到各种传感器以及提醒设备,例如LED、蜂鸣器、温湿度传感器、霍尔传感器以及激光雷达等等,关于这些硬件的驱动方式在后续开发过程中会一一讲解,现在只需要了解每个文件夹存放的文件即可。
(4)HeaderFiles文件夹
这个文件主要是放头文件,不要误以为是存在所有文件的头文件,凌智君在玩51单片机的时候,就有一个习惯,喜欢将所有的头文件都定义到一个.h 文件中,这样在其他文件中使用的时候,不需要写很多头文件,只要一个就可以解决,具体定义方式后期会专门讲解。

图4 自定义头文件
(5)Implement文件夹
这个文件夹主要是存放执行文件,在一个正式产品工程项目中,主函数中不会写太多的东西,都是专门定义在另外一个文件中,当然这可能也是个人习惯,凌智君有这样的习惯,喜欢定义在其他地方,这种方式仅供参考,选择适合自己的定义方式。

图5 执行文件
(6)Library文件夹
这个文件夹主要是存放官方提供的库文件,可以根据自己需要添加库文件,也可以一次性全部添加进去,全部添加进去有一个不好地方,编译速度会变慢,凌智君喜欢一次性添加进去,这样就不用每次都要考虑要不要添加,或者编译出现问题了,各种怀疑库文件是不是没加全等。其中Include文件夹是存放.h头文件的,source是存放.c源文件的。

图5 库文件

图6 库文件头文件


图7 库文件源文件
(7)project文件夹
这个文件夹是存放工程文件的,打开工程的文件就存放在这里,以及一些编译和调试产生的文件,这个文件一般不用修改,唯一需要修改地方就是工程的名字,根据自己的需要进行修改。

图8 工程文件
(8)Protocol文件夹
这个文件夹是存放通讯协议的文件夹,在这个教程中会讲解串口、CAN总线、485、韦根等通讯协议,以及一些WiFi、NRF2401等通讯方式,这个文件夹会存放这个驱动及协议,具体请见后期教程。
(9)Readme文件夹
这个文件夹主要是存放对每个工程文件的一个简单介绍,以及相关的注意事项,建议每次打开一个工程之前,都先看这个文件夹,内容很重要。

图9 提示文件
(10)Startup文件夹
这个文件是存放系统启动文件,尽量不要修改,至少凌智君没有修改过。
(11)User文件夹
这个文件夹主要是存放一些中断、主函数、系统时钟等文件,这里面文件一般不会增加,只有根据项目需求修改文件里面的内容。

图10 中断及时钟文件

三、本章总结
以上是凌智君对工程模板的讲解,可能有些地方讲解不到,或者讲解不清楚的地方欢迎指正,本教程主要是针对零基础开发者,如果有开发经验的,此章节可以忽略,创作不易,严禁商用,仅供个人学习使用。

淘宝链接:
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-13627328884.10.19e2550aPRKWUh&id=663637756893
(GD32F103基础学习开发板 核心板 提供例程及指导教程)

凌智君的联系方式如下:
QQ:

2228398717

微信:

微信公众号:

GD32F103基础教程—工程模板(二)相关推荐

  1. 预定义类型未定义或导入_LimeSurvey基础教程(二)——问题类型

    在上一讲中,我们主要介绍了LimeSurvey的历史.功能.结构以及使用场景,其中就提到"20种以上题型,可自由运用".从某种意义上来说,调查就是由一系列的问题(类型)所组成,所以 ...

  2. SQL语句的基础教程(二)

    SQL语句的基础教程(二) 开发工具与关键技术:Visual Studio 2015 .SQL语句的基础教程(二) 作者:袁何恩 撰写时间:2019年6月16日 今天,我接着上次的内容和大家分享的技术 ...

  3. matlab最基础教程(二):变量类型与赋值

    matlab最基础教程(二):变量类型与赋值 前言:matlab解决问题的最基本思路是建立脚本文件,那么脚本文件的第一段就是定义一些变量,这和C语言等编程思想是一样的.matlab提供的变量类型很多, ...

  4. CorelDRAW 10基础教程(二)(转)

    CorelDRAW 10基础教程(二)(转)[@more@]    1 定制自己的操作界面 象其它的一些图形处理软件一样.CorelDRAW 10 也为用户提供了很多的工具,为了避免诸如调色板中.工具 ...

  5. AI绘图软件分享:Midjourney 基础教程(二)

    大家好,我是权知星球,今天继续给大家介绍AI绘图软件分享:Midjourney 基础教程(二) ⼀.Midjourney 服务器介绍 1.Discord 软件介绍 Midjourney AI 绘画服务 ...

  6. DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(1/5)

    目录 1.前言 1.1.一些感慨 1.2.运行效果展示 1.3.示例简介 1.4.示例操作说明 1.5.本章内容的简述 2.什么是IBL 2.1."Cook-Torrance" 模 ...

  7. DirectX12(D3D12)基础教程(二十二) ——HDR IBL 等距柱面环境光源加载和解算及 GS 一次性渲染到 CubeMap

    前序文章目录 DirectX12(D3D12)基础教程(一)--基础教程 DirectX12(D3D12)基础教程(二)--理解根签名.初识显存管理和加载纹理.理解资源屏障 DirectX12(D3D ...

  8. GD32F103基础教程—GPIO输出实验(五)

    一.教程简介 本章主要是讲解GPIO输出实验,讲解GPIO的输出配 置方法,并控制LED2灯实现间隔1s闪烁. 二.实验流程 1.工程配置 (1)首先在工程模板目录下的HardWare文件夹内创建文件 ...

  9. GD32F103基础教程—跑马灯实验(六)

    一.教程简介 本章主要是讲解多路GPIO输出实验,及相关GPIO输 出配置方法,并控制LED2和LED3灯实现间隔1s闪烁. 二.实验流程 1.工程配置 跑马灯工程配置方法与第五章的配置方法一致,具体 ...

最新文章

  1. 用jsp实现右导航窗格_不想升级操作系统,可以用这三种方法阻止Windows10更新
  2. python为什么运行慢_为什么你写的Python运行的那么慢呢?
  3. ​每日一皮:​你的Frozen Throne...
  4. python 重复采样,不重复采样
  5. Burst trie(爆炸式字典树)解读
  6. MariaDB [Warning] Could not increase number of max_open_files to more than 1024
  7. Kubernetes容器集群 - harbor仓库高可用集群部署说明
  8. js 实现轻量ps_简单轻量的池实现
  9. 运行时vs编译时类路径
  10. 12人类为什么有战争
  11. c语言,期末复习之求多项式分式数列 1+1/2+2/3+3/5 ...........前n项和
  12. 95-10-045-启动-LogDirFailureChannel
  13. XPS数据分析问题收集及解答
  14. mac 如何安装hp laserjet m1136驱动
  15. Java网络编程net-1-地址-1
  16. 一个野生程序员的真实自述:我是如何从数学专业学渣入坑程序员的
  17. linux主目录下的文件夹改回英文
  18. icloud验证失败连接服务器时出现问题,登录 iCloud 提示验证失败连接到服务器时出现问题怎么办及苹果iPhone手机安装两个微信教程...
  19. What Is a Testable Hypothesis?
  20. 阿里云IoT投入智物智造战略 三年赋能10亿设备改造10万家数字工厂

热门文章

  1. 四旋翼无人机学习第12节--跨页连接符的标号设置、DRC、PDF导出
  2. 加载组件Already included file name ‘e:/Vuejs/组件/单文件组件/vue_test/src/components/Message.vue‘ differs from
  3. 中儒集团董事长朱宝先生一行到访亚信总部!
  4. 通过内网连接GaussDB
  5. linux怎么抓带vlan的包,如何抓取 带VLAN tag的包
  6. HTMLCSS简单学习,看这篇就够了!
  7. 利用有道翻译Api实现英文翻译功能
  8. vue2+electron 给大家说个相声
  9. Doxygen 安装使用
  10. 题解 P3588 [POI2015]PUS