本帖最后由 正点原子运营 于 2024-3-21 17:04 编辑
1)实验平台:正点原子 M144Z-M3 STM32F103最小系统板
2) 章节摘自【正点原子】M144Z-M3最小系统板使用指南——STM32F103版
6)正点原子STM32技术交流QQ群:725095144
在上一章的内容中简单介绍了HAL库,本章将详细讲解使用HAL库创建MDK工程的步骤,本章创建好的MDK工程存放路径为A盘à4,程序源码à标准例程à实验0 基础入门实验à实验0-2 新建工程实验-HAL库版本,读者在创建工程时若遇到问题,可打开该工程进行对比。 本章分为如下几个小节: 7.1 HAL库版本MDK工程创建 7.2 下载验证
7.1 HAL库版本MDK工程创建 HAL库版本MDK工程的创建可分为四个步骤,如下: ①:构建工程文件夹 ②:添加文件到工程目录 ③:创建MDK工程 ④:配置MDK工程 7.1.1 构建工程文件夹 构建工程文件夹前需要先确定工程文件夹结构,建议初学者使用本书配套实验例程工程的文件夹结构,该工程文件夹结构也是正点原子所有实验例程的工程文件夹结构,读者可任意打开一个本书配到的实验例程根目录,如下图所示: 该工程文件夹结构清晰,其中各个子文件夹的作用如下表所示: 接下来,就按照上面介绍的工程文件夹结构构件工程文件夹,如下图所示: 上图中还另外添加了keilkill.bat的脚本文件和readme.txt文本文件,其中keilkill.bat脚本文件用于清除工程文件夹中编译工程产生的中间文件,方便工程的存档和传输,readme.txt文本文件主要是对该工程的描述,包括工程功能、使用的硬件资源等信息。 7.1.2 添加文件到工程目录 在该步骤中,涉及了五个文件夹,如下: ①:Drivers文件夹 Drivers文件夹用于存放与硬件相关的驱动文件,如下表所示: 其中CMSIS和STM32F1xx_HAL_Driver都可以从STM32CubeF1中获取;而SYSTEM文件夹是正点原子提供的系统级核心驱动代码,主要提供了系统时钟初始化、延时、串口收发等基础功能,读者可在本书配套的任意一个实验例程中获取到该文件夹;BSP文件夹为开发板板级支持包驱动代码,在初次创建工程时留空即可,在后续的实验中会逐渐完善BSP文件夹。 添加好文件的Drivers文件夹,如下图所示: ②:Middlewares文件夹 Middlewares文件夹用于存放正点原子提供的中间组件(USMART、MALLOC等)和第三方中间组件(FatFs、FreeRTOS等)在初次创建工程时,并不会用到这些中间组件,因此留空即可。 ③:Output文件夹 Output文件夹用户存放MDK工程编译后产生的二进制文件和编译过程文件等,这些文件均由MDK软件在进行工程编译的时候产生,留空即可。 ④:Projects文件夹 Projects文件夹主要用于存放MDK的工程文件,在Projects文件夹中创建一个MDK-ARM的空文件夹,用于下文创建MDK工程时,存放MDK的工程文件,如以下图所示: ⑤:User文件夹 User文件夹用于存放用户编写的应用代码,例如main.c等,main.c文件中提供了main()函数(必须有该函数),对于初次创建的工程,可以从“实验0-2 新建工程实验-HAL库版本”的工程中复制。另外,在该文件夹下还会存放stm32f1xx_hal_conf.h、stm32f1xx_it.c和stm32f1xx_it.h这三个文件,其中stm32f1xx_hal_conf.h文件主要用于配置HAL库,其他两个文件主要是用于管理程序中的中断服务函数,这三个文件直接从“实验0-2 新建工程实验-HAL库版本”的工程中复制即可。 添加好文件的User文件夹,如下图所示: 7.1.3 创建MDK工程 在完成了以上两大步骤后,接下来可以开始创建MDK工程了,首先打开MDK软件,依次点击菜单栏中的ProjectàNew uVision Project,如下图所示: 随后在弹出的窗口中选择工程文件的保存路径和工程文件名,如下图所示: 点击保存后,会弹出选择设备的窗口,其实就是选择所使用的MCU型号,这里选择STMicroelectronicsàSTM32F1 SeriesàSTM32F103àSTM32F103ZE,如下图所示: 正确选择MCU型号并点击“OK”按钮后,会弹出RTE(Run Time Environment,运行时环境,由MDK提供)的管理窗口,本文配套的所有实验例程均不使用RTE,点击窗口下方的“Cancel”按钮关闭窗口即可。 至此,就能看到MDK工程的一个雏形了,如下图所示: 7.1.4 配置MDK工程 配置MDK工程主要就是为工程添加一些源码文件,以及对MDK工程进行一些配置等。 在添加源码文件之前,先创建一些分组,使工程的结构更加清晰明了。点击工具栏上的
按钮打开工程项目管理窗口,在工程项目管理窗口中可以管理工程目标名和项目分组,按照下图所示,需改工程目标名并创建几个项目分组,如下图所示: 上图中共创建了五个项目分组,但还未向分组中添加项目文件,接下来分别介绍各个项目分组中应该添加那些项目文件。 ① :Startup项目分组 Startup用于存放启动文件,对于STM32F103VE型号的MCU,其启动文件的路径为DriversàCMSISàDeviceàSTàSTM32F1xxàSourceàTemplatesàarmàstartup_stm32f103xe.s,添加项目文件后的Startup项目分组,如下图所示: ②:User项目分组 User主要用于存放用户的应用代码及其相关的文件,如下图所示: main.c文件的路径为Useràmain.c; system_stm32f1xx.c文件的路径为DriversàCMSISàDeviceàSTàSTM32F1xxàSourceàTemplatesàsystem_stm32f1xx.c; stm32f1xx_it.c文件的路径为Useràstm32f1xx_it.c。 ③:Drivers/SYSTEM项目分组 Drivers/SYSTEM用于存放SYSTEM文件夹中的C源文件,如下图所示: 图7.1.4.4 Drivers/SYSTEM项目分组 sys.c、delay.c和usart.c文件的路径均在Drivers/SYSTEM文件夹中。 ④:Drivers/STM32F1xx_HAL_Driver项目分组 Drivers/STM32F1xx_HAL_Driver用于存放HAL库中的C源文件,如下图所示: 图7.1.4.5 Drivers/STM32F1xx_HAL_Driver项目分组 这部分的文件可以按需添加,以减少工程的编译时间。HAL库C源文件的路径为Drivers/STM32F1xx_HAL_Driver/src。 ⑤:Readme项目分组 Readme用于存放工程根目录下的readme.txt文本文件,如下图所示: 至此,项目文件基本添加完毕,后续读者应根据实际需求再往工程中添加所需的项目文件。 接下来点击工具栏上的
按钮,打开Optionsfor Target窗口,首先可以看到Target选项卡中的ARM Compiler默认选择了“Use default compiler version 6”即AC6,由于STM32F1xx_SDK并不支持AC6,因此要将该选项修改为“Usedefault compiler version 5”即AC5,如下图所示: 接着是Output选项卡,点击“Select Folder for Objects…”按钮指定编译输出的文件保存路径为工程根目录下的Output文件夹中,再勾选“Create HEX File”使工程成功编译后生成Hex文件,方便后续通过串口烧录程序,如下图所示: 接着是Listing选项卡,点击“Select Folder for Listing…”按钮指定map等文件的输出目录为根文件夹下的Output文件夹,如下图所示: 接着是User选项卡,默认情况下,MDK软件会在工程成功编译后自动进入调试模式,若想禁用该功能,则取消勾选StartDebugging复选框即可,如下图所示: 接着是C/C++选项卡,为了正常使用HAL库在Define编辑框中添加“USE_HAL_DRIVER”和“STM32F103xE”的全局宏定义,再接着就是通过在Include Paths中添加头文件路径,如下图所示: 再接着就是与调试相关的配置,若读者需使用仿真器进行调试,请参考第4.3小节使用DAP烧录及调试程序。 至此,一个最基础的基于HAL库的MDK工程就创建好了,读者可以打开main.c文件查看本工程实现的功能,如下图所示: 可以看到,在main()函数中先进行了一些基本的初始化工作(主要是初始化系统时钟、延时功能和串口),接着在一个while循环中重复通过串口输出“Hello,M144Z-M3 STM32F103\r\n”字符串。 接下来点击工具栏中的
按钮尝试编译工程,若编译无误,则说明工程创建成功了,若有错误,建议读者仔细根据本小节的内容再好好检查一下创建的工程。
7.2 下载验证 点击MDK软件上方工具栏上的
按钮进行程序烧录,程序烧录成功后,便可通过串口调试助手(推荐使用ATK-XCOM,该软件可在A盘à6,软件资料à1,软件à串口调试助手软件(ATK-XOMC)下找到)看到USART1不断输出“Hello, M144Z-M3 STM32F103”字符串,如下图所示: |