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 CubeMX开发 超详细MDK在线调试(Debug)教程 -> 正文阅读

[嵌入式]STM32 CubeMX开发 超详细MDK在线调试(Debug)教程

本教程在上一期呼吸灯的基础上增加在线debug讲解,通过变量监视完成代码调试

1 CubeMX配置

这里以stm32f103为例,在它的开发手册里我们可以找到SWJ调试端口的定义及其对应引脚
请添加图片描述
我们可以选择不同的模式,不同的模式占用引脚情况不相同
请添加图片描述
在CubeMX中的SYS项中我们可以选择debug模式,选择好模式后会自动使能相关引脚
请添加图片描述
SW串行模式
请添加图片描述
4针脚的JTAG模式
请添加图片描述
5针脚的JTAG模式
请添加图片描述
其他的模式是一些带Trace的调试模式,我们一般的开发用不到,想要详细了解的可以参考对应芯片的手册对TPIU模块的介绍
我一般选择SW串行模式(占用引脚最少)就可以进行调试,选择好Debug后生成工程

2 Debug设置

生成工程后我们先编译一次,没有报错后,在debug选项卡中选择你的调试下载器,我使用的是STlink,如果你有Jlink等下载器选择对应的即可
请添加图片描述
确认是否可以识别到
请添加图片描述
点击Setting进入二级窗口,查看是否检测到 (确保芯片已经上电,下载器、开发板及电脑连接正确
请添加图片描述
可以在二级窗口的Flah Download里修改烧写规则
请添加图片描述
设置完成后点击确定即可

3 Debug功能演示

我们在日常的代码调试中用到最多的就是断点、单步调试以及变量监视
这里有个点需要注意,我们在调试前最好把代码编译一遍。不编译直接点调试按钮,如果芯片内的代码和你的代码不一致是没法调试的,如果你确定芯片里的代码就是你现有的代码可以不重新编译直接进入Debug模式。编译后直接点击Debug按钮,MDK会自动把新编译的代码下载并进入Debug模式并停止在main函数的开始
请添加图片描述
如下图即进入了Debug模式,可以看到程序停在了main函数的起始处等待我们下一步操作
请添加图片描述

3.1 断点调试

我们有时需要程序在调试时能够停在某处,以便我们进行单步调试、变量监视或是验证我们的代码逻辑是否正确。这就要设置断点(也叫打断点),打断点的操作可以在进入Debug前也可以在进入Debug后,但最好在进入Debug后再打断点,下面你就会看到原因
请添加图片描述
退出Debug模式后,这些深灰色的块就消失了
请添加图片描述
所以最好在进入Debug后设置断点,并且在进入Debug模式后,如果你发现你想要打断点的地方并没有变为深灰色,那么一种情况是你的这句代码或者整个函数并没有被调用(逻辑上出了问题),另一种情况是编译器在编译时做了优化,编译器认为你的这句话没必要执行根本就没有编译。第一种情况排插逻辑和调用错误,第二种情况需要修改编译器优化等级,因为编译优化只是一些固化的算法,也会有BUG
在此处可以修改优化等级,数字越大优化越多,我一般选0级,因为我开发的工程不是很大不需要优化,有时候优化反而会给我带啦麻烦(比如While(condition)无法break)
请添加图片描述
进入Debug后在深灰色区域单击鼠标左键就可看到多出一个红点,这就是断点
请添加图片描述
打好断点,点击run,程序停在了断点处
请添加图片描述
若果程序一直没有停在断点,而你觉得程序应该停在断点,那你又可以检查逻辑错误了

3.2 单步调试

单步调试的优点在于我们可以一步一步执行代码,观察变量的变化,检查是否存在逻辑上的错误和函数调用上的问题,前提是得先让代码停下来,也就是打上断点,然后从断点处一步一步的运行
请添加图片描述
跳入跳出程序块(if while 或函数)
请添加图片描述
单步运行
请添加图片描述
如果想让变量都回到起始状态点击reset即可

3.3 变量监视

在调试的时候我们有时候想看一些变量的值是否正确,在Debug模式下,选中变量右键,添加到监视窗口中(在程序stop和run时都可以添加)
请添加图片描述
可以看到变量及其值已经在监视窗口显示
请添加图片描述
也可以将监视移除或修改显示形式(程序stop时才可以移除)
请添加图片描述
在这里把实时更新的勾勾打
请添加图片描述
点击run可以看到监视窗口中的值在随程序的运行而变化,值在更新时背景会变为这种蓝绿色
请添加图片描述


X 往期文章

鸿蒙(HMOS)开发基础篇(三)开发工具特性介绍

STM32 CubeMX开发 F1通用定时器

鸿蒙(HMOS)开发基础篇(二)开发初体验-多设备协同

鸿蒙(HMOS)开发基础篇(一)环境搭建 & Helloworld

今天,我是数据库的BOS(读者-写者问题

哲学家不会吃饭了,我们快来帮帮他们(C语言、进程通信)

Python+OpenCV+imutils的简单图片处理(放缩、翻转、旋转、灰度RGB提取)

python手写K-means实现二维聚类


如果文中有误,还请在评论区指正。这里是海小皮,我们一同进步!!!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:52:21  更:2021-12-01 17:54:27 
 
开发: 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年11日历 -2024/11/26 10:46:42-

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