如何让keil4同时能使用51跟ARM编译

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让keil4同时能使用51跟ARM编译相关的知识,希望对你有一定的参考价值。

不管你之前装的是51的还是ARM这都没关系。其实很简单的,下面介绍步骤: 

     先将安装目录下的名字为C51文件夹或者ARM文件夹,放到你安装keil的目录中,路径是注意是C:\\keil。最好还是把目录装在C盘上。 

    打开TOOLS.INI的这个文件,将文件中加点东西。 

    打开后如果你是想在ARM下加入51功能,那么你把这一段复制下来

     ORGANIZATION="微软中国" NAME="微软用户", "dsf" EMAIL="sad" 

    BOOK0=UV4\\RELEASE_NOTES.HTM("uVision Release Notes",GEN) SOCKETPORT=1 [C51] 

    PATH="C:\\Keil\\C51\\" VERSION=V9.00 

    BOOK0=HLP\\Release_Notes.htm("Release Notes",GEN) 

    BOOK1=HLP\\C51TOOLS.chm("Complete User's Guide Selection",C) TDRV0=BIN\\MON51.DLL ("Keil Monitor-51 Driver") 

    TDRV1=BIN\\ISD51.DLL ("Keil ISD51 In-System Debugger") 

    TDRV2=BIN\\MON390.DLL ("MON390: Dallas Contiguous Mode") TDRV3=BIN\\LPC2EMP.DLL ("LPC900 EPM Emulator/Programmer") TDRV4=BIN\\UL2UPSD.DLL ("ST-uPSD ULINK Driver") 

    TDRV5=BIN\\UL2XC800.DLL ("Infineon XC800 ULINK Driver") TDRV6=BIN\\MONADI.DLL ("ADI Monitor Driver") 

    TDRV7=BIN\\DAS2XC800.DLL ("Infineon DAS Client for XC800") TDRV8=BIN\\UL2LPC9.DLL ("NXP LPC95x ULINK Driver") RTOS0=Dummy.DLL("Dummy") 

    RTOS1=RTXTINY.DLL ("RTX-51 Tiny") RTOS2=RTX51.DLL ("RTX-51 Full") 

    LIC0=GEGKP-MSCX1-YLXC6-DKBC1-ZJPCT-SL63G TDRV9=BIN\\STCMON51.DLL ("STC Monitor-51 Driver") 

    如果是想在51下装ARM,那么你把这一段复制下来粘贴到你的TOOLS文件下 

    ORGANIZATION="微软中国" NAME="微软用户", "dsf" EMAIL="sad" ARMSEL=1 

    BOOK0=UV4\\RELEASE_NOTES.HTM("uVision Release Notes",GEN) CDB0=UV4\\STC.CDB ("STC MCU Database") [ARM] 

    PATH="C:\\Keil\\ARM\\" VERSION=4.70a 

    PATH1="C:\\Program Files\\GNU Tools ARM Embedded\\4.7 2012q4\\" 


    TOOLPREFIX=arm-none-eabi- 

    CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV10)                                                        # Drivers for ARM7/9 devices 

    CPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV9,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15)  # Drivers for Cortex-M devices CPUDLL2=SARMCR4.DLL(TDRV7)                                                                        # Drivers for Cortex-R4 devices 

    BOOK0=HLP\\RELEASE_NOTES.HTM("Release Notes",GEN) 

    BOOK1=HLP\\ARMTOOLS.chm("Complete User's Guide Selection",C) BOOK2=CMSIS\\index.html("CMSIS Documentation",GEN) 

    BOOK3=Signum\\Docs\\SigUV3Arm.htm("Signum Systems JTAGjet Driver Documentation",GEN) 

    TDRV0=BIN\\UL2ARM.DLL("ULINK2/ME ARM Debugger") TDRV1=BIN\\UL2CM3.DLL("ULINK2/ME Cortex Debugger") TDRV2=BIN\\AGDIRDI.DLL("RDI Interface Driver") 

    TDRV3=BIN\\ABLSTCM.dll("Altera Blaster Cortex Debugger") TDRV4=BIN\\lmidk-agdi.dll("Stellaris ICDI") 

    TDRV5=Signum\\SigUV3Arm.dll("Signum Systems JTAGjet") TDRV6=Segger\\JLTAgdi.dll("J-LINK / J-TRACE ARM") TDRV7=Segger\\JL2CM3.dll("J-LINK / J-TRACE Cortex") 

    TDRV8=STLink\\ST-LINKIII-KEIL.dll ("ST-Link (Deprecated Version)") TDRV9=BIN\\ULP2CM3.DLL("ULINK Pro Cortex Debugger") TDRV10=BIN\\ULP2ARM.DLL("ULINK Pro ARM Debugger") TDRV11=NULink\\Nu_Link.dll("NULink Debugger") 

    TDRV12=SiLabs\\SLAB_CM_Keil.dll("SiLabs UDA Debugger") TDRV13=STLink\\ST-LINKIII-KEIL_SWO.dll ("ST-Link Debugger") TDRV14=BIN\\CMSIS_AGDI.dll("CMSIS-DAP Debugger") TDRV15=BIN\\DbgFM.DLL("Fast Models Debugger") 

    DELDRVPKG0=ULINK\\UninstallULINK.exe("ULINK Pro Driver V1.0") LIC0=GE7X7-EGEQ5-9WB2E-5T3KT-NA0N1-V0DP8 [ARMADS] 

    PATH="C:\\Keil\\ARM\\" PATH1=".\\ARMCC\\bin\\" 

    CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV10)                                                        # Drivers for ARM7/9 devices 

    CPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV9,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15)  # Drivers for Cortex-M devices CPUDLL2=SARMCR4.DLL(TDRV7)                                                                        # Drivers for Cortex-R4 devices 

    BOOK0=HLP\\RELEASE_NOTES.HTM("Release Notes",GEN) 

    BOOK1=HLP\\ARMTOOLS.chm("Complete User's Guide Selection",C) BOOK2=CMSIS\\index.html("CMSIS Documentation",GEN) 

    BOOK3=Signum\\Docs\\SigUV3Arm.htm("Signum Systems JTAGjet Driver Documentation",GEN) 


参考技术A 编译器不同,最好各自使用各自的编译工具。

Keil(MDK-ARM)介绍、下载、安装与注册:
http://blog.csdn.net/ybhuangfugui/article/details/51501781

Keil(C51)介绍、下载、安装与注册:
http://blog.csdn.net/ybhuangfugui/article/details/52932112

Keil5 STM32 C++开发 ARM V6编译器的使用教程

  Keil5更新之后,开始支持ARM V6编译器,新版本的编译器对C++有了更多的支持,在编译方面也做了很多的改善,具体的没有详细了解,本文只是对STM32 开发下,使用V6版本的编译器进行STM32的C++开发作一个记录,方便和大家交流和参考。至于说为什么STM32要C++开发,这个没有解释,只是个人觉得C++比C有更多的方便,使得编程更加的容易,C++有更多的生态....

  开始上教程:Keil5的安装和破解以及STM32 pack库的安装不在本文范围之内,需要的话请自己百度,网上以及有了很多的教程。

  笔者打开以前的STM32 工程,想自己通过更改编译器版本实现,结果发现编译之后会出现很多的错误,故还是采取Keil5的建立工程方式来建立新的STM32工程。

  技术图片

                          项目概览

  第一步:建立Keil5工程-》配置STM32类型。

  第二步:STM32工程文件的配置,CMSIS需要勾选CORE,然后在Device下选中STM32 的启动Startup,最后就是选择需要外设。(勾选过程全部是绿色为有效,如果出现黄色,可能是有相关的依赖性没有选中)

技术图片

  第三步:切换到V6编译器,同时对C/C++进行配置

技术图片

技术图片

注意:正常情况下按照上述步骤,不需要进行额外编译预处理的宏定义,比如定义STM32的芯片密度类型和外设宏等

  第四步:程序的编写:建立main入口,可以行建立main.cpp,或者main.c,注意要检查文件的类型是不是C++文件类型。然后就可以按照C++方式进行STM32开发,把各种操作包装到C++类里面,进行更方便的开发。

  第五步:注意事项:如果在编译的过程中,编译器提示不能识别 class之类关键字,则需要检查相关的类的头文件的类型是不是C++类型,具体如下:

技术图片技术图片

 

最后,简单对C++的Vector 和lambda进行了测试,给出简单的代码串口打印输出:

std::string str="Command ends with ‘$‘\\n";
                         str+="Baude ratio is :115200\\n";
                         str+="Firmware version:1.0\\n";
                         str+="======================\\n";
    UsartHelper.UsartInit();
    UsartHelper.SerialEvent.AttachHandler(this,&System::SerialHandler);
    UsartHelper.log(str,false);
    
    TickerHelper.TickerInit();
    TickerHelper.SetIntervalms(1500);
    TickerHelper.Elapsed.AttachHandler(this,&System::TickerElapsed);
    
    //TickerHelper.Start();
    
    std::vector<std::string> vec;
    vec.push_back("zhangliang");
    vec.push_back("lijie");

    auto tmpx = vec.at(0);
    UsartHelper.log(tmpx);
    UsartHelper.log(vec.at(1));
    
    auto pfun=[]()UsartHelper.log("this is lambda expression");;
    pfun();

测试结果串口打印出来如下,可以看到都可以很好执行了。

技术图片

 

 

 在最后,祝大家使用C++开发STM32 愉快,有任何的问题可以和我交流,或者大家相互请教,有错误或者其他请告知,谢谢!

 

以上是关于如何让keil4同时能使用51跟ARM编译的主要内容,如果未能解决你的问题,请参考以下文章

keil for c51 keil for arm 怎么才能同时使用

keil c51与keil uVision的联系与区别

如何在打开方式里添加keil c51和keil arm

keil4如何在编译时不编译未调用的函数?

如何安装keil mdk-arm

keil 编译ARM程序出错