当前位置: 首页 > news >正文

MDK程序调试

1.图标认识

第 1 个图标是复位调试。

第 2 个图标是全速运行。

第 3 个图标是进入全速运行状态后,通过这个图标可以停止全速运行。

第 4 个图标是 Step(Step one line),单步调试,每次点击运行一行代码,所以只要有子函数就会

进入。

第 5 个图标是 Step Over(Step over the current line),每次点击以函数为单位运行,不会进入函

数内部。

第 6 个图标是 Step out(Step out of the current line),点击后退出当前运行的函数,执行下一个

函数。

第 7 个图标是 Run to Cursor Line(Run to the current cursor line),直接运行到用户设置的行,

设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头

然后点击此图标即可,可以看到前面多了一个黄色的小箭头,说明已经运行到此行

2.外设寄存器的查看

要查看的外设寄存器内容在这个菜单里面:

如果要查看内核外设寄存器,在这里:

3.全局变量的查看

针对全局变量,MDK 专门提供了 Watch1 和 Watch2 两个窗口,每个窗口可以添加很多变量。调试

过程中,这些窗口里面添加的变量是会更新的

也可以从菜单 View ->Watch Windows 进行添加

4.局部变量的查看

针对局部变量,MDK 专门提供了一个栈窗口,用于查看函数中各种局部变量,这个不需要用户添加,

MDK 会自动添加。

也可以从菜单 View ->Call Stack Window 进行添加。局部变量需要进入到那个函数里面才可以查看,这

点要特别注意,因为局部变量是来自栈空间的,进入函数申请占空间,退出函数后,栈空间就会被释放掉。

比如 main 函数里面一个 POS局部变量:

5.Flash 区或者 RAM 区的查看

如果要查看 Flash 区或者 RAM 区的内容,MDK 提供了 4 个 Memory 窗口

也可以从菜单 View ->Memory Windows 进行添加。比如要查看 0x0800 0000 地址开始的内容,直接

输入即可,这个地址是 STM32F4 的 Flash 首地址:

6.断点调试

断点调试比较重要,进入调整状态后,如果大家想让程序在指定的位置停止运行,可以添加断点,通

过这个小红点来添加

比如想在 88行添加断点。

点击那个小红点,可以看到已经添加上:

然后点击全速运行,如果程序有执行到这个地方,就会停在这里。可以看到黄色小箭头也显示在左侧了,

说明程序执行这个地方了

正常情况下,断点可以加到任何程序代码可以执行到的地方。另外注意,退出调试前,点击这个按钮取消

所有断点,防止 MDK 调试期间崩溃:

7.寄存器,全局变量和局部变量的动态更新

MDK 有个周期性更新选项,如果大家要周期性的观察一些寄存器、全局变量的更新、需要把菜单 View

-> Periodic Window Update 选上

注:学习来源安富莱BSP开发手册

http://www.lqws.cn/news/150787.html

相关文章:

  • 五、查询处理和查询优化
  • Spring Boot + Elasticsearch + HBase 构建海量数据搜索系统
  • Spring Boot 缓存注解详解:@Cacheable、@CachePut、@CacheEvict(超详细实战版)
  • 【Linux篇】0基础之学习操作系统进程
  • Selenium 查找页面元素的方式
  • 【hadoop】Flink安装部署
  • 华为OD最新机试真题-小明减肥-OD统一考试(B卷)
  • CLIP多模态大模型的优势及其在边缘计算中的应用
  • mac 电脑Pycharm ImportError: No module named pip
  • opencv如何在仿射变换后保留完整图像内容并自动裁剪
  • 数学建模-嘉陵江铊污染事件解题全过程文档及程序
  • 论文速读《DexWild:野外机器人策略的灵巧人机交互》
  • Uniapp 二维码生成与解析完整教程
  • SpringBoot自动化部署全攻略:CI/CD高效实践与避坑指南
  • 空间利用率提升90%!小程序侧边导航设计与高级交互实现
  • 苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
  • 钉钉 - 机器人消息推送(签名版)
  • Python Rio 【图像处理】库简介
  • ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途
  • EXCEL如何快速批量给两字姓名中间加空格
  • Python使用总结之Mac安装docker并配置wechaty
  • Ntfs!ReadIndexBuffer函数分析之nt!CcGetVirtualAddress函数之nt!CcGetVacbMiss
  • Prompt Tuning:生成的模型文件有什么构成
  • NoSQL——Redis配置与优化
  • 拆解实战案例:电商ERP管理系统从需求到原型全流程设计
  • vue2中使用jspdf插件实现页面自定义块pdf下载
  • 深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
  • ML Kit与YOLO:移动AI与实时检测终极对决
  • 数据分析实战2(Tableau)
  • 【DAY40】训练和测试的规范写法