3.3.2 Keil-MDK的使用

更新于 2026年10月10日 版权声明
3.3.2 Keil-MDK的使用

在3.1节中,通过STM32CubeMX生成工程文件就已经完成了对工程的创建,这里直接打开文件夹中的“MDK-ARM”下的“.μision5 Project”文件就可编写程序。本小节将介绍如何通过手动方式创建一个工程文件。要以手动方式创建工程,需要下载STM32的HAL库文件,用户可以到官网下载。

1.创建工程

先创建一个文件夹,在文件夹中创建3个文件夹“MDK-ARM”“Drivers”“Core”,将HAL库文件复制到“Drivers”文件夹中,该文件夹中包含“CMSIS”(ARM Cortex-M3内核库函数)和“STM32F1xx_HAL_Driver”(外设驱动库函数)。

启动Keil-MDK,选择“Project”下拉列表中的“NEWμVision Project”选项,系统将弹出“Create New Project”(新建工程)对话框,如图3.15所示,输入新建工程的名称并保存,注意选择工程文件路径。

图示

图3.15 “Create New Project”对话框

单击“保存”按钮,弹出芯片选择对话框,在“Device”选项卡的下拉列表中选择“Software Packs”选项,在下面的列表中选择“STMicroelectronics”中的“STM32F103”中的“STM32F103 ZE”芯片,如图3.16所示。单击“OK”按钮,弹出图3.17所示的工程窗口。

图示

图3.16 选择芯片

图示

图3.17 工程窗口

编辑工程文件结构,添加HAL库文件,右击图3.17中的“Target1”选项,在弹出的快捷菜单中选择“Manage Project Items”选项,在弹出的对话框的“Project Targets”(项目目标)列表中修改工程文件名,如LED;在“Groups”(群组)列表中创建文件夹,以加载不同的文件,工程文件管理如图3.18所示。

在“MDK-ARM”中添加启动文件,可从安装文件中复制。在“STM32F1xx_HAL_Driver”中添加HAL库文件。在“CMSIS”中添加“system_stm32f1xx.c”文件,然后单击“OK”按钮,工程文件结构创建完成。

单击“File”→“NEW”选项,新建文件,然后将文件另存为扩展名为.c的文件,本例中为“LED.c”。注意文件路径,存放在“Core”文件夹下。选中工程中的“Core”文件夹,将刚刚创建的“LED.c”文件加载到工程中,另外还需要添加一个中断服务程序文件“STM32f1xx_it.c”(可从官方的工程文件中复制),工程文件图如图3.19所示。

图示

图3.18 工程文件管理

图示

图3.19 工程文件图

由于文件存放在不同的文件夹下,所以需要指定各文件的路径。选择“Project”下拉列表中的“Options for Target”选项,弹出工程属性配置对话框,在“C/C++(AC6)”选项卡中指定各文件路径,如图3.20所示。

图示

图3.20 指定各文件路径

2.编辑程序

在“LED.c”文件中编写程序,程序如下。

图示

3.编译程序(https://www.daowen.com)

程序编辑完成后,就可进行编译。首先设置文件输出格式,如图3.21所示。选择工程属性窗口单选项,勾选“Create HEX File”复选框。

图示

图3.21 设置文件输出格式

选择“Project”下拉列表中的“Build Target”选项,完成编译,如果程序有错,可修改后再编译,直到编译通过(编译通过并不意味着程序功能正确)。用户还可以选择快捷菜单完成编译,如图3.22所示。

图示

图3.22 选择快捷菜单完成编译

4.仿真与调试

Keil-MDK支持模拟仿真调试和在线仿真调试。模拟仿真调试可以通过Keil-MDK完成,在线仿真调试需要通过仿真器和实际应用项目才能完成。

(1)模拟仿真调试。

编译通过后,就可验证程序是否按功能要求正确执行。进入调试与仿真环节后,首先要在工程属性配置对话框中选择“Debug”选项卡,再选择“Use Simulator”单选项,注意参数的修改,模拟仿真设置如图3.23所示。

单击“Debug”→“Start/Stop Debug Session”选项,或者在工具栏中单击“开始/停止”按钮,进入调试状态,调试界面如图3.24所示。调试界面中有很多调试窗口,这些调试窗口可通过菜单栏中的“View”菜单打开和关闭。单片机上的外设接口调试窗口可通过菜单栏中的“Peripherals”菜单打开。

图示

图3.23 模拟仿真设置

图示

图3.24 调试界面

使用菜单栏中的“View”菜单可打开常用的“Registers Window”,这是单片机的内核寄存器窗口,常用于观察程序中寄存器的内容是否与设计程序一致。选中“Watch Window”窗口并输入相关的变量名,可观察程序运行中的变量变化。选中“Memory Window”窗口,可观察程序中涉及某存储器单元的数据。在“Address:”后输入“D:xxxxH”表示片内数据存储器,输入“X:xxxxH”表示片外数据存储器,输入“C:xxxxH”表示程序存储器。菜单栏中的“View”菜单中还有“Serial Window”(串口窗口)、“Analysis Window”(逻辑分析窗口)等,均可用于调试。

使用菜单栏中的“Peripherals”菜单可以打开“NVIC”“GPIO”“USARTS”“Timers”“SPI”等涉及STM32外设资源的调试窗口,如本例中的GPIOB接口调试窗口。

设置好相应的调试窗口后,进行程序的调试。在菜单栏中的“Debug”菜单中有“Run”(全速调试,也可按〈F5〉键实现)、“Step”(单步跟踪调试)、“Step Over”(单步运行)、“StepOut”(执行返回)、“Run to Cursos Line”(运行到光标处)、“Stop”(停止运行)、“BreakPoints”(断点调试)等选项。

在程序调试过程中,若发现程序运行与设计的功能不一样,则需要修改程序,直到功能正确为止,并且还需要再次编译。

(2)在线仿真测试。

在线仿真调试需要安装仿真器,如常用的J-Link、ST-Link仿真器。本书中使用ST-Link仿真器进行仿真调试,用户可在ST官网下载驱动程序并安装,然后在“Debug”选项卡右边的下拉列表中选择“ST-Link Debugger”选项,连接好仿真器和实际应用项目,可进入在线仿真调试,调试方法与模拟仿真调试一样。在线仿真调试设置如图3.25所示。

将调试好的程序下载到实际的应用系统中,至此就完成了STM32MCU的整个开发过程。MDK-ARM不仅适用于STM32,还适用于基于ARM Cortex内核的所有MCU,因此上述工程创建过程也适用其他芯片的开发。

图示

图3.25 在线仿真调试设置

STM32CubeMX完成对应用项目的初始化配置后,可自动生成MDK-ARM的工程文件,无须再创建工程文件,用户只需要关注应用开发即可。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)