Keil MDK仿真/调试实战教程:正点原子STM32 nano开发板使用指南

1. DEBUG简介 

        MDK的功能很强大,其中的Debug功能既可以调试也包含仿真的能力,还可以配合各种调试器使用,如 DAP、J-Link 、ST_Link等。这些调试器提供了更强大的硬件仿真功能,能够实现对单片机的实时调试和性能分析。

        软件仿真(Use Simulator)是纯软件模拟,它不依赖实际的硬件设备,是Keil MDK 的一项强大的功能,可以在计算机上对程序进行模拟运行,不用接开发板,只要有开发环境就可以进行程序的调试和验证,如查看数字量输出或模拟量曲线、查看定时时间、模拟外部中断等,还可以性能分析、逻辑分析等,能够对程序的执行时间、资源使用情况等进行分析和模拟,帮助开发者评估程序的性能。优点是不受硬件设备的限制,通过软件算法对单片机的指令执行、寄存器状态、内存操作等进行模拟计算,或者做一些算法和逻辑的验证。软件仿真缺点是无法完全模拟硬件的真实特性和环境,如硬件的延时、干扰、功耗等因素,可能会导致仿真结果与实际运行情况存在一定的偏差。对于一些需要硬件支持的功能,如外设的驱动、传感器的数据采集等,软件仿真无法进行模拟。

        硬件调试(Use ST – Link Debugger)有时也称为在线仿真,它需要使用实际的开发板和仿真器(如ST_Link)来进行调试。开发工具可以实时监控和控制目标硬件的运行状态,追踪变量值、寄存器的状态变化,查看程序中变量的值以及内存中的数据,判断代码结构是否合理,对程序进行调试和验证。可以对硬件外设的驱动、传感器的数据采集等功能进行调试,确保硬件和软件的协同工作正常。缺点是成本较高,需要购买开发板、仿真器等硬件设备,增加了开发成本。如果硬件出现故障或损坏,会影响调试工作的进行。同时,硬件的连接和配置也比较复杂,需要一定的硬件知识和技能。nano开发板已经集成了仿真器,可以不受限制的体硬件调试。

        区分使用软件仿真和硬件仿真的方法,在Debug选项卡中:

        在MDK中点工具栏上的魔法棒,打开的Debug选项卡,选中①的 “Use Simulator”再进行仿真,进行的是软件仿真,选中②的ST-Link Debugger再点开始仿真的就是硬件调试。

2. 调试仿真设置

        在开始软件仿真之前,先检查一下配置是不是正确,在MDK 里面点击魔法棒,确定 Target 选项卡内容如图所示:

        确认了芯片以及外部晶振频率(8.0Mhz)之后,基本上就确定了 MDK5.23 软件仿真的硬件环境了,接下来,我们再点击 Debug 选项卡,设置为如图 所示:

         选择Run to main( ),即开始仿真的时候直接跳转到main函数开始仿真。

        Debug选项卡中的Dialog DLL中要填写的是用于在调试过程中提供特定对话框功能的动态链接库(Dynamic Link Library,DLL),分别为DARMSTM.DLL 和 TARMSTM.DLL,Parameter 均为:-pSTM32F103RB,这是用于设置支持STM32F103RB 的软硬件仿真。 最后点击 OK,完成设置。

        在 Keil MDK 开发环境中,DARMSTM.DLL 和 TARMSTM.DLL 都是与意法半导体(ST)的 ARM 微控制器相关的动态链接库(DLL),DARMSTM.DLL 主要用于在 Keil 的仿真环境中模拟 STM32 系列微控制器的硬件外设行为,TARMSTM.DLL 主要用于现实中对 STM32 系列微控制器的硬件调试功能。不同型号的单片机这个参数是不同的,可以查找用户手册、技术指南等文档。STM32单片机使用KEIL开发环境时已经装了器件包,所以Keil中也能找到,打开File->Device Database:

        在Search对话框内输入芯片型号,选中左侧中间框中出现的芯片型,最下面的对框内会出现芯片信息,信息最后有我们要找的内容。

3. 仿真工具条

        在Keil主界面点击工具栏上的跳转到仿真界面,可以发现,Built工具条变为Debug工具条,如g下图 所示的工具条:

        Keil 开发环境中,Debug 工具条是进行程序调试的重要工具,包含了一系列常用的调试操作按钮,在我们仿真的时候是非常有用的,以下是对其主要按钮的介绍:

        再次单击在主界面点击会退出仿真返回主界面。仿真的设置完成,实际的仿真操作内容在后续的章节结合具体实验讲解。

4. 提示

        退出仿真前,要点击工具栏上的清除所有断点后再退出。

        断点在程序运行过程中会占用一定的系统资源,比如内存空间等。当设置了多个断点后这些资源会一直被占用直,如果退出仿真时不清除断点,这些被占用的资源可能无法被系统及时释放,从而导致系统资源管理出现混乱,引发各种难以预料的问题。不清除断点直接退出仿真不一定会立即导致程序出错,但的确会增加程序在后续操作中出错的风险,最常见的问题是出现以下提示窗口:

        “encountered an improper argument” 意思是 “遇到了一个不恰当的参数”,出现这个提示最简单的处理方法是选择 “任务管理器”,在 “进程” 选项卡中找到Keil,选中后点击 “结束任务” 按钮。

(仿真与调试的实例,请关注后续……………………….)

作者:咔哩咔啦

物联沃分享整理
物联沃-IOTWORD物联网 » Keil MDK仿真/调试实战教程:正点原子STM32 nano开发板使用指南

发表回复