[经验分享] MDK/keil高阶使用手册

[复制链接]
57|5
荣陶陶 发表于 2026-2-4 13:23 | 显示全部楼层 |阅读模式
1.开启watch和内存窗口的值实时更新



2.调试模式可以查看局部变量的值
        只不过要让任意被观察变量退出<cannot evaluate>状态,都需要先在该变量被赋值的地方先打个断点,此后该变量的值就能实时更新了。

3.可以在watch窗口直接输入你要查看的变量的名称
4.可以在watch窗口直接改变被观察变量的值
5.可以在memory窗口直接改变内存和flash的值
6.可以在魔术棒的Listing选项卡选择生成编译中间文件和选择MAP文件的内容



7.可以在魔术棒的User选项卡选择编译前和编译后分别都执行点啥,可以是一个指令、一个脚本、一个程序



8.在程序跑飞或者死机时,可以选择不复位进入Debug,从而查看当前卡在了哪里







其中ini文件里面的内容为:LOAD %L INCREMENTAL

9.可以在魔术棒的Utilities选项卡选择下载程序时下载的文件是哪个



其中ini文件的内容为:LOAD "Objects\\xxx.hex"

10.屏蔽特定的警告(针对ARM 编译器6以上)
        先看看ARM编译器用户手册是怎么说的:“要屏蔽特定警告,可以使用Arm Compiler提供的一些选项和指令。你可以通过在源代码中使用#pragma clang diagnostic ignored "-Wname"指令来忽略特定警告消息,其中"Wname"是要忽略的警告名称。”

        具体操作:比如以下警告:

../User/Tasks/ledTask.c(55): warning: passing 'const gpioEntityTypeDef *' to parameter of type 'gpioEntityTypeDef *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]


        则在相应文件中输入以下信息:#pragma clang diagnostic ignored "-Wincompatible-pointer-types-discards-qualifiers"



        再编译就看不到该警告了。

11.指定某段代码的优化等级
        有时候我们希望某段代码的优化等级高一点或者低一点,此时就可以使用如下编译器指令来设定:

#pragma optimize O0

void func(void)
{

}

#pragma


        其中“O0”表示采用优化等级0,即不优化,除此之外还有:O1,O2,O3,Ofast,Omax,Oz等。
————————————————
版权声明:本文为CSDN博主「Just_BLei」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011764302/article/details/138666286

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
febgxu 发表于 2026-2-6 10:50 | 显示全部楼层
创建工程、编写基础代码、点击编译
i1mcu 发表于 2026-2-6 12:26 | 显示全部楼层
如何优化MDK/Keil的编译速度?
robincotton 发表于 2026-2-6 13:40 | 显示全部楼层
程序跑飞后可直接进入调试界面定位问题,无需重启
maudlu 发表于 2026-2-6 15:35 | 显示全部楼层
ARM 提供的轻量级运行时日志系统,替代传统串口打印。
jkl21 发表于 2026-2-7 11:57 | 显示全部楼层
在Watch窗口中直接输入要查看的变量名称,实时监视变量值的变化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

91

主题

356

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0