IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32 MDK debug调试方法 -> 正文阅读

[嵌入式]stm32 MDK debug调试方法

使用仿真器进行在线调试

硬件环境:STM32F407VET6核心板
软件环境:Keil 5.0
分类:此类为【技巧型】知识,需要多加练习才能掌握
你可以学到:如何通过MDK的自带的调试功能进行调试与检查可能出现的问题

?基础调试方法

调试环境的配置

  1. 配置好debug:点击魔术棒
    在这里插入图片描述
    在Debug-setting选项中进行如下配置:

在这里插入图片描述
左侧和仿真器型号相关,右侧和单片机型号相关。
如果出现:
左边检测不到,是因为没有链接电脑
右边检测不到,是因为没有连接开发板
如果:
两侧都有显示,说明可以进行下载和调试,进入下一步调试阶段。

  1. 点击放大镜即可进入debug按钮

调试界面介绍

执行操纵栏

在这里插入图片描述
分别是复位/程序运行/停止
复位:程序重头开始执行,(可以和断点进行配合使用)
Run:使程序正常进行
挂起:停止正在运行的程序

进入函数/执行过此函数/跳出函数/执行到光标处
这些按钮可以控制函数的执行流程,用以动态的查看函数的工作和运行

断点

灰色区域
只有在灰色区域可以设置断点
上图中,【黄色箭头】是程序执行到的地方/【绿色箭头】是光标所在地方
可以设置断点状态:
在这里插入图片描述
插入断点、使能/失能断点、失能所有断点、清楚所有断点。
这些选项可以对断点进行管理,方便使用断点。
【注意】点击 run 是执行到断点处,(此时断点所在的行【没有】被执行),断点是:即将执行某一行代码。

除了设置断点之外,还可以设置挂起:

挂起

挂起:程序执行到某个地方突然被中断
与断点的区别:挂起并不知道在哪里停下,知识知道在发生什么事件后停下,这个事件可以通过外部的标志进行判断

调试窗口介绍

在这里插入图片描述
先介绍比较常用的几个窗口

call stack windows

call stack windows显示正在执行的程序中,函数的调用情况
点开后,是下列界面:
在这里插入图片描述
第一列是函数名称/第二列是函数地址或者函数值(返回值)第三列是函数类型
同时可以查看函数内部的局部变脸。

使用的时候,不需要将函数拖进去,就可以查看函数内部局部变量的值。

这里思考一个问题:为什么函数中的局部变量的值要在堆栈里查看?
猜测:因为C语言中调用函数内部的局部变量,是在调用时生成,调用结束后销毁的,
用堆栈存放这些变量,可能是考虑到了函数的嵌套调用的情况,
在函数调用完毕后,最后一个被存储的局部变量第一个被销毁。刚好符合堆栈后进先出的原则。

watch windows

watch windows
直接将某个函数或者变量拖进来,就可以显示该函数或者变量的值。
如下图所示:
在这里插入图片描述
这样可以很方便的在调试过程中查看寄存器或者变量的情况。(函数对应的是函数入口地址)

需要特别注意MDK的优化问题
一定要使用level-0优化方式,否则优化登记太高,将不会显示某些变量的值,导致一些变量一直处于< not in scope>的状态
优化的选项在魔术棒中,如下图
优化配置

peripheral工具栏

 peripheral
在这个工具栏下,几乎可以选择所有的片内外设,点开后,会显示外设的寄存器的所有状态
我们依照这些寄存器状态,去和数据手册进行比对,从而可以找出问题或者进行底层的修改
在这里插入图片描述

外设寄存器栏可以查看几乎所有外设的寄存器的数值?
可以对比数据手册,查看某个值是什么含义,从而了解某个数值是不是预期的数
也可以查看内核级别的寄存器
也可以查看对应中断向量的值

?进阶调试方法

区段函数执行时间

执行时间
可以查看区段函数的执行时间
执行时间,将显示在debug模式下的窗口右下角(注意窗口需要全屏显示才能看到,否则会自动隐藏)

比如查看延时函数是否准确

Memory查看寄存器地址

memory windows
需要输入带待查看数组或者函数的地址,可以结合watch窗口或者stack窗口进行查找地址
这里我们选择一个数组进行查看

把它的地址移到memory窗口中,可以查看对应内存的数据了。
在这里插入图片描述
例如,当一个数组很大(上千个)时,watch窗口无法显示,就需要用memory查看所有数值。

查看中断执行的时间和次数

在这里插入图片描述
可以查看所有中断的执行时间/次数
在这里插入图片描述

全局变量读写时暂停

在这里插入图片描述
【注意】与设置断点是不同,他会停留在读/写操作的下一行代码处。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:59:50  更:2021-08-06 10:01:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 9:57:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计