从0开始的stm32单片机学习之旅 第五章

1 MDK快速开发一图流

2 MDK推荐设置

语法检测,建议打开,比如结构体自动弹出成员类型,自动补充变量名称

点击f12可以快速跳转到定义

3 MDK使用技巧

3.1 查找匹配花括号 control+e

3.2 Tab键的妙用:一次填充 4 个空格 ,代码段整体右移/左移 

3.3 快速编辑一列:按住 Alt 选择一列编辑

3.4 快速打开头文件 右击:选择open document

3.5 快速拆分窗口 右击标签页:选择 new horizontal/vertical tab group

3.6 查找/替换功能:按住ctr+f唤出窗口,或者选中后ctr+f会自动填充当前选中词汇

4 MDK仿真调试

4.1选择 C/C++ 选项卡,在进行仿真时,我们需要将 MDK 的优化调成 Level 0 等级,防止误删除无用代码(有时候是有用的,比如for循环中什么都不干)

4.2点击 Debug 选项卡,把「Load Application at Startup」和「Run to main」勾上。(是否烧写到下载到芯片再启动,以及在单片机中从main函数启动 )

4.3 仿真器相关

如果 ST-Link 没有插上或设备异常,则会提示 No ST-Link detected

4.4 最后打开 Utilities 选项卡将 Use Debug Driver 打勾,再点击 OK 确定一下,MDK 仿真的调试配置就完成了。

4.4 调试按钮

4.1进入仿真之后的界面如下图示

界面左边显示寄存器的地址和程序运行时间,上方是汇编语言窗口,需要一定的汇编基础才能看得懂。界面左下方是命令窗口,这个窗口会显示一些打印信息,也可以在这个窗口输入一些命令。右下角的窗口是关于函数及变量在内存中的地址信息。

 

4.2 在左上方有一排关于调试的小按钮

它们的功能从左到右分别是:复位、全速运行、停止、进入函数、执行过此函数、跳出函数、执行到光标处、显示下一个将运行的代码
  • 复位:重新执行程序;
  • 全速运行:开始执行程序;(快捷键为 F5 )
  • 停止:停止执行程序;
  • 进入函数:进入当前行代码中,并一行一行执行;(快捷键为 F11 )
  • 执行过此函数:执行过当行代码,等于是跳过,但是有运行;(快捷键为 F10 )
  • 跳出函数:跳出当前程序代码;(快捷键为 Ctrl+F11 )
  • 执行到光标处:自动执行代码至蓝色光标处;(快捷键为 Ctrl+F10 )
  • Show Next Statement:显示下一行即将要执行的程序。

4.3调试过程中的其他按钮

4.3.1 从左到右依次是:

命令窗

汇编语言窗

符号窗口

寄存器窗口

查看函数调用关系窗

Watch Windows查看函数首地址以及变量的值窗(重点

Memory Windows可用于查看内存的地址与值(重点

Serial Windows 用于查看串口的窗口
Peripheral 窗口 用于查看寄存器的值(重点

4.3.2 Watch Windows查看函数首地址以及变量

例如,在程序中定义一个全局变量 int temp; ,在 while 循环中执行 temp++ 。右击 temp ,选择 Add "temp" to... 添加到 Wacth 1 。

在左下方的 Watch 1 窗口就可以看到 temp 的首地址和定义类型了

Wacth 窗口不止这些功能,Wacth 窗口还可以设置变量在被读或写后会自动停止运行。这个功能在调试行数比较多的项目非常有用,因为在很多场景下,有个变量有可能在几十上百处被修改,如果没有这个功能,排查变量被修改将变得非常困难。
那么如何设置这个功能呢?
首先右击 temp ,会出现一个列表,点击 Set Access Breakpoint at "temp" 。如下图:

这时候会弹出一个窗口,在这个窗口你可以设置函数是否要在被读或者被写的自动停止运行。设置完之后点击 Define 就行了。

4.3.3 Memory Windows查看内存的地址与值

仿真后打开Memory Windows

首先我们在程序中定义一个 uint8_t 类型的数值 temp[10] ,然后给数组的前五个数赋值 {1,2,3,4,15} ,其他元素默认值为 0 。在循环中我们进行 temp[0]++ ,只对第一个元素自增。
编译一下,打开仿真工具,再打开Memory 窗口,在窗口中输入 temp ,这样我们就可以看到 temp 数组在内存中的地址与值。前面我们给数组赋值 {1,2,3,4,15} ,在 Memory 窗口可以看到 temp 数组被十六进制表示出来 “01 02 03 04 0F” 。如下图(小端模式):

4.3.4 Peripheral 窗口用于查看寄存器的值

Core Peripherals 是内核寄存器,其他的都是外设寄存器。如下图:

打开之后是这个样子的(我这里打开的是 GPIOC )。如下图:
在这里你可以看到一些寄存器的值,如果你想看某个值,你可以点击左边的 + 号,在 + 号中有更详细的信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值