OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 844|回复: 0

《M144Z-M3最小系统板使用指南——STM32F103版》第七章 HAL库版本MDK工程创建

[复制链接]

1117

主题

1128

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4667
金钱
4667
注册时间
2019-5-8
在线时间
1224 小时
发表于 2024-3-22 16:09:42 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2024-3-21 17:04 编辑

第七章 HAL库版本MDK工程创建
1)实验平台:正点原子 M144Z-M3 STM32F103最小系统板

2) 章节摘自【正点原子】M144Z-M3最小系统板使用指南——STM32F103版


4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boar ... _mini_sysboard.html

5)正点原子官方B站:https://space.bilibili.com/394620890

6)正点原子STM32技术交流QQ群:725095144

155537c2odj87vz1z9vj6l.jpg

155537nfqovl2gg9faaol9.png

在上一章的内容中简单介绍了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 构建工程文件夹
构建工程文件夹前需要先确定工程文件夹结构,建议初学者使用本书配套实验例程工程的文件夹结构,该工程文件夹结构也是正点原子所有实验例程的工程文件夹结构,读者可任意打开一个本书配到的实验例程根目录,如下图所示:                                 
image001.png
图7.1.1.1 工程文件夹结构
该工程文件夹结构清晰,其中各个子文件夹的作用如下表所示:
QQ截图20240321170059.png
表7.1.1.1 工程子文件夹介绍
接下来,就按照上面介绍的工程文件夹结构构件工程文件夹,如下图所示:
image003.png
图7.1.1.2 构建工程文件夹
上图中还另外添加了keilkill.bat的脚本文件和readme.txt文本文件,其中keilkill.bat脚本文件用于清除工程文件夹中编译工程产生的中间文件,方便工程的存档和传输,readme.txt文本文件主要是对该工程的描述,包括工程功能、使用的硬件资源等信息。
7.1.2 添加文件到工程目录
在该步骤中,涉及了五个文件夹,如下:
①:Drivers文件夹
Drivers文件夹用于存放与硬件相关的驱动文件,如下表所示:
QQ截图20240321170109.png
表7.1.2.1 Drivers文件夹介绍
其中CMSIS和STM32F1xx_HAL_Driver都可以从STM32CubeF1中获取;而SYSTEM文件夹是正点原子提供的系统级核心驱动代码,主要提供了系统时钟初始化、延时、串口收发等基础功能,读者可在本书配套的任意一个实验例程中获取到该文件夹;BSP文件夹为开发板板级支持包驱动代码,在初次创建工程时留空即可,在后续的实验中会逐渐完善BSP文件夹。
添加好文件的Drivers文件夹,如下图所示:   
image005.png
图7.1.2.1 Drivers文件夹
②:Middlewares文件夹
Middlewares文件夹用于存放正点原子提供的中间组件(USMART、MALLOC等)和第三方中间组件(FatFs、FreeRTOS等)在初次创建工程时,并不会用到这些中间组件,因此留空即可。
③:Output文件夹
Output文件夹用户存放MDK工程编译后产生的二进制文件和编译过程文件等,这些文件均由MDK软件在进行工程编译的时候产生,留空即可。
④:Projects文件夹
Projects文件夹主要用于存放MDK的工程文件,在Projects文件夹中创建一个MDK-ARM的空文件夹,用于下文创建MDK工程时,存放MDK的工程文件,如以下图所示:     
image007.png
图7.1.2.2 Projects文件夹
⑤: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文件夹,如下图所示:
image009.png
图7.1.2.3 User文件夹
7.1.3 创建MDK工程
在完成了以上两大步骤后,接下来可以开始创建MDK工程了,首先打开MDK软件,依次点击菜单栏中的ProjectàNew uVision Project,如下图所示:
image011.png
图7.1.3.1 新建MDK工程
随后在弹出的窗口中选择工程文件的保存路径和工程文件名,如下图所示:
image013.png
图7.1.3.2 保存工程文件
点击保存后,会弹出选择设备的窗口,其实就是选择所使用的MCU型号,这里选择STMicroelectronicsàSTM32F1 SeriesàSTM32F103àSTM32F103ZE,如下图所示:
image015.png
图7.1.3.3 选择MCU型号
正确选择MCU型号并点击“OK”按钮后,会弹出RTE(Run Time Environment,运行时环境,由MDK提供)的管理窗口,本文配套的所有实验例程均不使用RTE,点击窗口下方的“Cancel”按钮关闭窗口即可。
至此,就能看到MDK工程的一个雏形了,如下图所示:  
image017.png
图7.1.3.4 MDK工程雏形
7.1.4 配置MDK工程
配置MDK工程主要就是为工程添加一些源码文件,以及对MDK工程进行一些配置等。
在添加源码文件之前,先创建一些分组,使工程的结构更加清晰明了。点击工具栏上的 image019.png 按钮打开工程项目管理窗口,在工程项目管理窗口中可以管理工程目标名和项目分组,按照下图所示,需改工程目标名并创建几个项目分组,如下图所示:
image020.png
图7.1.4.1 工程项目管理窗口
上图中共创建了五个项目分组,但还未向分组中添加项目文件,接下来分别介绍各个项目分组中应该添加那些项目文件。
①    :Startup项目分组
Startup用于存放启动文件,对于STM32F103VE型号的MCU,其启动文件的路径为DriversàCMSISàDeviceàSTàSTM32F1xxàSourceàTemplatesàarmàstartup_stm32f103xe.s,添加项目文件后的Startup项目分组,如下图所示:
image022.png
图7.1.4.2 Startup项目分组
②:User项目分组
User主要用于存放用户的应用代码及其相关的文件,如下图所示:
image024.png
图7.1.4.3 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源文件,如下图所示:
image026.png
图7.1.4.4 Drivers/SYSTEM项目分组
sys.c、delay.c和usart.c文件的路径均在Drivers/SYSTEM文件夹中。
④:Drivers/STM32F1xx_HAL_Driver项目分组
Drivers/STM32F1xx_HAL_Driver用于存放HAL库中的C源文件,如下图所示:
image028.png
图7.1.4.5 Drivers/STM32F1xx_HAL_Driver项目分组
这部分的文件可以按需添加,以减少工程的编译时间。HAL库C源文件的路径为Drivers/STM32F1xx_HAL_Driver/src。
⑤:Readme项目分组
Readme用于存放工程根目录下的readme.txt文本文件,如下图所示:
image030.png
图7.1.4.6 Readme项目分组
至此,项目文件基本添加完毕,后续读者应根据实际需求再往工程中添加所需的项目文件。
接下来点击工具栏上的 image032.png 按钮,打开Optionsfor Target窗口,首先可以看到Target选项卡中的ARM Compiler默认选择了“Use default compiler version 6”即AC6,由于STM32F1xx_SDK并不支持AC6,因此要将该选项修改为“Usedefault compiler version 5”即AC5,如下图所示:
image033.png
图7.1.4.7Target选项卡
接着是Output选项卡,点击“Select Folder for Objects…”按钮指定编译输出的文件保存路径为工程根目录下的Output文件夹中,再勾选“Create HEX File”使工程成功编译后生成Hex文件,方便后续通过串口烧录程序,如下图所示:
image035.png
图7.1.4.8Output选项卡
接着是Listing选项卡,点击“Select Folder for Listing…”按钮指定map等文件的输出目录为根文件夹下的Output文件夹,如下图所示:
image037.png
图7.1.4.9 Listing选项卡
接着是User选项卡,默认情况下,MDK软件会在工程成功编译后自动进入调试模式,若想禁用该功能,则取消勾选StartDebugging复选框即可,如下图所示:
image039.png
图7.1.4.10 User选项卡
接着是C/C++选项卡,为了正常使用HAL库在Define编辑框中添加“USE_HAL_DRIVER”和“STM32F103xE”的全局宏定义,再接着就是通过在Include Paths中添加头文件路径,如下图所示:
image041.png
图7.1.4.11 C/C++选项卡
image043.png
图7.1.4.12 添加头文件路径
再接着就是与调试相关的配置,若读者需使用仿真器进行调试,请参考第4.3小节使用DAP烧录及调试程序。
至此,一个最基础的基于HAL库的MDK工程就创建好了,读者可以打开main.c文件查看本工程实现的功能,如下图所示:
image045.png
图7.1.4.13main.c文件
可以看到,在main()函数中先进行了一些基本的初始化工作(主要是初始化系统时钟、延时功能和串口),接着在一个while循环中重复通过串口输出“Hello,M144Z-M3 STM32F103\r\n”字符串。
接下来点击工具栏中的 image047.png 按钮尝试编译工程,若编译无误,则说明工程创建成功了,若有错误,建议读者仔细根据本小节的内容再好好检查一下创建的工程。

7.2 下载验证
点击MDK软件上方工具栏上的 image048.png 按钮进行程序烧录,程序烧录成功后,便可通过串口调试助手(推荐使用ATK-XCOM,该软件可在A盘à6,软件资料à1,软件à串口调试助手软件(ATK-XOMC)下找到)看到USART1不断输出“Hello, M144Z-M3 STM32F103”字符串,如下图所示:
image049.png
图7.2.1 串口输出结果
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 05:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表