keil mdk_keil mdk入门 - CSDN
精华内容
参与话题
  • keil(MDK) 5官方下载教程

    万次阅读 2019-05-23 19:23:21
    一、KEIL Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售...

    一、KEIL

    Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器宏汇编程序调试器连接器、库管理器、固件实时操作系统核心(real-time kernel)。有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。其Keil C51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。

    MDK 即RealView MDK 或MDK-ARM(Microcontroller Development kit),是 ARM 公司收购Keil公司以后,基于uVision界面推出的针对ARM7、ARM9、Cortex-M0、Cortex-M1、Cortex-M2、Cortex-M3、Cortex-R4等ARM处理器的嵌入式软件开发工具。MDK-ARM 集成了业内最领先的技术,包括 uVision4 集成开发环境与 RealView 编译器RVCT。支持 ARM7、ARM9 和最新的Cortex-M3/M1/M0 核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设备模拟,性能分析等功能,与 ARM 之前的工具包 ADS 等相比,RealView 编译器的最新版本可将性能改善超过 20%。

    Keil公司开发的ARM开发工具MDK,是用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照计划完成项目。

    二、CSDN下载:

    CSDN下载参考(简单方便):https://blog.csdn.net/qq_42748213/article/details/90485750

    三、官方下载:

    官方下载地址:http://www2.keil.com/mdk5

    四、下载教程:

    1.打开官方网站,并点击下载MDK5

    2.按照要求填写信息并点击提交

    3.点击下载

    4.等待下载

    5.点击下载

    至此官方下载MDK5完成

     

     

    欢迎加入技术交流群QQ:1025190937

    展开全文
  • Keil MDK从未有过的详细使用讲解

    万次阅读 多人点赞 2013-06-21 15:20:41
    这博主关于MDK 的使用的文章,写的得TM的好 TM的实用!... 熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的。但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功

    转自博客:http://blog.csdn.net/zhzht19861011/article/details/5846510

    这博主关于MDK 的使用的文章,写的得TM的好  TM的实用! 真心收藏!发火

     

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

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

     

    图1 MDK界面

    第二.新建一个工程。

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

    图2

    第三.选择设备

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

    图3

    注意:

    • 当创建一个新的工程时,µVision会自动为所选择的CPU添加合适的启动代码。
    • 对于一些设备而言,µVision需要用户手动地输入额外的参数。请仔细阅读这个对话框右边的信息,因为它可能包含所选设备的额外配置要求。

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

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

    1.编译快捷按钮:

    (1)编译当前文件

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

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

    (4)停止编译当前文件

    2.程序下载快捷按钮:

    具体使用参见我的博文:http://blog.csdn.net/zhzht19861011/archive/2010/10/06/5924218.aspx

    3.查找快捷按钮:

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

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

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

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

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

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

    (2)跳到上一书签。

    (3)跳到下一书签。

    (4)取消所有书签

    5.调试快捷按钮:

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

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

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

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

    (5)取消所有断点。

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

    一晚上过去,继续写。

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

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

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

     图4

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

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

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

    typedef unsigned char  uint8;                  /*  无符号8位整型变量  */
    typedef signed   char  int8;                      /* 有符号8位整型变量  */
    typedef unsigned short uint16;                /* 无符号16位整型变量 */

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

    uint8 test;     //定义变量

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

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

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

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

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

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

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

    7.目标工具选项(Target Options …):

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

    µVision可以设置目标硬件的选项。通过上面的工具栏按钮或Project - Options for Target菜单项打开Options for Target对话框,如图5所示。在Target页中设置目标硬件及所选CPU片上组件的参数。

    (1)设备选项卡(device )。

     图5

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

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

     

    图6

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

    2:指定用于的晶振频率

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

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

    4:指定选择 ARM 或者 Thumb 模式进行代码生成。

    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所示。

     

    图7

    1:选择输出选项卡

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

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

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

    5.创建批文件

    6.生成库文件

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

    图8

    1:选择列表选项卡

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

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

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

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

    图9

    1:选择用户选项卡。

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

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

    4:编译后运行用户程序。图中所示的是运行fromelf.exe程序生成.bin文件,详细方法见博客:http://blog.csdn.net/yx_l128125/article/details/9145695

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

     

    图10

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

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

    #if ABC
    void  delay_tus(uint32  dly)
    {
        uint8 i;

        for (; dly>0; dly--)
            for (i=0; i<4; i++);
    }
    #endif

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

    第一种方法:使用#define ABC

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

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

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

    5:附加的优化选项。

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

    7:头文件路径设置。

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

     图11

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

    摘录一段启动代码:

    IF      :DEF:EXTERNAL_MODE
                   LDR     R0, =PINSEL2
                   LDR     R1, =PINSEL2_Val
                   STR     R1, [R0]
    ENDIF

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

    (8)连接选项卡(Linker)

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

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

     图12

    1:打开调试选项卡。

    2:使用软件仿真。

    3:使用硬件仿真。(使用H-JTAG仿真参见我的博客:http://blog.csdn.net/zhzht19861011/archive/2010/08/28/5846510.aspx或者使用L-LINK仿真参见我的博客:http://blog.csdn.net/zhzht19861011/archive/2010/10/06/5924218.aspx

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

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

    (10)工具选项卡(Utilities),见图13。

    图13

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

    2.配置Flsah下载按钮(即:

    使用J-LINK下载详情见我的博文:http://blog.csdn.net/zhzht19861011/archive/2010/10/06/5924218.aspx

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

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

    (1)工程组建选项卡(Project Components)。

     图14

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

    2:工程目标组建。

    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)

    1. /* 
    2. ********************************Copyright (c)****************************** 
    3. ** File name:           main.c 
    4. ** Last modified Date:  2010-09-26 
    5. ** Last Version:        1.0 
    6. ** By:                  瓶盖 
    7. ** 
    8. **************************************************************************** 
    9. */  
    10. #include <LPC21xx.H>   
    11. #include "cpu.h"   
    12. #define   BEEPCON  (1<<17)        /* P0.17引脚控制B1,低电平蜂鸣 */  
    13.   
    14.   
    15.   
    16. /**************************************************************************** 
    17. * 名称:IRQ_Time0() 
    18. * 功能:定时器0中断服务程序,取反BEEPCON控制口。 
    19. * 入口参数:无 
    20. * 出口参数:无 
    21. ****************************************************************************/  
    22. void __irq  IRQ_Time0(void)  
    23. {    
    24.     if( (IO0SET&BEEPCON) == 0 )     //使I/O口P0.17每隔1秒翻转一次  
    25.         IO0SET = BEEPCON;     
    26.     else    
    27.         IO0CLR = BEEPCON;                           
    28.    T0IR = 0x01;                 // 清除中断标志   
    29.    VICVectAddr = 0x00;               // 通知VIC中断处理结束  
    30. }  
    31.   
    32.   
    33. /* 
    34. ************************************************************************** 
    35. * 名称:Time0Init() 
    36. * 功能:初始化定时器0,定时时间为1S,并使能中断。  
    37. * 入口参数:无 
    38. * 出口参数:无 
    39. *************************************************************************** 
    40. */  
    41. void  Time0Init(void)  
    42. {   /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz 
    43.        Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz 
    44.     */  
    45.     T0PR = 99;                // 设置定时器0分频为100分频,得110592Hz  
    46.     T0MCR = 0x03;            // 匹配通道0匹配中断并复位T0TC  
    47.     T0MR0 = 110592;              // 比较值(1S定时值)  
    48.     T0TCR = 0x03;            // 启动并复位T0TC   
    49.     T0TCR = 0x01;   
    50.       
    51.     /* 设置定时器0中断IRQ */  
    52.     VICIntSelect = 0x00;        // 所有中断通道设置为IRQ中断  
    53.     VICVectCntl0 = 0x24;    // 定时器0中断通道分配最高优先级(向量控制器0)  
    54.     VICVectAddr0 = (uint32)IRQ_Time0;   // 设置中断服务程序地址向量   
    55.     VICIntEnable = 0x00000010;           // 使能定时器0中断  
    56. }  
    57.   
    58. */  
    59. /********************************************************************** 
    60. * 名称:main() 
    61. * 功能:初始化I/O及定时器,然后等待中断。  
    62. * 说明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。 
    63. ************************************************************************ 
    64. */  
    65. int  main(void)  
    66. {  PINSEL0 = 0x00000000;            // 设置管脚连接GPIO     
    67.    IO0DIR = BEEPCON;            // 设置I/O为输出  
    68.    IO0CLR=BEEPCON;  
    69.    Time0Init();             // 初始化定时器0及使能中断  
    70.    while(1);                // 等待定时器0中断  
    71.      
    72.    return(0);  
    73. }  
    74.   
    75. /************************************************************************* 
    76. **                            End Of File 
    77. *************************************************************************/  
    /*
    ********************************Copyright (c)******************************
    ** File name:			main.c
    ** Last modified Date:  2010-09-26
    ** Last Version:		1.0
    ** By:					瓶盖
    **
    ****************************************************************************
    */
    #include <LPC21xx.H>
    #include "cpu.h"
    #define	  BEEPCON  (1<<17)		/* P0.17引脚控制B1,低电平蜂鸣 */
    
    
    
    /****************************************************************************
    * 名称:IRQ_Time0()
    * 功能:定时器0中断服务程序,取反BEEPCON控制口。
    * 入口参数:无
    * 出口参数:无
    ****************************************************************************/
    void __irq  IRQ_Time0(void)
    {  
    	if( (IO0SET&BEEPCON) == 0 ) 	//使I/O口P0.17每隔1秒翻转一次
    		IO0SET = BEEPCON;	
       	else  
    		IO0CLR = BEEPCON;    		        	  
       T0IR = 0x01;	    			// 清除中断标志
       VICVectAddr = 0x00;		         // 通知VIC中断处理结束
    }
    
    
    /*
    **************************************************************************
    * 名称:Time0Init()
    * 功能:初始化定时器0,定时时间为1S,并使能中断。 
    * 入口参数:无
    * 出口参数:无
    ***************************************************************************
    */
    void  Time0Init(void)
    {   /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
    	   Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
    	*/
    	T0PR = 99;	              // 设置定时器0分频为100分频,得110592Hz
    	T0MCR = 0x03;		     // 匹配通道0匹配中断并复位T0TC
    	T0MR0 = 110592;	    	     // 比较值(1S定时值)
    	T0TCR = 0x03;		     // 启动并复位T0TC
    	T0TCR = 0x01; 
    	
    	/* 设置定时器0中断IRQ */
    	VICIntSelect = 0x00;		// 所有中断通道设置为IRQ中断
    	VICVectCntl0 = 0x24;	// 定时器0中断通道分配最高优先级(向量控制器0)
    	VICVectAddr0 = (uint32)IRQ_Time0; 	// 设置中断服务程序地址向量 
    	VICIntEnable = 0x00000010;	         // 使能定时器0中断
    }
    
    */
    /**********************************************************************
    * 名称:main()
    * 功能:初始化I/O及定时器,然后等待中断。 
    * 说明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。
    ************************************************************************
    */
    int  main(void)
    {  PINSEL0 = 0x00000000;			// 设置管脚连接GPIO   
       IO0DIR = BEEPCON; 			// 设置I/O为输出
       IO0CLR=BEEPCON;
       Time0Init();				// 初始化定时器0及使能中断
       while(1);				// 等待定时器0中断
       
       return(0);
    }
    
    /*************************************************************************
    **                            End Of File
    *************************************************************************/
    


     

    1. #ifndef __CPU_H   
    2. #define __CPU_H   
    3.   
    4. /***************************************************** 
    5. *              定义数据类型操作符* 
    6. ******************************************************/  
    7. typedef unsigned char  uint8;                   /* 无符号8位整型变量  */  
    8. typedef signed   char  int8;                    /* 有符号8位整型变量  */  
    9. typedef unsigned short uint16;                  /* 无符号16位整型变量 */  
    10. typedef signed   short int16;                   /* 有符号16位整型变量 */  
    11. typedef unsigned int   uint32;                  /* 无符号32位整型变量 */  
    12. typedef signed   int   int32;                   /* 有符号32位整型变量 */  
    13. typedef float          fp32;                    /* 单精度浮点数(32位长度) */  
    14. typedef double         fp64;                    /* 双精度浮点数(64位长度) */  
    15.   
    16.   
    17. /****************************************************** 
    18. *       定义测试屏蔽语句,书写测试代码时: 
    19. *              #ifdef TEST_CODE 
    20. *              测试语句... 
    21. *              #endif 
    22. *       正式下载时,将下句:#define TEST_CODE 屏蔽掉。 
    23. ******************************************************/  
    24. #define TEST_CODE   //正式下载时屏蔽掉该句,防止有测试代码带入正式程序  
    25. /**************************************************************** 
    26.  
    27. ** End Of File  
    28.  
    29. ******************************************************************/  
    #ifndef __CPU_H
    #define __CPU_H
    
    /*****************************************************
    *              定义数据类型操作符*
    ******************************************************/
    typedef unsigned char  uint8;                   /* 无符号8位整型变量  */
    typedef signed   char  int8;                    /* 有符号8位整型变量  */
    typedef unsigned short uint16;                  /* 无符号16位整型变量 */
    typedef signed   short int16;                   /* 有符号16位整型变量 */
    typedef unsigned int   uint32;                  /* 无符号32位整型变量 */
    typedef signed   int   int32;                   /* 有符号32位整型变量 */
    typedef float          fp32;                    /* 单精度浮点数(32位长度) */
    typedef double         fp64;                    /* 双精度浮点数(64位长度) */
    
    
    /******************************************************
    *       定义测试屏蔽语句,书写测试代码时:
    *              #ifdef TEST_CODE
    *              测试语句...
    *              #endif
    *       正式下载时,将下句:#define TEST_CODE 屏蔽掉。
    ******************************************************/
    #define TEST_CODE	//正式下载时屏蔽掉该句,防止有测试代码带入正式程序
    /****************************************************************
    
    ** End Of File 
    
    ******************************************************************/
    
    

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

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

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

    第六.设置目标工具选项

           μVision 4 允许用户根据目标硬件的实际情况对工程进行配置。通过点击目标工具栏图标()或单击菜单项Project->Options for Target,在弹出的Target 页面可指定目标硬件和所选择设备片内组件的相关参数,下图为本示例的相关设置。

     

           另外,如果需要生成Intel HEX 文件,用于下载到EPROM 编程器中或仿真器中。在Options for Target->Output中选择Create HEX file 选项,μVision  4会在编译过程中同时产生HEX 文件。

     

    第七.配置启动代码

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

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

     

     第八.编译工程

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

    另外关于部分警告和错误详细信息可以参见我的博文:http://blog.csdn.net/zhzht19861011/archive/2010/08/19/5823537.aspx

     

    终于告一段落!

     

     

     

     

     

    展开全文
  • KeilMDK-ARM)系列教程

    千次阅读 2017-12-22 09:37:30
    MDK

    本文汇总了Keil相关的文章。虽然文章以MDK-ARM V5为例,但是大部分内容也适合于MDK-ARM其它版本,以及Keil C51等。


    关于Keil(MDK-ARM)系列教程已经更新,可以关注我微信公众号查看查看更多内容。


    专栏:Keil(MDK-ARM)系列教程




    Keil(MDK-ARM)介绍、下载、安装与注册

    该文讲述了Keil的下载地址、安装过程、注册方法。


    Keil(MDK-ARM)系列教程(一)_新建软件工程详细过程

    该文以Keil(MDK-ARM)V5.21a开发环境、以STM32的处理器为例讲述Keil新建工程的详细过程。


    Keil(MDK-ARM)系列教程(二)_工具栏详细说明

    该文主要讲述关于Keil工具栏按钮(快捷按钮)的使用方法。它包含文件工具栏 和编译工具栏,也就是我们初学者常使用的编译、下载、调试等这两行按钮的使用方法。


    Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)

    该文主要讲述关于Keil的工程目标选项配置的前五项说明。

     

    Keil(MDK-ARM)系列教程(四)_工程目标选项配置(Ⅱ)

    该文主要讲述关于Keil的工程目标选项配置的前五项说明。


    Keil(MDK-ARM)系列教程(五)_Configuration(Ⅰ)

    该文主要讲述Keil的Configuartion配置前三项里面的说明,也就是Editor、Colors & Fonts、User KeyWords


    Keil(MDK-ARM)系列教程(六)_Configuration(Ⅱ)

    该文主要讲述Keil的Configuartion配置三项里面的说明,也就是Shortcut Keys快捷键、Text Completion代码完形、Other其他


    Keil(MDK-ARM)系列教程(七)_菜单

    该文主要讲述Keil菜单(File文件、Edit编辑、View视图、Project工程、Flash编程、Debug调试、Peripherals外设、Tools工具、SVCS软件版本管理、Window窗口、Help帮助)的详细说明。


    我的博客:http://blog.csdn.net/ybhuangfugui

    微信公众号:EmbeddDeveloper


    本着免费分享的原则,方便大家业余利用手机学习知识,定期在微信公众号分享相关知识。如果觉得文章的内容对你有用,又想了解更多相关的文章,请用微信搜索EmbeddDeveloper” 或者扫描下面二维码、关注,将有更多精彩内容等着你。




    展开全文
  • Keil、uVision、MDKKeil C51之间的区别比较

    万次阅读 多人点赞 2018-06-21 15:11:56
    我们要区别的概念:KEIL uVision,KEIL MDKKEIL For ARM,RealView MDKKEIL C51,KEIL C166,KEIL C251从接触MCS-51单片机开始,我们就知道有一个叫KEIL的软件。在开发单片机时,使用的是C语言或者汇编语言,...

    我们要区别的概念:KEIL uVisionKEIL MDKKEIL For ARMRealView MDKKEIL C51KEIL C166KEIL C251

    从接触MCS-51单片机开始,我们就知道有一个叫KEIL的软件。在开发单片机时,使用的是C语言或者汇编语言,我们知道,这两种语言都不能直接烧写到单片机里面,执不执行暂且不说,光是代码的体积,就足以撑破整个单片机。

    所以,我们需要一个软件,把C语言或者汇编语言编译生成单片机可执行的二进制代码,而且它的体积也非常的小,足够存放在单片机的存储器里面。KEIL公司(现在是ARM公司的一个公司)的软件恰好可以提供这样的功能,并且它还有很多优点,比如工程易于管理,自动加载启动代码,集编辑、编译、仿真一体,调试功能强大等等。因此,不管是初学单片机的爱好者,还是经验丰富的工程师,都非常喜欢使用这些软件。 

    但是,即使熟练使用了KEIL软件,有些概念我们还是不容易理清,常常混淆。KEIL、uVision、RealView、MDK、KEIL C51,它们到底有什么区别,又有什么联系?下面我们就做一个详细的分析。

    KEIL公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。

    uVision是KEIL公司开发的一个集成开发环境(IDE),和Eclipse类似。它包括工程管理,源代码编辑,编译设uVision置,下载调试和模拟仿真等功能,uVision有uVision2、uVision3、uVision4、uVision5四个版本,目前最新的版本是uVision5。它提供一个环境,让开发者易于操作,并不提供能具体的编译和下载功能,需要软件开发者添加。uVisionu通用于KEIL的开发工具中,例如MDK,PK51,PK166,DK251等。

    RealView一系列开发工具集合的称呼,简称RV,包括有RVD(RealView Debugger),RVI(RealView ICE),RVT(RealView Trace),RVDS(RealView Development Suite),RV MDK(RealView Microcontroller Development Kit)这些产品。这些都是为了让客户容易记住,采取的一个宣传策略。

    RealView 品牌

    举个例子说,米尔科技是一家主营优质ARM工控板的企业,其产品系列由工控板(开发板)、单板机和核心板组成,虽然本来可以都叫工控板,但是为了让客户清晰了解产品的功能,进行选型,所以就分为3个系列。不过2009年ARM又宣布停止使用Realview品牌,所以目前ARM就剩下了ARM和KEIL两个品牌了。

    MDK(Microcontroller Development Kit),也称MDK-ARMKEIL MDKRealView MDKKEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具,为满足基于MCU进行嵌入式软件开发的工程师需求而设计,支持ARM7,ARM9,Cortex-M4/M3/M1,Cortex-R0/R3/R4等ARM微控制器内核。

    Keil MDK

    KEIL C51,亦即PK51,KEIL公司开发的基于uVision IDE,支持绝大部分8051内核的微控制器开发工具。

    KEIL C166,亦即PK166,KEIL公司开发的基于uVision IDE,支持绝大部分XC16x,C16x和ST10系列的微控制器开发工具。

     

     

    KEIL C251,亦即DK251,是KEIL公司开发的基于uVision IDE,支持绝大部分基于251核的微控制器的开发工具。

    总结来说,KEIL公司目前有四款独立的嵌入式软件开发工具,即MDK、KEIL C51、KEIL C166、KEIL C251,它们都是KEIL公司品牌下的产品,都基于uVision集成开发环境,其中MDK是RealView系列中的一员。 


    本文来自米尔科技,原文地址: http://www.myir-tech.com/resource/512.asp,转载请注明出处。

    展开全文
  • KeilMDK-ARM)介绍、下载、安装与注册

    万次阅读 多人点赞 2019-03-08 11:21:44
    推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang ...Keil系列教程02_新建基础软件...
  • 本文讲述的内容是Keil&amp;nbsp;MDK-ARM版的介绍、下载、安装与注册,如果需要了解Keil&amp;nbsp;C51版相关的文章,可以到我转载的原博客处查看并下载。 转载的博客原地址链接:...
  • Keil(MDK) 5 软件安装教程

    万次阅读 2019-05-24 09:49:09
    一、KEIL Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售...
  • Keil MDK详细讲解

    千次阅读 2018-09-09 09:17:06
    熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的。但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的。本文以MDK V4.03为例,详细的写一下MDK的设置、界面、...
  • Keil MDK5的安装及破解详细步骤

    万次阅读 热门讨论 2019-06-02 15:06:19
    安装及破解Keil MDK5 首先是下载安装文件与破解文件,这个不详细说明。你将会得到这两个文件! 双击第一个安装文件!点击Next>> 打勾,然后Next>> 选择安装路径,建议默认即可。Next>>...
  • 1. Keil MDK下载、安装、破解 Keil MDK是适用于各种基于Arm Cortex-M的微控制器器件的完整软件开发环境。 MDK包括μVision IDE 和调试器,Arm C / C ++编译器以及必要的中间件组件。 1.1.获取MDK安装包 Keil MDK的...
  • Keil MDK介绍

    千次阅读 2014-04-16 22:38:48
    zhuan STM32微处理器基于ARM核,所以很多基于...本章将先对STM32常用的开发工具Keil MDK和IAR EWARM进行简单介绍,然后结合STM32_SK仿真评估板和STM32F103C的开发板讲解STM32片上资源使用,最后给出一个基于ST
  • keil mdk最新版MDK529

    2020-07-30 23:31:27
    Keil5 mdk最新版本mdk529版本分享大家,文件过大放到百度云网盘,提供大家下载,下载了很长时间。
  • Keil MDK-ARM系列教程

    2020-07-19 23:30:23
    Keil MDK-ARM的入门教程,讲述了软件安装、配置、使用的过程。
  • Keil MDK5 注册机

    热门讨论 2020-07-30 23:33:24
    最新版的keil mdk5注册机 支持最新的开发环境有最新的功能。
  • 含有各个版本的KEIl for C51,Keil for ARM ,下载快速稳定,请体验吧!
  • [转]Keil MDK的用法详解

    千次阅读 2017-08-01 15:26:39
    熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的。但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的。本文以MDK V4.03为例,详细的写一下MDK的设置、界面、...
  • Keil MDK默认的界面主题非常丑,话不多说,上图: 这么丑的界面不利于代码的发挥,所以接下来我们开始美化主题,更换一个Sublime Text Molokai主题~ 1.下载需要的文件 链接: 提取码: 2.备份默认主题文件 首先...
  • 学习交流可以添加 微信读者交流①群 (添加微信:coderAllen,备注加群...Keil MDK是针对基于Arm的微控制器的最全面的软件开发解决方案,包括创建,构建和调试嵌入式应用程序所需的所有组件。 MDK版本5.29包含Arm ...
  • keil3.0到5.11,我一直都用这一个!
  • 因为基于Arm Cortex-M的微控制器实在太多,我们也不可能全部都用到,如果都集成在MDK里会显得臃肿,所以Keil将这些器件包独立出来,我们选择有用的下载安装即可。 1.下载器件包 keil MDK支持的器件包在官网都有,...
1 2 3 4 5 ... 20
收藏数 11,694
精华内容 4,677
关键字:

keil mdk