Keil环境配置及stm32程序的仿真调试

本文详细介绍了如何在Windows10环境下配置KeilμVision5,安装MDK531和STM32库,创建并调试STM32F103C8的工程。内容涵盖Keil的安装、STM32库的安装、新建工程步骤以及HEX文件的分析。此外,还讲解了如何设置Keil进行软件仿真,并在没有硬件设备的情况下进行程序调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要叙述Keil的环境配置,stm32库的安装,使用keil编写简单的程序、hex的简单分析及程序的仿真调试。

系统环境:Windows 10

本文主要使用的软件:Keil μVision5、

Keil的环境配置

1.Keil的介绍

keil公司是一家业界领先的微控制器软件开发工具的独立供应商。keil公司于2005年被ARM公司收购。keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。keil μVision就是一个IDE,类似于C\C++语言的Visual C++、Dev C++,python的pycharm、jave的eclipse、IntelliJ IDEA等,当keil μVision的功能不止于此,是连接硬件和软件的“桥梁”。

2.MDK531的安装

下面简单介绍一下keil μVision5的安装。

mdk软件可以在Keil的官网上面下载。以MDK531为例,首先右键安装程序,以管理员身份运行安装程序。
在这里插入图片描述
进入到程序安装的界面,点击Next
在这里插入图片描述
勾选I agree to all the terms of the preceding License Agreement,然后点击Next
在这里插入图片描述
点击Browse按钮,可以分别更改Core、Pack的安装目录。其中Pack是安装的包的位置,我这里选择的是D盘目录下的位置。
在这里插入图片描述
接下我们要选择安装这个设备软件(可以选择不安装,自己另行安装),点击安装按钮。
在这里插入图片描述之后继续点击Next按钮即可。
安装完成Keil后,Keil会弹出一个窗口,用于包的安装。由于不同芯片需要的环境不相同,所以需要安装相对应的包来适应相对应的芯片。如stm32f1XX芯片,就需要安装Keil.STM32F1xx_DFP.2.1.0.pack。由于这个程序是访问境外的网站来下载相应的包,所以下载速度缓慢,我们可以安装已经下好的包。下面介绍一下stm32f1XX系列的包的安装。

3.stm32库的安装

右键Keil.STM32F1xx_DFP.2.1.0.pack,以管理员身份运行,点击Next,等待安装即可。
在这里插入图片描述
注意,Keil软件需要激活使用,否则部分功能无法正常使用,具体请自行搜索。

在Keil中创建stm工程

首先创建文件夹test(建议目录中不要含有中文),keil工程会产生很多其他的文件,建议单独创建文件夹来存放keil工程文件。打开Keil μVision5,依次点击Project->New μVision Project…。
在这里插入图片描述
选择我们刚刚创建的文件夹。
在这里插入图片描述
输入工程名,点击保存(S)。
在这里插入图片描述
接下来选择单片机的芯片,这里以stm32f103c8芯片为例,依次选择STMicroelectronics->STM32F1 Series->STM32F103->STM32F103C8,读者请根据自己的芯片自行选择。
在这里插入图片描述
在Manage Run-Time Environment界面,勾选CMSIS下的CORE和Device下的StartUp。因为需要有启动程序,来使单片机芯片可以正常执行我们编写的代码。
在这里插入图片描述
点击Target1左边的+号,右键Source Group 1,添加新的文件,点击Add New Item to Group ‘Source Group 1’…。
在这里插入图片描述
这里以汇编文件为例(结尾为s),点击文件类型,然后输入文件名,最后点确定。
在这里插入图片描述
在空白文件中输入以下代码(此代码来源自网络,如有侵权请联系我删除)。

 AREA MYDATA, DATA
	
 AREA MYCODE, CODE
	ENTRY
	EXPORT __main

__main
	MOV R0, #10
	MOV R1, #11
	MOV R2, #12
	MOV R3, #13
	;LDR R0, =func01

	BL	func01
	;LDR R1, =func02
	BL	func02
	
	BL 	func03
	LDR LR, =func01
	LDR PC, =func03
	B .
		
func01
	MOV R5, #05
	BX LR
	
func02
	MOV R6, #06
	BX LR
	
func03
	MOV R7, #07
	MOV R8, #08	
	BX LR

依次点击1(编译)、2(构建),没有报错,说明程序正常。
在这里插入图片描述

Keil程序的仿真调试

分析Hex文件

hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。我们可以将hex烧录进单片机(串口烧录),这是一种最原始的烧录方式。在编译程序前,我们需要简单设置一下keil来生成hex文件。点击“魔法棒”或者在Project目录下选择Options for Target…(快捷键Alt+F7)。
在这里插入图片描述
在这里插入图片描述
点击Output菜单,勾选Create HEX File
在这里插入图片描述
接着在主窗口再次编译工程,此时便可以生成HEX文件。在工程目录下,打开Objects文件夹,找到hex结尾的文件,使用记事本打开HEX文件,如下图。
在这里插入图片描述

第一行数据:020000040800F2,其实质表达的是十六进制的数据0x02 0x00 0x00 0x04 0x08 0x00
0xF2。第一个字节 0x02表示本行数据的长度;第二、三字节 0x00 0x00表示本行数据的起始地址;第四字节
0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。

  • ‘00’ Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
  • ‘01’ End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾
  • ‘02’ Extended Segment Address Record: 用来标识扩展段地址的记录
  • ‘03’ Start Segment Address Record:开始段地址记录
  • ‘04’ Extended Linear Address Record: 用来标识扩展线性地址的记录
  • ‘05’ Start Linear Address Record:开始线性地址记录

4.然后是数据,0x08 0x00

5.最后一个字节 0xf2为校验和。

[1]

具体可以参考一下CSDN上hex文件说明这篇文章,这里不做过多叙述。

常见问题

本实验在没有外接单片机的条件下调试,所以我们需要设置一下keil。点击“魔法棒”或者在Project目录下选择Options for Target…。再点击Debug菜单,我们需要勾选Use Simulator。由于本次实验采用软件仿真,所以勾选此选项可以直接使用keil来实现软件仿真。如果读者有设备可以选择JLink或者STLink来进行仿真。接下来,需要修改Dialog DLL的内容,本次仿真实验采用是STM32F103C8芯片,所以在Dialog栏填写DARMSTM.DLL,在Parameter栏填写了-pSTM32F103C8。
在这里插入图片描述

Keil程序的仿真

在确保已经构建的情况下,点击Start/Stop Debug Session(Ctrl+F5)按钮进行调试。该按钮可以在菜单栏找到,或者在Debug菜单下,第一个点击第一个菜单项。
在这里插入图片描述
在这里插入图片描述
建议设置断点以观察在执行main函数时,寄存器发生的变化。(断点设置可以采用在代码行的左边用鼠标左键单击的方法)
在这里插入图片描述

结尾

在了解ARM、Keil、stm32后,下一步便是使用硬件来进行实验。接下来笔者将使用采用了stm32f103c8t6芯片的最小系统板来进行相关实验,敬请期待。
"> 最后一次编辑为2021年9月27日

### 如何使用 Keil 配置非默认支持的其他芯片 当需要在 Keil 中配置未被默认支持的芯片型号时,可以通过以下方式实现完整的环境搭建: #### 芯片支持包的获取与安装 为了使 Keil 支持新的芯片型号,首先需要下载并安装对应的 **设备支持包 (Device Support Pack)**。这些支持包通常由芯片厂商提供,并通过 Keil 的在线更新功能或者手动下载的方式完成安装[^2]。 - 如果目标芯片不在当前版本的支持列表中,则需访问芯片制造商官网查找最新的支持包。 - 安装完成后,在 Keil 工程创建过程中可以选择新增加的芯片型号作为目标硬件平台[^3]。 #### 创建针对指定芯片的新工程项目 一旦成功添加所需的芯片到可用选项列表之后,就可以按照常规流程建立一个新的工程文件: 1. 打开 Keil μVision 并点击菜单栏中的 `Project -> New Project` 来初始化一个空白项目; 2. 在弹出对话框输入保存路径以及名称确认后进入下一步选择微控制器界面; 3. 利用搜索功能定位之前导入的目标MCU系列及其具体变体号(例如 STM32F103C8T6),双击选定它即可加载相应的预定义参数集[^1]。 #### 自定义闪存布局调整 对于某些特殊需求场景下可能还需要进一步修改内部存储器映射关系以适配实际应用情况下的地址分配策略。这一步骤涉及到编辑 Linker Script 文件来重新规划ROM区域大小以及其他资源分布状况。 以下是用于设置自定义链接脚本的一个简单例子: ```c /* Memory Configuration */ MEMORY { ROM (rx) : ORIGIN = 0x08000000, LENGTH = 128K /* Adjust according to your MCU's Flash size */ } /* Section Placement into Memories */ SECTIONS { .text : { *(.vectors) *(.text*) } > ROM } ``` #### 添加必要的启动代码及相关库函数 最后别忘了将适合所选用处理器架构类型的startup.s汇编源码加入进来,并依据官方文档指示正确连接标准外设驱动程序接口以便简化后续开发工作量。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值