嵌入式_Keil (MDK - ARM) 的调试步骤

这篇具有很好参考价值的文章主要介绍了嵌入式_Keil (MDK - ARM) 的调试步骤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 编译 + 调试

2. 复位 + 全速运行

3. 单步调试

4. 逐步调试

5. 跳出调试

6. 运行到光标处

7. 跳转到暂停行

8. 调试窗口


首先为什么需要在 MDK 中进行程序的调试呢?

        在 MDK 中进行程序调试的主要目的是识别和解决程序中的问题和错误。

        比如说找到程序中的逻辑错误。错误的条件判断、循环问题或错误的算法实现。通过观察和分析程序在调试器中的执行过程,可以确定程序执行的路径是否符合预期,从而找到潜在的逻辑错误。

       同时可以观察程序在执行过程中变量值的变化。这对于检查变量是否包含正确的数据是非常有用的。通过在程序中设置断点并使用调试工具查看变量的值,可以确保程序在运行时正确的操作变量。

        同时调试可以帮忙识别有关内存的问题。比如说内存泄露、非法内存访问或栈溢出。

        优化性能。可以通过调试程序,了解程序的性能瓶颈和效率问题。识别并找到导致程序效率低下的部分。使用调试信息和性能分析工具来优化代码,以改善程序的执行速度和资源利用率。

        总之,在 MDK 中进行程序调试可以帮助我们检测和解决程序中的问题,提高程序的质量、性能和可靠性。通过调试,可以客观的了解程序的运行情况,并进行必要的修改和优化,以确保程序达到预期并满足需求。

1. 编译 + 调试

        在线调试主要分为软件在线调试硬件在线调试。随着现代技术的发展,硬件的成本普遍比较低,一般我们都使用硬件在线调试,也就是在 MDK 中编译好程序后,将程序下载到单片机的芯片中。在 MDK 中进行硬件调试。(进入调试界面的要求是必须先将程序下载到芯片中)

打开软件工程 ---> 编译 ---> 下载 ---> 调试,如下图的步骤:

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

进入调试以后的界面如下图所示:

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

2. 复位 + 全速运行

首先先进行复位,将程序复位到初始值处;然后 F5 进行全速运行,我们可以在很多的地方打断点,这样 F5 全速运行就会到达断点位置,到达断点位置对应程序也就停止了。前提是程序从初始状态到断点位置中间没有错误,能运行到断点位置。

复位以后的界面如下图所示:

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

在此设置四个断点,F5 全速运行,或者点击 RESET 旁边的图标全速运行,如下图所示:

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

3. 单步调试

顾名思义,单步调试就是每点一次按钮,程序就运行一步,遇到函数会进入函数

点击下图中的图标进行单步调试,或者使用快捷键 F11。(这里取消上面的断点)

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

在具体的使用过程中,就会明白什么叫没点一次,程序就运行一步,遇到函数进入函数。(比如说 main 函数,main 开始时首先 delay_init(168); F11 来到这一行时,就会进入函数 delay.c 中,将 delay_init 函数运行完以后,又会重新返回主函数 main 中,运行下一个 usart_init(115200);之后又会进入 usart.c 中,进入 usart_init 函数中,如此进行循环)

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

4. 逐步调试

逐步调试也是一行一行的进行运行,也就是每点一次按钮,程序运行一行。但是遇到函数不会进入函数

点击下图中的图标,或者使用快捷键 F10。

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

5. 跳出调试

跳出调试就是跳出函数调试,也就是每点一次按钮,程序跳出一个函数,直到跳出最外面的的函数为止(main 函数)。点击图标按钮,或者按快捷键 Ctrl + F11。

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

6. 运行到光标处

运行到光标处即将光标放在某一处,点击该按钮(或者 Ctrl + F10),程序执行到光标的位置就会停止下来(当然前提是程序可以运行到光标处)

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

7. 跳转到暂停行

跳转到暂停行这个功能在程序停止运行时有效,主要的作用就是我们打开了很多文件,这个时候不知道程序运行到哪里了,点击该按钮,就可以找到我们程序暂停的位置。

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

8. 调试窗口

调试窗口是在调试的时候可以查看的窗口,进入调试模式后,点击 View 菜单,即可查看下面的窗口菜单。

嵌入式_Keil (MDK - ARM) 的调试步骤,嵌入式,数据结构,单片机,嵌入式硬件,stm32

其中用的比较多的有:

Memory Windows:内存窗口,也就是我们查看变量的窗口。

System Viewer:系统外设窗口,查看外设寄存器数值的窗口。(这对于我们查看寄存器值是非常有帮助的!)文章来源地址https://www.toymoban.com/news/detail-545957.html

到了这里,关于嵌入式_Keil (MDK - ARM) 的调试步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正点原子STM32嵌入式学习-keil5安装教程

    前言:本人没有什么嵌入式的经验,但是看到硬件的同事做开发板比较好玩,比较感兴趣。刚好有这样一个机会,可以跟随《原子教你玩STM32(库函数版)》课程线下学习,在此,将本次课程的学习做一个记录。相信对我这样一个小白来说,帮助还是会非常大的。 目录 一.下

    2024年03月10日
    浏览(71)
  • 【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

    最近emwin用的比较烦躁,同时被LVGL酷炫的界面吸引到了,所以准备换用LVGL试试水。 LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用。 丰富且强大的模块化图形组件:按钮 (b

    2024年02月02日
    浏览(65)
  • 嵌入式开发——ARM介绍

    ARM是一种芯片架构,由英国的ARM Holdings公司开发和授权,被广泛应用于各种嵌入式系统、移动设备和消费电子产品中。ARM架构被设计成低功耗、高性能、可定制化的特点,能够满足各种应用场景下的需求。 ARM架构主要设计了以下几个部分内容: 指令集架构 (Instruction Set Ar

    2024年02月04日
    浏览(63)
  • 嵌入式学习---ARM时钟体系

    按 一定电压幅度 , 一定时间间隔 连续发出的脉冲信号。它是一个周期性的信号,每个周期内包含一个上升沿和一个下降沿。时钟脉冲的上升沿和下降沿通常用于触发和同步各个电子元件的操作,例如CPU的指令执行、数据传输、寄存器更新等。 时钟频率是指时钟脉冲的频率

    2024年01月16日
    浏览(57)
  • 嵌入式学习52-ARM1

    知识零散: 1.flash:                                                                                                                                                           nor flash    可被寻地址                                               

    2024年04月14日
    浏览(35)
  • 嵌入式系统——ARM架构及分类

      “架构”(Architecture)指的是功能规范,ARM架构即是ARM处理器的功能规范,包括以下主要内容: 指令集:每条指令的功能,指令在存储器中的表示方法(编码); 寄存器集:寄存器的数量、大小、功能,以及寄存器的初始状态; 异常模型:不同特权级、异常类型,以及采

    2024年02月02日
    浏览(61)
  • 嵌入式:ARM Day6

    目的:1.输入\\\'a\\\',显示\\\'b\\\',将输入的字符的ASCII码下一位字符输出            2.原样输出输入的字符串 源码: uart4.h  uart4.c main.c 结果1: 结果2: 

    2024年02月12日
    浏览(44)
  • ARM+LINUX嵌入式学习路线

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,

    2024年02月02日
    浏览(60)
  • 嵌入式:ARM Day4

     源码:         在上述代码中,int *ptr定义了一个指向整数类型的指针ptr,(int *)将地址0x5000A28强制转换为整数类型的指针,后续可以通过*ptr访问与修改该地址空间中的值。  

    2024年02月12日
    浏览(49)
  • 嵌入式ARM设计编程(四) ARM启动过程控制

    文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 (1) 掌握建立基本完整的ARM 工程,包含启动代码,C语言程序等; (2) 了解ARM启动过程,学会编写简单的C 语言程序和汇编启动代码并进行

    2024年02月06日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包