1)实验平台:正点原子APM32E103最小系统板
2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban
在上一章的内容中简单介绍了Geehy标准库,本章将详细讲解使用Geehy标准库创建MDK工程的步骤,本章创建好的MDK工程存放路径为A盘4,程序源码标准例程实验0 基础入门实验实验0-2 新建工程实验-标准库版本,读者在创建工程时若遇到问题,可打开该工程进行对比。
本章分为如下几个小节:
7.1 Geehy标准库版本MDK工程创建
7.2 下载验证
在开始进行工程创建前,要求读者提前做好如下准备:
①:获取到Geehy提供的APM32E10x_SDK(参考第六章)
②:搭建好开发环境(参考第三章)
Geehy标准库版本MDK工程的创建可分为四个步骤,如下:
①:构建工程文件夹
②:添加文件到工程目录
③:创建MDK工程
④:配置MDK工程
7.1.1 构建工程文件夹
构建工程文件夹前需要先确定工程文件夹结构,建议初学者使用本书配套实验例程工程的文件夹结构,该工程文件夹结构也是正点原子所有实验例程的工程文件夹结构,读者可任意打开一个本书配到的实验例程根目录,如下图所示:
图7.1.1.1 工程文件夹结构
该工程文件夹结构清晰,其中各个子文件夹的作用如下表所示:
表7.1.1.1 工程子文件夹介绍
接下来,就按照上面介绍的工程文件夹结构构件工程文件夹,如下图所示:
图7.1.1.2 构建工程文件夹
上图中还另外添加了keilkill.bat的脚本文件和readme.txt文本文件,其中keilkill.bat脚本文件用于清除工程文件夹中编译工程产生的中间文件,方便工程的存档和传输,readme.txt文本文件主要是对该工程的描述,包括工程功能、使用的硬件资源等信息。
7.1.2 添加文件到工程目录
在该步骤中,涉及了五个文件夹,如下:
①:Drivers文件夹
Drivers文件夹用于存放与硬件相关的驱动文件,如下表所示:
表7.1.2.1 Drivers文件夹介绍
其中CMSIS、Device和APM32E10x _StdPeriphDriver都可以从APM32E10x _SDK中获取;而SYSTEM文件夹是正点原子提供的系统级核心驱动代码,主要提供了系统时钟初始化、延时、串口收发等基础功能,读者可在本书配套的任意一个实验例程中获取到该文件夹;BSP文件夹为开发板板级支持包驱动代码,在初次创建工程时留空即可,在后续的实验中会逐渐完善BSP文件夹。
添加好文件的Drivers文件夹,如下图所示:
图7.1.2.1 Drivers文件夹
②:Middlewares文件夹
Middlewares文件夹用于存放正点原子提供的中间组件(USMART、MALLOC等)和第三方中间组件(FatFs、FreeRTOS等)在初次创建工程时,并不会用到这些中间组件,因此留空即可。
③:Output文件夹
Output文件夹用户存放MDK工程编译后产生的二进制文件和编译过程文件等,这些文件均由MDK软件在进行工程编译的时候产生,留空即可。
④:Projects文件夹
Projects文件夹主要用于存放MDK的工程文件,在Projects文件夹中创建一个MDK-ARM的空文件夹,用于下文创建MDK工程时,存放MDK的工程文件,如以下图所示:
图7.1.2.2 Projects文件夹
⑤:User文件夹
User文件夹用于存放用户编写的应用代码,例如main.c等,main.c文件中提供了main()函数(必须有该函数),对于初次创建的工程,可以从“实验0-2 新建工程实验-标准库版本”的工程中复制。另外,在该文件夹下还会存放apm32e10x_int.c和apm32e10x_int.h这两个文件,这两个文件主要是用于管理程序中的中断服务函数,这两个文件直接从“实验0-2新建工程实验-标准库版本”的工程中复制即可。
添加好文件的User文件夹,如下图所示:
图7.1.2.3 User文件夹
7.1.3 创建MDK工程
在完成了以上两大步骤后,接下来可以开始创建MDK工程了,首先打开MDK软件,依次点击菜单栏中的ProjectNew uVision Project,如下图所示:
图7.1.3.1 新建MDK工程
随后在弹出的窗口中选择工程文件的保存路径和工程文件名,如下图所示:
图7.1.3.2 保存工程文件
点击保存后,会弹出选择设备的窗口,其实就是选择所使用的MCU型号,这里选择GeehyAPM32E1 SeriesAPM32E103APM32E103ZE,如下图所示:
图7.1.3.3 选择MCU型号
正确选择MCU型号并点击“OK”按钮后,会弹出RTE(Run Time Environment,运行时环境,由MDK提供)的管理窗口,本文配套的所有实验例程均不使用RTE,点击窗口下方的“Cancel”按钮关闭窗口即可。
至此,就能看到MDK工程的一个雏形了,如下图所示:
图7.1.3.4 MDK工程雏形
7.1.4 配置MDK工程
配置MDK工程主要就是为工程添加一些源码文件,以及对MDK工程进行一些配置等。
在添加源码文件之前,先创建一些分组,使工程的结构更加清晰明了。点击工具栏上的按钮打开工程项目管理窗口,在工程项目管理窗口中可以管理工程目标名和项目分组,按照下图所示,需改工程目标名并创建几个项目分组,如下图所示:
图7.1.4.1 工程项目管理窗口
上图中共创建了五个项目分组,但还未向分组中添加项目文件,接下来分别介绍各个项目分组中应该添加那些项目文件。
①:Startup项目分组
Startup用于存放启动文件,对于APM32E103ZE型号的MCU,其启动文件的路径为DriversDeviceGeehyAPM32E10xSourcearmstartup_apm32e10x_hd.s,添加项目文件后的Startup项目分组,如下图所示:
图7.1.4.2 Startup项目分组
②:User项目分组
User主要用于存放用户的应用代码及其相关的文件,如下图所示:
图7.1.4.3 User项目分组
main.c文件的路径为Usermain.c;
apm32e10x_int.c文件的路径为Userapm32e10x_int.c;
system_apm32e10x.c文件的路径为DriversDeviceGeehyAPM32E10xSource system_apm32e10x.c。
③:Drivers/SYSTEM项目分组
Drivers/SYSTEM用于存放SYSTEM文件夹中的C源文件,如下图所示:
图7.1.4.4 Drivers/SYSTEM项目分组
sys.c、delay.c和usart.c文件的路径均在Drivers/SYSTEM文件夹中。
③:APM32E10x_StdPeriphDriver项目分组
APM32E10x_StdPeriphDriver用于存放Geehy标准库中的C源文件,如下图所示:
图7.1.4.5 APM32E10x _StdPeriphDriver项目分组
这部分的文件可以按需添加,以减少工程的编译时间,但对Geehy标准库还不太了解的读者,全部添加即可。Geehy标准库C源文件的路径为APM32E10x _StdPeriphDriver/src。
⑤:Readme项目分组
Readme用于存放工程根目录下的readme.txt文本文件,如下图所示:
图7.1.4.6 Readme项目分组
至此,项目文件基本添加完毕,后续读者应根据实际需求再往工程中添加所需的项目文件。
接下来点击工具栏上的按钮,打开Options for Target窗口,首先可以看到Target选项卡中的ARM Compiler默认选择了“Use default compiler version 6”即AC6,由于APM32E10x _SDK并不支持AC6,因此要将该选项修改为“Use default compiler version 5”即AC5,如下图所示:
图7.1.4.7 Target选项卡
接着是Output选项卡,点击“Select Folder for Objects…”按钮指定编译输出的文件保存路径为工程根目录下的Output文件夹中,再勾选“Create HEX File”使工程成功编译后生成Hex文件,方便后续通过串口烧录程序,如下图所示:
图7.1.4.8 Output选项卡
接着是Listing选项卡,点击“Select Folder for Listing…”按钮指定map等文件的输出目录为根文件夹下的Output文件夹,如下图所示:
图7.1.4.9 Listing选项卡
接着是User选项卡,默认情况下,MDK软件会在工程成功编译后自动进入调试模式,若想禁用该功能,则取消勾选Start Debugging复选框即可,如下图所示:
图7.1.4.10 User选项卡
接着是C/C++选项卡,为了正常使用Geehy标准库在Define编辑框中添加“APM32E10X_HD”的全局共定义,再接着就是通过在Include Paths中添加头文件路径,如下图所示:
图7.1.4.12 添加头文件路径
再接着就是与调试相关的配置,若读者需使用仿真器进行调试,请参考第4.3小节使用DAP烧录及调试程序。
至此,一个最基础的基于Geehy标准库的MDK工程就创建好了,读者可以打开main.c文件查看本工程实现的功能,如下图所示:
图7.1.4.13 main.c文件
可以看到,在main()函数中先进行了一些基本的初始化工作(主要是初始化系统时钟、延时功能和串口),接着在一个while循环中重复通过串口输出“Hello, APM32E103\r\n”字符串。
接下来点击工具栏中的按钮尝试编译工程,若编译无误,则说明工程创建成功了,若有错误,建议读者仔细根据本小节的内容再好好检查一下创建的工程。
7.2 下载验证
在前面的章节中,介绍了通过串口(4.2 使用串口烧录程序)和仿真器(4.3.1 使用DAP烧录程序)的方式烧录程序,两种方式烧录程序的结果都是一样的,但仿真器使用起来更加方便,且还具有调试功能,因此从本小节开始,都将使用仿真器进行程序烧录。
点击MDK软件上方工具栏上的按钮进行程序烧录,程序烧录成功后,按照3.4小节的描述将开发板的USB_UART接口通过USB数据线与PC进行连接,随后打开PC端的串口调试助手(推荐使用ATK-XCOM,该软件可在A盘6,软件资料1,软件串口调试助手软件(ATK-XOMC)下找到),选择对应的COM口并按下图配置好串口参数后点击“打开串口”按钮,随后便能看到串口调试助手不断输出“Hello, APM32E103”字符串,如下图所示:
图7.2.1 串口输出结果