第三章 开发环境搭建
目录
本章,我们将向大家介绍 W55MH32的开发环境搭建,主要通过以下三个方面介绍:
1 常用开发工具简介
2 安装IDE
3 MDK5使用技巧
1 常用开发工具简介
KEIL MDK是ARM公司推出的一款面向ARM架构微控制器(如Cortex - M系列)的集成开发环境,提供代码编写、编译、调试、下载一站式服务。它支持多语言开发,拥有强大编译器和丰富的调试与仿真功能,具备大量库与中间件,还有可视化配置工具,支持跨平台使用。广泛应用于嵌入式开发、实时系统、工业控制等领域,有不同版本以满足多样需求,虽商业版授权费高且对非ARM架构支持有限,但仍是嵌入式开发主流工具。
2 安装IDE
2.1 温馨提示
1.安装路径不能带中文,必须是英文路径。
2.安装目录不能跟 51 的 KEIL 或者 KEIL4 冲突,三者目录必须分开。
3.KEIL5 的安装比起 KEIL4 多了一个步骤,必须添加 MCU 库,不然没法使用。
2.2 获取 KEIL5 安装包
W55MH32 开发板支持 KEIL5 MDK 微控制器开发套件开发,可前往官网 www.keil.com 下载安装包。
Keil 官网安装包示意图
2.3 开始安装KEIL5
双击官网下载的安装包,点击 Next 按钮开始安装。
开始安装 KEIL5
按照提示逐步进行安装,安装完成后如下图所示。
安装完成 KEIL5
2.4 安装W55MH32 芯片包
打开软件包目录下的 W55MH32_DFP.1.1.0.pack,点击 Next 即可完成安装。
安装 pack 包
3 MDK5使用技巧
本节,我们将向大家介绍 MDK5 软件的一些使用技巧,这些技巧在代码编辑和编写方面会非常有用,希望大家好好掌握,最好实际操作一下,加深印象。
3.1 文本美化
文本美化,主要是设置一些关键字、注释、数字等的颜色和字体。如果你刚装 MDK,没进行字体颜色配置,以下面图为例,你的界面效果如图所示:
MDK 默认配色效果
上图是 MDK 默认的设置,可以看到其中的关键字和注释等字体的颜色不是很漂亮,而MDK 提供了我们自定义字体颜色的功能。我们可以在工具条上点击 (配置对话框)弹出如图所示界面:
置对话框
① 设置代码编辑器字体使用:Chinese GB2312(Simplified),以更好的支持中文。
② 设置编辑器的空格可见:View White Space,所有空格使用“.”替代,TAB 使用“→”替代,这样可以方便我们对代码进行对齐操作。同时,我们推荐所有的对齐都用空格来替代,这样在不同软件之间查看源代码,就不会引起由于 TAB 键大小不一样导致代码不对齐的问题,方便使用不同软件查看和编辑代码。
③ 设置 C/C++文件,TAB 键的大小为 4 个字符,且字符使用空格替代(Insert spaces fortabs)。这样我们在使用 TAB 键进行代码对齐操作的时候,都会用空格替代,保证不同软件使用代码都可以对齐。然后,选择:Colors & Fonts 选项卡,在该选项卡内,我们就可以设置自己的代码的字体和颜色了。由于我们使用的是 C 语言,故Window 下面选择:C/C++ Editor Files 在右边就可以看到相应的元素了。如图所示:
Colors & Fonts 选项卡
然后点击各个元素(Element)修改为你喜欢的颜色(注意双击,且有时候可能需要设置多次才生效,MDK 的 bug),当然也可以在 Font 栏设置你字体的类型,以及字体的大小等。然后,点击 User Keywords 选项卡,设置用户定义关键字,以便用户自定义关键字也显示对应的颜色(对应图 4-18 中的 User Keyword/Lable 颜色)。在 User Keywords 选项卡对话框下面输入你自己定义的关键字,如图所示:
3.2 语法检测&代码提示
MDK4.70 以上的版本,新增了代码提示与动态语法检测功能,使得 MDK 的编辑器越来越好用了,这里我们简单说一下如何设置,同样,点击 ,打开配置对话框,选择 TextCompletion 选项卡,如图所示:
Text Completion 选项卡设置
Strut / Class Members,用于开启结构体/类成员提示功能。
Function Parameters,用于开启函数参数提示功能。
Symbols after xx characters,用于开启代码提示功能,即在输入多少个字符以后,提示匹配的内容(比如函数名字、结构体名字、变量名字等),这里默认设置 3 个字符以后,就开始提示。如图 所示:
代码提示
ENTER/TAB as fill-up character,使用回车和 TAB 键填充字符。
Dynamic Syntax Checking,则用于开启动态语法检测,比如编写的代码存在语法错误的时候,会在对应行前面出现 图标,如出现警告,则会出现 图标,将鼠标光标放图标上面,则会提示产生的错误/警告的原因,如图所示:
语法动态检测功能
这几个功能,对我们编写代码很有帮助,可以加快代码编写速度,并且及时发现各种问题。不过这里要提醒大家,语法动态检测这个功能,有的时候会误报(比如 sys.c 里面,就有误报),大家可以不用理会,只要能编译通过(0 错误,0 警告),这样的语法误报,一般直接忽略即可。
3.3 代码编辑技巧
这里给大家介绍几个我常用的技巧,这些小技巧能给我们的代码编辑带来很大的方便,相信对你的代码编写一定会有所帮助。
1. TAB 键的妙用
首先要介绍的就是 TAB 键的使用,这个键在很多编译器里面都是用来空位的,每按一下移空几个位。如果你是经常编写程序的对这个键一定再熟悉不过了。但是 MDK 的 TAB 键和一般编译器的 TAB 键有不同的地方,和 C++的 TAB 键差不多。MDK 的 TAB 键支持块操作。也就是可以让一片代码整体右移固定的几个位,也可以通过 SHIFT+TAB 键整体左移固定的几个位。
假设我们前面的串口 1 中断回调函数如图所示:
头大的代码
上图的代码很不规范,这还只是短短的 30 来行代码,如果你的代码有几千行,全部是这个样子,不头大才怪。这时我们就可以通过 TAB 键的妙用来快速修改为比较规范的代码格式。选中一块然后按 TAB 键,你可以看到整块代码都跟着右移了一定距离,如图所示:
代码整体偏移
接下来我们就是要多选几次,然后多按几次 TAB 键就可以达到迅速使代码规范化的目的最终效果如图所示:
修改后的代码经过这样的整理之后,整个代码一下就变得有条理多了,看起来很舒服。
2. 快速定位函数/变量被定义的地方
上一节,我们介绍了 TAB 键的功能,接下来我们介绍一下如何快速查看一个函数或者变量所定义的地方。
大家在调试代码或编写代码的时候,一定有想看看某个函数是在那个地方定义的,具体里面的内容是怎么样的,也可能想看看某个变量或数组是在哪个地方定义的等。尤其在调试代码或者看别人代码的时候,如果编译器没有快速定位的功能的时候,你只能慢慢的自己找,代码量比较少还好,如果代码量一大,那就郁闷了,有时候要花很久的时间来找这个函数到底在哪里。型号 MDK 提供了这样的快速定位的功能。只要你把光标放到这个函数/变量(xxx)的上面(xxx 为你想要查看的函数或变量的名字),然后右键,弹出如图 所示的菜单栏 :
快速定位
我们找到 RCC_GetClocksFreq(&clocks); 这个地方,然后单击左键就可以快速跳到 RCC_GetClocksFreq 函数的定义处(注意要先在 Options for Target 的Output 选项卡里面勾选 Browse Information 选项,再编译,再定位,否则无法定位!)。如图所示:
定位结果
对于变量,我们也可以按这样的操作快速来定位这个变量被定义的地方,大大缩短了你查找代码的时间。很多时候,我们利用 Go to Definition 看完函数/变量的定义后,又想返回之前的代码继续看,此时我们可以通过 IDE 上的 按钮(Back to previous position)快速的返回之前的位置,这个按钮非常好用!
3. 快速注释与快速消注释
接下来,我们介绍一下快速注释与快速消注释的方法。在调试代码的时候,你可能会想注释某一片的代码,来看看执行的情况,MDK 提供了这样的快速注释/消注释块代码的功能。也是通过右键实现的。这个操作比较简单,就是先选中你要注释的代码区,然后右键,选择Advanced→Comment Selection 就可以了。
以 led_init 函数为例,比如我要注释掉下图中所选中区域的代码,如图所示:
选中要注释的区域
我们只要在选中了之后,选择右键,再选择 Advanced→Comment Selection 就可以把这段代码注释掉了。执行这个操作以后的结果如图 所示:
注释完毕
这样就快速的注释掉了一片代码,而在某些时候,我们又希望这段注释的代码能快速的取消注释,MDK 也提供了这个功能。与注释类似,先选中被注释掉的地方,然后通过右键→Advanced,不过这里选择的是 Uncomment Selection。
3.4 其他小技巧
除了前面介绍的几个比较常用的技巧,这里还介绍几个其他的小技巧,希望能让你的代码编写如虎添翼。
第一个是快速打开头文件。在将光标放到要打开的引用头文件上,然后右键选择 Open document“XXX”,就可以快速打开这个文件了(XXX 是你要打开的头文件名字)。如图所示:
第二个小技巧是查找替换功能。这个和 WORD 等很多文档操作的替换功能是差不多的,在 MDK 里面查找替换的快捷键是“CTRL+H”,只要你按下该按钮就会调出如图 所示界面:
替换文本
这个替换的功能在有的时候是很有用的,它的用法与其他编辑工具或编译器的差不多,相信各位都不陌生了,这里就不啰嗦了。
第三个小技巧是跨文件查找功能,先双击你要找的函数/变量名(这里以系统时钟初始化函数:wizchip_bus_readbyte为例),然后再点击 IDE 上面的 ,弹出如图所示对话框:
跨文件查找
点击 Find All,MDK 就会帮你找出所有含有 wizchip_bus_readbyte字段的文件并列出其所在位该方法可以很方便的查找各种函数/变量,而且可以限定搜索范围(比如只查找.c 文件和.h 文件等),是非常实用的一个技巧。