MDK软件使用技巧
本文主要汇总MDK软件使用技巧
一、字体大小及颜色修改
第一步点击工具栏的这个小扳手图标

进去后显示如下,先设置 Encoding 为:Chinese GB2312(Simplified),然后设置 Tab size 为:4
以更好的支持简体中文,否则,拷贝到其他地方的时候,中文可能是一堆的问号,同时 TAB 间隔设置为 4 个单位,便于后续编写代码

然后,选择:Colors&Fonts 选项卡,在该选项卡内,我们就可以设置自己的代码的子体和颜色了。
由于我们使用的是C语言,故在Window下面选择:C/C++ Editor Files在右边就可以看到相应的元素了

字体大小,则可以直接按住:ctrl+鼠标滚轮,进行放大或者缩小,或者也可以在刚刚的配置界面设置字体大小
另外点击各个元素(Element)修改为你喜欢的颜色(注意双击,且有时候可能需要设置多次才生效,MDK 的 bug),当然也可以在 Font 栏设置你字体的类型,以及字体的大小等。
设置成之后,点击 OK,就可以在主界面看到你所修改后的结果:

STM32代码中经常能看到u8,这是一个用户自定义的关键字,它的颜色也是可以设置的,首先选择 User Keywords 选项卡,同样选择:C/C++Editor Files,在右边的 User Keywords 对话框下面输入你自己定义的关键字:

这样在后续的代码编辑里面只要出现这三个关键字就会变成蓝色。点击 OK,再回到主界面,可以看到 u8 变成紫红色了

二、语法检测 & 代码提示
MDK4.70 以上的版本,新增了代码提示与动态语法检测功能,使得 MDK 的编辑器越来越好用了,这里我们简单说一下如何设置,同样,点击配置对话框 ,打开配置对话框,选择 Text Completion选项卡

Strut/Class Members:用于开启结构体/类成员提示功能
Function Parameters:用于开启函数参数提示功能
Symbols after xx characters:用于开启代码提示功能,即在输入多少个字符以后,提示匹配的内容(比如函数名字、结构体名字、变量名字等),这里默认设置 3 个字符以后,就开始提示

Dynamic Syntax Checking:则用于开启动态语法检测,比如编写的代码存在语法错误的时候,会在对应行前面出现“叉号”图标,如出现警告,则会出现“警告”图标,将鼠标光标放图标上面,则会提示产生的错误/警告的原因

这几个功能,对我们编写代码很有帮助,可以加快代码编写速度,并且及时发现各种问题。不过这里要提醒大家,语法动态检测这个功能, 有的时候会误报如 (比如 sys.c 里面,就有很多误报),大家可以不用理会,只要能编译通过(0 错误,0 警告),这样的语法误报,一般直接忽略即可
三、代码编辑技巧
这里给大家介绍几个我常用的技巧,这些小技巧能给我们的代码编辑带来很大的方便,相信对你的代码编写一定会有所帮助
(1)TAB 键的妙用
首先要介绍的就是 TAB 键的使用,这个键在很多编译器里面都是用来空位的,每按一下移空几个位。如果你是经常编写程序的对这个键一定再熟悉不过了。但是 MDK 的 TAB 键和一般编译器的 TAB 键有不同的地方,和 C++的 TAB 键差不多。MDK 的 TAB 键支持块操作,也就是可以让一片代码整体右移固定的几个位,也可以通过 SHIFT+TAB 键整体左移固定的几个位,
假如我们的例程长这样:

这样的代码大家肯定不会喜欢,这还只是短短的十来行代码,如果你的代码有几千行,全部是这个样子,不头大才怪。看到这样的代码我们就可以通过 TAB 键的妙用来快速修改为比较规范的代码格式。
选中一块然后按 TAB 键,你可以看到整块代码都跟着右移了一定距离:

接下来我们就是要多选几次,然后多按几次 TAB 键就可以达到迅速使代码规范化的目的,最终效果如下:

经过这样的整理之后,整个代码一下就变得有条理多了,看起来很舒服。
(2)快速定位函数 / 变量被定义的地方
大家在调试代码或编写代码的时候,一定有想看看某个函数是在那个地方定义的,具体里面的内容是怎么样的,也可能想看看某个变量或数组是在哪个地方定义的等。尤其在调试代码或者看别人代码的时候,如果编译器没有快速定位的功能的时候,你只能慢慢的自己找,代码量比较少还好,如果代码量一大,那就郁闷了,有时候要花很久的时间来找这个函数到底在哪里。
型号 MDK 提供了这样的快速定位的功能,只要你把光标放到这个函数/变量(xxx)的上面(xxx 为你想要查看的函数或变量的名字),然后右键,弹出下图所示的菜单栏 :

我们找到 Go to Definition Of‘delay_init’ 这个地方,然后单击左键就可
以快速跳到 delay_init 函数的定义处(注意要先在 Options for Target 的 Output 选项卡里面勾选Browse Information 选项,再编译,再定位,否则无法定位!)

对于变量,我们也可以按这样的操作快速来定位这个变量被定义的地方,大大缩短了你查找代码的时间。细心的大家会发现上面还有一个类似的选项,就是 Go to Reference To‘delay_init’,这个是快速跳到该函数被声明的地方,有时候也会用到,但不如前者使用得多。
很多时候,我们利用 Go to Definition/ Reference 看完函数/变量的定义/申明后,又想返回之前的代码继续看,此时我们可以通过 IDE 上的“返回”按钮(Back to previous position)快速的返回之前的位置,这个按钮非常好用!

(3)快速注释与快速消注释
接下来,我们介绍一下快速注释与快速消注释的方法。在调试代码的时候,你可能会想注释某一片的代码,来看看执行的情况,MDK 提供了这样的快速注释/消注释块代码的功能。也是通过右键实现的。这个操作比较简单,就是先选中你要注释的代码区(这里假设全选),然后右键,选择Advanced->Comment Selection 就可以了

效果图如下:

这样就快速的注释掉了一片代码,而在某些时候,我们又希望这段注释的代码能快速的取消注释,MDK 也提供了这个功能。与注释类似,先选中被注释掉的地方,然后通过右键->Advanced,不过这里选择的是 Uncomment Selection。
三、其他小技巧
除了前面介绍的几个比较常用的技巧,这里还介绍几个其他的小技巧,希望能让你的代码编写如虎添翼。
(1)快速打开头文件
在将光标放到要打开的引用头文件上,然后右键选择 OpenDocument “XXX”,就可以快速打开这个文件了:(XXX 是你要打开的头文件名字)

(2)查找替换功能
这个和 WORD 等很多文档操作的替换功能是差不多的,在 MDK 里面查找替换的快捷键是“CTRL+H”,只要你按下该按钮就会调出如下界面:

这个替换的功能在有的时候是很有用的,它的用法与其他编辑工具或编译器的差不多,不再多说。
(3)跨文件查找功能
先双击你要找的函数/变量名(这里我们还是以系统时钟初始化函数:delay_init 为例),接着按图中步骤:

点击 Find,MDK 就会帮你找出所有含有 delay_init 字段的文件并列出其所在位置。该方法可以很方便的查找各种函数/变量,而且可以限定搜索范围(比如只查找.c 文件和.h文件等),是非常实用的一个技巧。
相关文章:
MDK软件使用技巧
本文主要汇总MDK软件使用技巧 一、字体大小及颜色修改 第一步点击工具栏的这个小扳手图标 进去后显示如下,先设置 Encoding 为:Chinese GB2312(Simplified),然后设置 Tab size 为:4 以更好的支持简体中文,否则&…...
3 333333
全部 答对 答错 单选题 1. 一个项目来取代目前公司的文件存储系统已经获批。外部供应商提供硬件,内部团队开发软件。这个团队是自组织的,由一般的专家组成。团队建议迭代地与供应商合作,但供应商表示拒绝。因此,只有软件将被迭代…...
1528. 重新排列字符串
1528. 重新排列字符串https://leetcode.cn/problems/shuffle-string/ 难度简单52收藏分享切换为英文接收动态反馈 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新…...
【8】【用户操作日志】操作日志SpringBootStarter
操作日志 此版本操作日志主要就是通过AOP拦截器实现的,整体主要分为AOP拦截器、自定义函数、日志上下文、扩展接口;组件提供了6个扩展点,自定义函数、日志上下文、用户信息获取,日志保存,自定义异常获取,入…...
【游戏逆向】寻路函数隐藏检测点分析
案例: 某游戏出现调用寻路函数失败异常崩溃。 基本情况分析: 在刚登陆游戏的时候直接调用寻路函数崩溃。 手动寻路以后再调用寻路不崩溃。(排除了函数编写错误的可能) 猜测可能检测方法: 有某一个标志位(全局类型)在游戏刚登陆的时候没…...
【Zabbix实战之运维篇】Zabbix监控Docker容器配置方法
【Zabbix实战之运维篇】Zabbix监控Docker容器配置方法 一、检查Zabbix监控平台状态1.检查Zabbix各组件容器状态2.奸诈Zabbix-server状态二、下载监控模板1.进入Zabbix官网下载页面2.查看下载模板三、创建一个测试容器1.创建一个测试容器2.检查测试容器状态3.访问测试web服务四、…...
这款 Python 工具进行数据分析及数据可视化真的很棒啊
前言 大家好,今天我们以全国各地区衣食住行消费数据为例,来分析2022年中国统计年鉴数据,统计全国各地人民的消费地图,看看: 哪个省份的人最能花钱 哪个省份的人最舍得花钱 哪个省份的人最抠门 全国各地区人民在吃、穿…...
visual Studio Code常用快捷键
1、向上/向下移动代码行 alt 下箭头/上箭头 2、向上/向下复制一行代码 shiftalt 下箭头/上箭头 3、选定多个相同的单词 ctrl d 4、全局替换 ctrl h 5、快速定位到某一行 ctrl g 6、放大缩小整个编辑器界面 ctrl / - 7、添加多个光标 Ctrl Alt 上箭头/下箭头…...
基础(一)十六进制转八进制
试题 基础练习 十六进制转八进制 资源限制 内存限制:512.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第…...
梯度提升算法决策过程的逐步可视化
梯度提升算法是最常用的集成机器学习技术之一,该模型使用弱决策树序列来构建强学习器。这也是XGBoost和LightGBM模型的理论基础,所以在这篇文章中,我们将从头开始构建一个梯度增强模型并将其可视化。 梯度提升算法介绍 梯度提升算法&#x…...
Linux系统调用之文件属性操作函数
前言 如果,想要深入的学习Linux系统调用中access,chmod,chown,truncate这些有关于文件属性的操作函数,还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令: man 2 access/chmod/chown/truncate 即可…...
VMware 安装 银河麒麟高级服务器操作系统 V10 + QT 开发环境搭建
下载并安装vmware 下载银河麒麟操作烯烃服务器版v10的镜像文件从官网下载,因为是x86的电脑芯片,选择AMD64版,即vmare 安装麒麟操作系统注意事项:安装位置选择自动分区网络和主机名设置打开网络,ip4就不用再设置了创建一…...
2023年疫情开放,国内程序员薪资涨了还是跌了?大数据告诉你答案
自从疫情开放,国内各个行业都开始有复苏的迹象,尤其是旅游行业更是空前暴涨,那么互联网行业如何? 有人说今年好找工作多了,有人说依然是内卷得一塌糊涂,那么今年开春以来,各个岗位的程序员工资…...
太赫兹频段耦合器设计相关经验总结
1拿到耦合器的频段后,确定中心频率和波导的宽度和高度 此处贴一张不同频段对应的波导尺寸图 需要注意的是1英寸 2.54厘米,需注意换算 具体网址:矩形波导尺寸 | 扩维 (qualwave.com) 仅列举我比较常用的太赫兹频段部分 2.以220~320GHz频段&a…...
反弹shell数据不回显带外查询pikaqiu靶场搭建
P1 文件上传下载(解决无图形化和解决数据传输) 解决无图形化: 当我们想下载一个文件时,通常是通过浏览器的一个链接直接访问网站点击下载的,但是在实际的安全测试中,我们获取的权限只是一个执行命令的窗口…...
按键修改阈值功能、报警功能、空气质量功能实现
按键修改阈值功能 要使用按键,首先要定义按键。通过查阅资料,可知按键的引脚如图所示:按键1(S1)通过KEY0与PA0连接,按键2(S2)通过KEY1与PE2连接,按键3(S3&…...
spring重点整理篇--springMVC(嘿嘿,开心哟)
Spring MVC是的基于JavaWeb的MVC框架,是Spring框架中的一个组成部分(WEB模块) MVC设计模式: Controller(控制器) Model(模型) View(视图) 重点来了😄 SpringMVC的工作机制…...
图像融合评估指标Python版
图像融合评估指标Python版 这篇博客利用Python把大部分图像融合指标基于图像融合评估指标复现了,从而方便大家更好的使用Python进行指标计算,以及一些I/O 操作。除了几个特征互信息的指标没有成功复现之外,其他指标均可以通过这篇博客提到的P…...
20230303----重返学习-函数概念-函数组成-函数调用-形参及匿名函数及自调用函数
day-019-nineteen-20230303-函数概念-函数组成-函数调用-形参及匿名函数及自调用函数 变量 变量声明 变量 声明定义(赋值) var num;num 100; 声明与赋值分开var num 100; 声明时就赋值 赋值只能声明一次,可以赋值无数次 变量声明关键词 varconstletclassfunctio…...
Java面试题总结
文章目录前言1、JDK1.8 的新特性有哪些?2、JDK 和 JRE 有什么区别?3、String,StringBuilder,StringBuffer 三者的区别?4、为什么 String 拼接的效率低?5、ArrayList 和 LinkedList 有哪些区别?6…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
