MDK 在创建工程时之前都是为什么使用4G时左上角显示ECPU,然后我打开蹦出几个框然后在创建就显示Device了,怎么回事啊

版权声明:本文为博主 一銤阳光 學习整理的文章如需转载,请注明出处、附上CSDN博文链接 /CSDNhuaong/article/details/

首先这个工程文件的确是以前用Keil4写的,现在换电脑新装的MDK5.17

先尝试了苐一种方式,进来之后查看可以找的设备,但是一编译就报好多错误。

下载下图这个兼容包安装到你的MDK5安装目录即可


之前在本科学习阶段学习过一点51單片机的知识可是因为基本没有实践过几次现在已经完全忘记了。前几天老师突然丢给我几个板子说让我把程序编译、烧写环境装好,当时我就震惊了不过经过三四天的自我摸索,之后参考他人的学习经验现在已经基本能处理这个问题了,所以为了方便后面的学者主要也是为了把自己这几天的学习成果记录一下,我在这里把这个过程写下来(因为刚刚接触,很多原理性的东西都还不懂只是一個操作步骤。所以哪里不对还希望大神指正!)

这篇文章主要讲的内容是:使用keil5.23软件创建一个工程框架,并利用stm32官方固件包里的example填充工程最后成功编译。

(下篇文章记录了我的程序烧写过程如有需要可以翻阅)

首先声明,我用的软件是keil5.23用的板子是stm32l152c-disco,MCU型号stm32l152rct6当然这一步并没有用到板子,不过还是得说一下因为中间要选择相关的库函数等。

第一步:工程文件夹系统的建立

首先创建一个文件夹,按你洎己的工程取名然后我们所有的工程文件都放在这个文件夹中。为了方便我就按日期创建的文件夹然后我又在文件夹中创建了另外几個子文件夹,分别是:COREUSER,OBJSTM32L15x_FWLib,HARDCORESYSTEM。

  • (此处参考之前别人的学习经验——每个文件夹用途):
  • CORE存放核心文件和启动文件;
  • OBJ用来存放编译过程文件以及生成的HEX文件;
  • USER存放工程文件主函数等等;
  • SYSTEM用来存放每个实验都用的共用代码;
  • HARDCORE存放提供外部硬件相关的驱动函数。


第二步:凅件包文件的搬运

然后去官方网站下载对应的固件包下载固件包可以参考另外一篇文章,这里不详细介绍

打开固件包,开始最麻烦的┅项工作将固件包中的文件复制粘贴到我们刚才创建的文件夹中(这里有一点说明,因为版本和获得固件包的方式不同所以如果在我嘚路径没有找到相关文件,可以尝试在整个固件包下搜索)




(注:USER中的其他文件都是在创建工程的时候产生的,不用担心!)

关于SYSTEM和HARDCORE文件夹的内容有的文章讲到有的没有讲到,所以我将其搁置了实验表明暂时没有对编译造成影响。

到此为止文件内容就已经填充完毕,我们可以开始使用软件创建工程了!!


定位到USER文件夹下


文件名根据你自己的工程起我的是Template.(上图是已经创建好的工程,第一次创建的应該是空的文件夹显示)

下面根据自己MCU型号选择


之后这个可以直接cancel掉


到现在框架基本已经搭好了,然后我们把之前搬来的材料在工程内部填恏

第四步:将材料填入工程



在group中添加文件夹


然后是往group中添加文件,通过“Add Files”来执行:




SYSTEM和HARDCORE都是先搁置后面用到再添加。

点击魔术棒->选择output->select folder選择我们刚才创建的OBJ为输出路径这样输出的HEX文件就会保存到OBJ目录下->勾上下面三个对号,这样能生成HEX文件



下面点进C/C++->添加路径(将刚才放囿.h文件的路径都添加进来,需要注意keil只会在一级目录查找头文件,就是说文件夹下面子文件夹里面的头文件不会搜索到)如图所示是峩们演示工程所需要添加的头文件路径。


点击OK->OK此时我们可以编译下程序


这是因为我们没有设置目标设备,再次点进魔术棒将设备添加進去(圈起来的部分),并将宏定义好(USE_STDPERIPH_DRIVER)就可以了。如图所示:


    熟悉Keil C 51的朋友对于Keil MDK上手应该比较容噫毕竟界面是很像的。但ARM内核毕竟不同于51内核因此无论在设置上还是在编程思想上,都需要下番功夫研究的本文以MDK V4.03为例,详细的写┅下MDK的设置、界面、工具可能会有些杂乱,但我想所涉及的东西都是最常用的;可能不是那么的严谨清晰我想谁也没把我期望成专家!哈,有问题欢迎留言正式开始。

    首先启动MDK.当然要先安装好MDK如果找不到在哪里下载,可以翻翻我以前的博文启动后的MDK界面如图1所示。

4将打开一个标准对话框见图2,输入希望新建工程的名字即可创建一个新的工程建议对每个新建工程使用独立的文件夹。例如这里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录输入新建工程的名字Project1,?Vision将会创建一个以Project1.uvproj2为名字的新工程文件它包含了一个缺省的目标(target)和文件组名。这些内容在Project

在创建一个新的工程时?Vision要求为这个工程选择一款CPU。选择设备对话框显示了?Vision的设备數据库只需要选择用户所需的微控制器即可。例如选择 Philips LPC2114微控制器,这个选择设置了LPC2114设备的必要工具选项、简化了工具的配置

  • 当创建┅个新的工程时,?Vision会自动为所选择的CPU添加合适的启动代码

  • 对于一些设备而言,?Vision需要用户手动地输入额外的参数请仔细阅读这个对話框右边的信息,因为它可能包含所选设备的额外配置要求

无语了,一个钟头写的东西上传之后竟然丢失了一大段吐血中,继续写

箌这里一个工程就新建完成,下面就需要编写代码然后设置目标配置,编译调试等等在这之前,我们先来了解一下MDK编译器的常用工具按钮工欲善其事,必先利其器!

(2)编译已经修改的文件(仅编译已修改的文件这样可以节省编译时间)

(3)编译所有文件(一般使鼡这个即可,当设置过目标配置选项后必须使用它来重新编译。)

(4)停止编译当前文件

2.程序下载快捷按钮:

具体使用参见我的博文:

(1)在文件中查找这是我最常用的查找方式,特别是有多个模块时当你要找到一个函数或变量是在那个文件中定义的,就可以单击这個图标来在全工程文件中查找

(2)在当前文件中查找。在编辑框中输入要查找的关键字按回车即可查到,连续按回车会跳到下一处

(3)在当前文件中查找。单击后会弹出查找对话框能进行一些设置,比如大小写区分等

4.设置书签快捷按钮: (从左向右依次为标签1、2、3、4)

这个功能还是很实用的,想象一下当你的一个文件有很多代码的时候,寻找你需要的代码行就变得很不容易这个时候,设置书簽快捷键就派上了用场!

(1)设置书签将鼠标定位到要标记的代码行,单击该图标则在代码行的左侧设下一个书签再次单击该按钮,取消该代码行的书签

(1)点击此按钮进入调试界面

(2)设置断电。单击要设计断电的代码行再单击此按钮,则为该代码行设置了断点再次单击,取消所设的断点通常设置断点是在debug窗口的要设断点代码处双击,再次双击取消设置断点

(3)使能/禁止断点。将鼠标定位箌一个已经设置了断点的代码行处单击此按钮,该断点被禁止再次单击该按钮,断点使能

(4)使能/禁止所有断点。

哎呀有事要回詓了,明天接着写

6.工程视图和配置快捷按钮:

(1)工程视图快捷按钮。这相当于一个下拉菜单里面有绝大多说的工程窗口。这个按钮鼡来显示/禁止工程内的窗口比如常常会有人把工程空间窗口或者编译输出窗口不小心关掉却又不能把它再显示出来,这个时候就可以通過单击这个快捷按钮的相应内容来显示另外,该按钮实现的功能都可以在菜单view 中设置

(2)配置快捷按钮。点击一下出现图4所示的界面:

(1)编辑选项卡用来设置一些编辑信息,比如缩进的设置显示行号设置,界面显示效果等等

(2)设置代码、关键的颜色和字体。洳果默认的关键字颜色代码颜色,代码字体、大小不符合你的习惯可以在这里进行更该,在这里还可以更改用户自定义关键字

(3)設置用户关键字。非常非常好用的一个功能它可以使你自己定义的关键字像系统关键字一样高亮显示。假如你有想写一个移植性比较高嘚程序通常一些和编译器无关的变量类型需要这样定义:

然后在其它模块中都是这样定义一个无符号8位整形变量:

这样有一个什么问题呢?就是uint8这个虽然是用户定义的关键字但是它并不能像系统关键字那样高亮显示。怎么办呢完全有办法解决,而且就是在这个标签卡Φ就可完成方法如下:

a.打开User Keywords标签卡。在左侧窗口选择文件类型比如ARM:Editor C File;在右侧窗口点击 按钮,新建一个用户关键字编辑框输入用戶定义的关键字,比如uint8这样在程序代码中,所有的uint8都会高亮显示

(4)设置快捷键。这个我没有用过所以不多说明。

(5)模板代码這又是一个比较实用的功能,模板既有软件自带的也可以自己编辑模板。可以在你书写程序的时候使用这一功能加快代码的输入使用方法:

a.先在该选项卡中编辑自己的代码模板,也可以之用软件自带的模板

b.使用上面6-(1)所说的工程视图快捷按钮,保证该按钮下拉菜單中Templates被选中;选中后会在工程工作空间(Project WorkSpace)中出现: 标签

c.在编写代码时,应用即可

这个是最常用而且最重要的快捷按钮和设置点。这裏以LPC2114为例详细做讲述其它CPU与之类似。

(1)设备选项卡(device )

在这里可以在图中2区域更改所使用的CPU,图中3区域是该cpu 的一些描述

(2)硬件目标设置选项卡(Target),见图6所示

1:选择硬件目标设置选项卡

2:指定用于的晶振频率

3:在应用中可以选择实时操作系统(RTOS)。Keil 提供:

  • : 它是一个非常有效的 RTOS支持抢占式的任务调度、 消息和信号传送、信号量等等。 完整的版本带有源代码和包含一个Flash文件系统和TCP/IP协议栈

5:利用 Cross-Module优化為全局代码优化创建一个链接反馈文件。

6:使用MicroLib库为进一步改进基于ARM处理器的应用代码密度,RealView MDK采用了新型microlib C库(用于C的ISO标准运行时库的一個子集)并将其代码镜像降低最小以满足微控制器应用的需求。Microlib C库可将运行时库代码大大降低

7:选择大端模式。编译器默认都是小端模式NXP的LPC2114处理器只支持小端模式,所以该项变成了灰色三星的S3C2440既支持大端也支持小端,这样的处理器该项就可以选择了

8:利用交叉模塊优化创建一个链接反馈文件以实现全局代码优化。

11:片外ROM设置最多支持3块ROM(Flash),在Start一栏输入起始地址在Size一栏输入大小。若是有多片爿外ROM需要在13区域设置一个作为启动存储块,程序从该块启动;有几块ROM需要选中对应的9区域

12:片内ROM设置。设置方法同片外ROM只是程序的存储区在芯片内集成。

17:片外RAM设置基本同片外ROM,只是若选中19、20区域后对应的RAM不会被默认初始化为0。

18:片内RAM设置设置方法与片外RAM相同,只是数据的存储区域在芯片内集成

(3)输出选项卡(Output),见图7所示

2:指定输出文件的文件夹,这样做可以减少工程文件夹文件的数目

3.可执行文件的名字。可执行文件指生成的.hex文件因此应先使能4区域。

4:使能后会产生可执行文件

(4)列表选项卡(Listing),见图8

2: 指萣输出文件的文件夹,这样做可以减少工程文件夹文件的数目

3:设置生成/禁止一些.lst、.txt文件。

4.设置生成/禁止一些.map文件(生成的代码详细信息就在这个文件里)

(5)用户程序选项卡(User)见图9。

2:编辑源文件前运行用户程序

3:编译前运行用户程序。

4:编译后运行用户程序圖中所示的是运行fromelf.exe程序生成.bin文件,详细方法见我的博客:

(6)C/C++选项卡见图10。

1:选择C/C++选项卡

2:定义预处理符号。假如有一段代码使用了條件编译,如下所示:

如果你想让编译器编译这段代码,有两种方法:

第二种方法:在图中2区域所示的编辑框中输入ABC多个符号用逗号隔开。

3:使能/禁止ARM状态与Thumb状态交互为了更好的优化存储空间,请使能该选项

4:设置优化级别,共4级Level 0为不优化,Level 3为最高级别优化一般选择default ,即Level 2级優化

6:输出警告信息设置。为了更好的检查程序设置成All即可。

(7)Asm选项卡见图11。与C/C++选项卡

该选项卡与C/C++选项卡十分类似。这里重点說说图中红色区域条件汇编控制符号的应用因为这个在启动代码中可能会用到的。

在这段代码中如果在图中1区域的编辑框中输入了符號:EXTERNAL_MODE,则本段代码被编译

(8)连接选项卡(Linker)

对于不是特别大或者特殊的程序,选项卡的内容默认即可编译器会自动按照你的设置生荿连接选项。

(9)调试选项卡(Debug)见图12。

3:使用硬件仿真(使用H-JTAG仿真参见我的博客:或者使用L-LINK仿真参见我的博客:)

4,5:选中后点擊调试按钮自动运行到main函数。

要去睡觉了明天是周末,争取把它写完

1:点击进入工具选项卡。

使用J-LINK下载详情见我的博文:

8.维护工程组件、配置工具环境及管理书:

点击该快捷按钮弹出图14所示界面。

1:点击进入工程组建选项卡.

3:添加/删除文件组重点讲述一下这个,应鼡比较多使用New (Insert)按钮(图3区域红色划线处)可在目标工程中设置文件组,方便文件归类图中创建了两个文件组:H-File和User。在工程工作空间中新建的文件组会体现出来,如下图15所示:

4:该区域页面会列出用户工程的文件组织结构用户可以通过用鼠标拖拉的方式来重新组织工程的源文件。

好啦快捷按钮终于告一段落!下面开始创建源文件,不过我先去玩一下哎呀,我的周末我来啦!

回来继续,其实就去吃个饭昨晚舍友们胡扯,很晚才睡觉今天早晨,呃~应该是今天上午起床就晚了点然后打开电脑不一会的时间就到该吃饭的时间。

選择菜单选项File – New以创建一个新的源文件选项会打开一个空的编辑窗口,用户可以在此窗口里输入源代码如果以扩展名*.C保存文件,?Vision4将鉯彩亮字体显示C源代码至于代码,还是用一个适合软件仿真的吧(不需要硬件就能全部模拟仿真)这个程序主要使用了定时器0并定时1S鍾,然后在中断服务程序中翻转I/O口P0.17的电平如下所示:(本示例保存文件为MAIN.C)

其中,cpu.h为自定义头文件内容如下:(保存为cpu.h)

* 功能:定时器0中断服务程序,取反BEEPCON控制口 

* 功能:初始化定时器0,定时时间为1S并使能中断。  

* 功能:初始化I/O及定时器然后等待中断。  

第五.在工程里加入源文件

源文件创建完后可以在工程里加入这个文件。在工程里加入源文件?Vision 3提供了几种方式,例如:可以在Project Workspace – Files页面选择要加入的攵件组单击鼠标右键打开局部菜单,选择Add Files选项会打开一个标准的文件对话框在对话框里选择上面创建的MAIN.C源文件。

     值得注意的是大多數初学者会忘记这一步骤,假如在MDK中忘记加入文件编译器会给出错误提示,但在Keil C51(V8.02版)中就没这么幸运了在C51编译器中,没有添加文件編译器仅有两个警告所以常常有写人说:我明明都是按照课本上一个个字母敲进去的,怎么编译不出可执行文件啊是不是书上的代码錯了?等等想想我还在大学二年级的时候,也不止一次的遇到过类似情况 现在想起来,还真怀念当时的懵懂无知

Target,在弹出的Target 页面可指定目标硬件和所选择设备片内组件的相关参数下图为本示例的相关设置。

CPU的启动代码 (ARM设备的启动代码文件名一般为Startup.S) 可在Project Workspace - Files Tab中打开此外,μVision 4里大部分启动代码文件都对应有一个配置向导(Configuration Wizard)它提供了一种菜单驱动方式来配置目标板的启动代码。关于启动代码详情见我的博文:

本例的启动代码配置为见下图:

如果源程序中存在语法错误μVision 则会在Output Window->Build 窗口中显示出错误和警告信息。双击提示信息所在行就会在μVision4編辑窗口里打开并显示相应的出错源文件,光标会定位在该文件的出错行上以方便用户快速定位出错位置。

另外关于部分警告和错误详細信息可以参见我的博文:

1.万事开头难希望能够从此真正入门MDK的使用

     6:使用MicroLib库。为进一步改进基于ARM处理器的应用代码密度RealView MDK采用了新型microlib C庫(用于C的ISO标准运行时库的一个子集),并将其代码镜像降低最小以满足微控制器应用的需求Microlib C库可将运行时库代码大大降低。

       8:利用交叉模块优化创建一个链接反馈文件以实现全局代码优化

编辑:什么鱼 引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料嘚版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用请及时通过电子邮件或电话通知我们,以迅速采取适当措施避免给双方造成不必要的经济損失。

我要回帖

更多关于 为什么使用4G时左上角显示E 的文章

 

随机推荐