MDK Keil编译器使用的一些设置
MDK Keil编译器使用的一些设置

MDK Keil编译器编译窗口的设置在使用MDK Keil编译器时会遇到一些和编辑窗户设置相关的问题,如字体的大小、颜色,字符字符串的颜色等。
现按照配置(configuation)的顺序归纳如下:首先打开Keil编译界面,打开右上角的configuation(配置),如下图所示。
打开configuation后界面如下图。
1)EditorGeneral Editor Settings 中默认前两个勾上,View White Space若勾上,则会在空格的地方添加·····其界面如下所以此选项一般勾掉不选。
在右边的Function Dispiay 中三个不选,用不到。
中间的Look&Feel是设置显示效果的,1处Highlight Current Line是当前行高亮,Highlight matching and matched braces 是突出显示匹配的括号。
中间右边2处Files&Projects Handing 是设置文件和工程的,需要勾上Save Projects before entering debug和Save Projects before entering debug 可以在进入每次Debug之前保存文档和工程。
3处的是设置C/C++编译窗口的tab 键代表几个空格和显示行号,4处的是设置ASM(汇编)编译窗口的tab键代表几个空格和显示行号。
2)Colors&Fonts如下图:前三个分别是设置汇编窗口、C语言窗口、C++窗口的,现在先看C语言出口的,其他两个窗口类似。
1处是设置颜色和字体的,2处设置前景和后景的,下面主要说明从text往下的设置;Text Selection 是被选中的部分显示的颜色和背景颜色。
如下图背景蓝色,字体白色Number是选择数字的。
Operator是运算符的设置,主要设置分号逗号等。
MDK编译器的使用

在ram中调试程序
设置程序下载到ram中 中 设置程序下载到
对于没有使用中断程序的程序设置在ram中调 中调 对于没有使用中断程序的程序设置在 是比较简单的: 试,是比较简单的: 1.在工程选项设置中,选择 在工程选项设置中, 目标页, 在工程选项设置中 选择target目标页,修 目标页 改IRAM1和IRAM2: 和 原先的: 原先的: 修改后: 修改后:
在工程中添加文件
编译程序
经过如上几步,我们就建立好了一个工程。我 经过如上几步,我们就建立好了一个工程。 们可以点击下图的三个编译按钮进行编译
用Jlink下载固件
Jlink介绍 介绍
J-Link是SEGGER公司为支持仿真 是 公司为支持仿真ARM内核 公司为支持仿真 内核 芯片推出的JTAG仿真器。 仿真器。 芯片推出的 仿真器 安装完J-link后,会有两个快捷图标。一个是 后 会有两个快捷图标。 安装完 J-Flash Arm图形工具,一个是 图形工具, 图形工具 一个是J-link Arm 命令行工具。 主要用于烧写固件。 命令行工具。J—Flash主要用于烧写固件。而 主要用于烧写固件 MDK自带有烧写固件的功能。所有我们主要用 自带有烧写固件的功能。 自带有烧写固件的功能 到的是J-link命令行工具 到的是 命令行工具
在ram中调试程序
启动模式
从FLASH启动:从主闪存存储器启动,主闪存存储器被映射 启动: 启动 从主闪存存储器启动, 到启动空间( ),但仍然能够在它原来的地址 到启动空间(0x0000 0000),但仍然能够在它原来的地址 ), (0x0800 0000)访问它,即闪存存储器的内容可以在这两 )访问它, 个地址区域访问; 个地址区域访问; 从系统存储器启动:系统存储器被映射到启动空间( 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍可以在原有的地址(0x1FFF F000)访问它; ),但仍可以在原有的地址 ),但仍可以在原有的地址( )访问它; 从内置的SRAM启动:只能在 启动: 从内置的 启动 只能在0x2000 0000开始的地址区 开始的地址区 访问SRAM。 访问 。
(keil设置)第一个keilMDK工程

(keil设置)第一个keilMDK工程最傻瓜的指引手册第一个keil工程熟悉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 *****微控制器,这个选择设置了*****设备的必要工具选项、简化了工具的配置。
最傻瓜的指引手册图3注意:当创建一个新的工程时,Vision会自动为所选择的CPU添加合适的启动代码。
对于一些设备而言,Vision需要用户手动地输入额外的参数。
请仔细阅读这个对话框右边的信息,因为它可能包含所选设备的额外配置要求。
无语了,一个钟头写的东西上传之后竟然丢失了一大段。
Keil编译与下载设置及常见问题解决方案

Keil编译与下载设置及常见问题解决方案这几天在群里朋友的帮助下学习了keil的编译与下载,现在将遇到的几个问题记录下来。
形成一个完整的教程。
为了帮助和我一样刚刚接触Keil的朋友,本文将分为两部分。
一,keil编译与下载设置。
二,常见问题原因分析与解决方案。
一,keil编译与下载设置首先看根据不同的MCU我们需要设置的项目有device,c/c++。
根据不同的下载器需要设置的项目有debug,utilities。
1.device的设置在device选项中search自己所要的芯片。
根据MCU的类型选择,其实就是修改HD或者是MD.3.DEBUG设置4.utilities设置二,常见问题原因分析与解决方案到此我将我遇到的问题一一展示给大家,一来自己复习巩固二来帮助小白更快的解决问题。
1)在device中没有我要的芯片?解决办法,到网上下载pack包加载到keil。
如图所示,在file中选择import...2)Error:Flash Download failed-”cortex-M3原因分析:flash download 设置错误解决办法:参考第一部分第3步骤3)No ULINK2/ME Decice found原因分析:Utilities设置错误解决方案:参见第一部分第4步骤4)编译过程中出现#67:expected a “}”原因分析:我是在跟换不同型号芯片时遇到的这个问题。
这两个芯片一个是大型,一个是中型,因此出现这样的问题。
解决方案:替换.S文件,修改C/C++宏定义方法:第一步:在.S文件中右键今入manage project items,add与芯片对应的.S的文件。
第二步:修改C/C++宏定义方案:参加第一部分第二步骤。
具体的就是修改一个字母H,M等。
评,根据实测这一步非常重要,其实.s文件不修改进修改c/c++宏定义就可以了。
具体原因我也不懂。
感谢再次特别感谢麒麟座开发板交流群的朋友,感谢晨风~依然、OneNET-嵌入式软件-周家绪悉心指导了我遇到的问题,他们都是群里真正的老司机。
JLINK及KEIL MDK使用手册

JLINK及KEIL MDK使用手册概述本章对 JLINK 驱动程序的安装、使用和对 RealViewMDK (Keil μVision3)集成开发环境安装及其集成开发环境的基本使用和设置进行了介绍。
3.1、安装JLINK仿真器驱动程序JLINK仿真器驱动程序可以从付带光盘或 SEGGER网站/pub/jlink/Setup_JLinkARM_V402c.zip获取最新的安装文件(目前最新安装版本为 Software and documentation pack V4.02c [7177 kb]),下载完成后双击执行,出现如图 3.1所示的安装界面,根据界面安装向导的提示,完成JLINK仿真器驱动程序的安装。
假设安装在 D:\SEGGER目录下。
图3.1按Yes出现下图界面图3.2 按Next继续下一步操作图3.3选择安装目录后按Next继续下一步图3.4如果你还在以前装了IAR的集成开发环境将出现下面图3.5的提示,提示你选择更新IAR 下的JLINK仿真器的动态链接库文件,一般选上后按OK完成JLINK仿真器的安装。
图3.53.2、如何使用JLINK仿真器软件3.2.1、使用J-FLASH ARM 烧写程序到芯片FLASH运行J-FLASHARM 出现图3.6图3.6 进行烧写前的必要设置如:图3.7图3.7选择MINI-STM32开发板的CPU型号,选择完成后按确定退出设置。
图3.8设置完成后左边显示烧写信息图3.9连接目标板,连上后会有提示信息,见下边的状态拦。
图3.10连接成功后如图3.11图3.11接着File->open打开烧录文件,如图3.12图3.12加载完成后选择Target->Auto或快捷键F7进行自动烧录。
图3.13烧写状态,图3.14图3.14 烧写成功,图3.15图3.15关于J-FLASH ARM更详细的操作请参阅JLINK的用户手册。
3.2.2、使用J-Link command设置和查看相关调试信息J-Link command包含了所有设置和查看相关调试信息的命令,J-Link command基于命令行输入方式。
Keil-C51详细设置

Keil-C51详细设置Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框内对应工具栏。
二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram 不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX @Ri,A 或MOVX A,@Ri指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,@DPTR或MOVX @DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP 指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.3. OPERATING方法2:使用BL51 Locate选项。
keil编译中memory assignment的选择

keil编译中memory assignment的选择在Keil MDK (Microcontroller Development Kit) 中,当你创建一个项目并为其配置目标硬件时,你需要为程序和数据分配内存。
这通常在链接器配置文件中完成,该文件定义了如何为代码、数据、堆栈和堆分配内存。
在Keil MDK 的"Options for Target" 对话框中,你会找到一个"Memory" 或"Linker" 选项卡,其中包含内存分配的设置。
以下是一些关键概念:1.Code (or Text) Memory:这是存储程序代码(即机器指令)的区域。
通常,它对应于微控制器的闪存。
2.Data Memory:这是存储初始化为非零值的全局变量的区域。
它通常位于RAM 中。
3.BSS Memory:这是存储未初始化或初始化为零的全局变量的区域。
它也通常位于RAM中。
4.Heap Memory:堆是用于动态内存分配的区域,如malloc函数所分配的。
它也位于RAM中。
5.Stack Memory:栈用于函数调用、局部变量和中断服务例程。
每个任务或线程都有其自己的栈。
当你为这些区域选择内存时,你应该确保它们不会重叠,并且它们的总和不会超过微控制器的可用内存。
以下是一些建议的步骤:1.了解硬件:首先,查看微控制器的数据手册,了解其内存布局和大小。
2.初始设置:在创建新项目时,Keil 可能会为你提供一个默认的内存布局。
这通常是一个很好的起点,但你可能需要根据你的应用程序进行调整。
3.调整大小:如果你的应用程序太大而无法装入闪存,或者你在运行时遇到堆栈溢出问题,你可能需要调整内存区域的大小。
4.测试:每次更改内存布局后,都应对你的应用程序进行彻底测试,以确保没有引入任何问题。
5.优化:考虑使用编译器和链接器的优化选项来减小代码和数据的大小。
最后,请注意,不同的微控制器和不同的项目可能需要不同的内存布局设置。
keil arm编译手册

Keil MDK(Microcontroller Development Kit)是一套用于嵌入式系统开发的工具,其中包括编译器、调试器、模拟器等。
以下是关于Keil MDK ARM编译的一些基本步骤。
请注意,具体步骤可能会根据你的项目和硬件平台而有所不同。
Keil MDK ARM 编译手册基本步骤:创建新工程:打开Keil MDK,选择"Project" -> "New µVision Project"。
在弹出的对话框中,选择工程的存储位置和工程名称,然后点击"Save"。
选择目标设备:在弹出的"Device" 对话框中,选择你的目标微控制器或处理器型号,然后点击"OK"。
添加源文件:在"Project" 窗口中,右键点击"Source Group 1",选择"Add New Item to Group 'Source Group 1'",然后添加你的源代码文件。
配置编译选项:在"Project" 窗口中,右键点击你的工程,选择"Options for Target 'Target 1'"。
在弹出的对话框中,配置"C/C++"、"Miscellaneous" 和其他选项,例如选择编译器、调试器、优化选项等。
设置链接脚本(可选):在"Options for Target 'Target 1'" 对话框中的"Linker" 选项卡中,你可以设置链接脚本,以指定程序的内存布局。
编写源代码:打开添加的源代码文件,编写你的程序代码。
构建项目:点击工具栏上的"Build" 按钮或者使用快捷键(通常是F7)进行编译。
keil使用技巧

keil使用技巧Keil是一款非常强大的集成开发环境(IDE),被广泛应用于嵌入式系统开发中。
以下是一些使用Keil的技巧,可帮助提高开发效率和代码质量。
1. 设置编译器选项和优化级别:Keil允许用户自定义编译器选项,如编译警告级别、优化级别等。
通过适当设置编译器选项和优化级别,可以提高代码的执行效率和可靠性。
2. 使用断点:Keil提供了强大的调试功能,包括设置断点、单步调试等。
合理使用断点可以帮助我们快速定位和解决问题。
3. 使用调试输出:Keil提供了在调试过程中显示输出信息的功能,通过使用printf函数等,可以将调试信息输出到终端或者调试窗口中,帮助我们了解代码执行过程中的状态和错误信息。
4. 使用宏定义:宏定义是一种在编译期间进行文本替换的机制,可以提高代码的可读性和可维护性。
在Keil中,可以使用宏定义来定义常量、简化代码等。
5. 使用内联汇编:Keil支持内嵌汇编,可以在C代码中嵌入汇编指令,以提高代码的执行效率和灵活性。
6. 正确使用C标准库函数:Keil提供了一套标准C库函数,如字符串处理函数、数学函数等。
正确使用这些函数可以简化代码,提高代码的可读性和可维护性。
7. 使用代码模板:Keil提供了一些代码模板,可帮助开发者快速生成常见的代码结构,如中断处理函数、定时器初始化函数等。
合理使用代码模板可以节省开发时间,提高代码质量。
8. 使用版本控制工具:在Keil中进行开发时,建议使用版本控制工具,如Git,来管理代码的版本。
版本控制工具可以帮助我们追踪代码的修改记录,恢复代码到任意历史版本,并协作开发。
总之,使用Keil进行开发时,合理配置编译器选项、使用断点和调试输出、使用宏定义和内联汇编、正确使用C标准库函数、使用代码模板以及使用版本控制工具等技巧,可以提高开发效率和代码质量,帮助我们更好地开发嵌入式系统。
keil的mdk5使用手册

keil的mdk5使用手册Keil的MDK5(Microcontroller Development Kit 5)是一款为嵌入式开发人员提供的强大工具,它集成了开发所需的各种组件,包括编译器、调试器、仿真器等。
使用MDK5,开发者可以更高效地进行嵌入式系统的设计和开发。
首先,要使用MDK5,您需要先安装它。
安装过程相对简单,只需要按照安装向导的指示进行即可。
安装完成后,您可以通过Keil软件来创建一个新的项目。
在创建项目时,您需要选择您的目标硬件平台和微控制器型号。
接下来,您需要配置您的项目。
在项目配置中,您可以设置编译器的各种选项,例如优化级别、代码生成方式等。
此外,您还可以配置调试和仿真选项,例如选择使用的调试器、仿真器等。
在编写代码方面,MDK5支持多种编程语言,包括C和C++。
您可以使用Keil的代码编辑器来编写和编辑代码。
在编写代码时,您可以使用MDK5提供的各种库和函数,例如标准C库、微控制器特有库等。
编译和调试是嵌入式开发中非常重要的环节。
使用MDK5,您可以轻松地进行编译和调试。
您可以使用Keil的编译器将您的代码编译成可在微控制器上运行的二进制文件。
然后,您可以使用Keil的调试器来调试您的程序。
调试器提供了各种有用的功能,例如设置断点、单步执行、查看变量值等。
除了基本的编译和调试功能外,MDK5还提供了其他有用的工具和功能。
例如,您可以使用仿真器来模拟微控制器的行为。
此外,MDK5还支持多种外部设备,例如串行通信接口、模数转换器等。
这些设备可以通过Keil的设备驱动程序进行配置和使用。
总的来说,MDK5是一款功能强大、易于使用的嵌入式开发工具。
通过使用MDK5,您可以更高效地进行嵌入式系统的设计和开发。
无论您是初学者还是经验丰富的开发者,MDK5都能为您提供全面的支持和帮助。
在KEIL中使用MDK

在KEIL中使用MDK最近在学习ARM公司新推出的cortex-m4系列的ARM芯片,选用的是飞思卡尔的K60系列,它采用的就是cortex-m4核心。
cortex-m4比cortex-m3多了个dsp处理单元。
增加了dsp单元的优势是显而易见的:在涉及到大量的数学运算时可以采用dsp来处理,大大节约了运算时间和代码量。
(K60的浮点运算单元是个可选的部件,由于我拿到的K60还不支持FPU,所以下面涉及到的浮点调试只能用仿真的方式进行)最新的KEIL MDK-ARM开发环境已经增加了对cortex-m4的支持(我是用的是MDK-ARM Standard Version 4.20),包括仿真支持,也就是说即使你没有拿到开发板也可以来学习cortex-m4. 在器件选择中,这个版本已经增加了飞思卡尔K60系列,在新建工程时可以选择(我选择了Freescale Semiconductor--MK60X256VMD100这个器件)。
下面写一下我自己的学习过程。
一、不使用K60的浮点运算单元。
在默认情况下,K60的浮点单元并没有被打开,一切浮点运算还是软件浮点。
①打开Keil uVision4,新建工程,选择保存路径,选择器件,找到Freescale Semiconductor,展开,在最下面选择MK60X256VMD100。
程序问你是否添加这个系列的启动代码到工程中,选择是(如果没有出现这个选项,可以自己在Keil的安装目录里找,自己添加,其路径为C:\Keil\ARM\Startup\Freescale\K60)。
这时一个新的工程就建好了,默认增加了startup_MK60N512MD100.s这个启动文件。
②测试浮点运算。
我们可以新建一个C文件,用来测试浮点运算使用的是软浮点还是硬浮点。
新建c文件里的代码可以如下:1.int main(void)2.3.{4.float a=3.14259265357,b=12.98635463738,result;5.result=a*b*b;6.return result;7.8.}9.10.extern void SystemInit(void)11.{12.int a=1;13.while(a) a--;14.}其中void SystemInit(void)这个函数是为了满足启动文件startup_MK60N512MD100.s中对SystemInit的调用,本来是对器件的初始化,这里只是做测试用,没有实际内容。
KEIL使用说明(好)

KEIL简单使用说明本说明包括以下内容:1、新建KEIL工程2、代码的编译3、在线仿真4、硬件仿真一、新建KEIL工程1.0)点击WINDOWS操作系统的[开始]——>[程序]→[Keil uVision4]启动Keil uVision4或在桌面双击[Keil uVision4]快捷方式启动。
启动KEIL如图所示:1.1)点击“Project”→Close Project,关闭工程(即关闭旧工程)点击“Project”→“New uVision Project”新建一个工程。
如图所示;1.2)在弹出窗口里边选择文件目录,创建工程文件夹。
如图所示1.3)刚才建立的“新建文件夹”下,给工程起个名字后保存,不需要填后缀名。
如图所示1.4)点击保存工程以后,弹出一个对话框,提示选择CPU类型,点击“Atmel”—>“AT89C51”如图所示1.5)点击“OK”以后,弹出对话窗口,提示要不要添加51单片机的启动代码,选择“否”;如图所示至此,一个空的Keil工程文件就建成了。
如图所示1.6)建立一个文本文件,以便输入程序。
点击“file”→“N ew…”图标按钮,建立一个默认名字为“Text1”的空白文本编辑窗,结果所图所示1.7)在新建文本窗中编写程序,编完以后,点击“Save”,弹出保存对话窗口,文件保存在刚才的工程目录下,文件名为“text1.c”(注意:要加后缀名*.c)。
如图所示1.8)把程序文件添加进工程,在工程窗口里边,选择Target1下里的组“Source Group1”,单击右键,选择[A dd File to Group…],选择要添加到的文件“Text1.c”,按“ADD”即可。
如图所示1.9)编译和连接工程,点击“Rebuild”,编译结果所图所示编译选择介绍:编译当前文件的:如果只是确认当前文件是否存在问题,可以选择这个按键;编译修改过的文件并链接:如果只是确认最近的修改是否存在问题,可以选择这个按键;编译所有文件:选择这个按键将重新编译链接整个工程文件。
Keil修改ARM编译器及配置方法

Keil修改ARM编译器及配置方法(Keil)MDK自V5.36 版本之后,默认就不带(Arm)Com (pi)ler V5版本编译器。
如果需要使用V5 版本编译器,就需要自己(下载)并安装。
注意:这里说的是V6版本编译器,不是Keil V6集成开发环境。
Arm Compiler V6 和V5兼容性不好,有很多地方都需要注意。
这里简单分享几点注意事项。
Keil修改ARM编译器及配置很多小伙伴可能还不知道怎么修改Keil MDK编译器,这里可以参看我之前分享的文章:手把手教你修改Keil MDK的ARM编译器因为ARM编译器下载需要注册,可能会因为各种原因下载失败,这里可以参看文章:折腾Keil 编译器的经历这里再说下配置,Keil MDK 配置(AC)6编译:配置优化选项:优化选项描述AC6默认,默认值为-O0。
这种情况下,代码不做优化,适用于在线调试。
对于需要优化,但不是对速度和时间非常苛刻,通常建议使用-Os balanced。
对于存储容量小的(芯片),可以使用-Oz选项以获得最佳代码大小,此优化级别会降低调试体验。
对运行效率(时间)有要求的工程,可以使用-Ofast优化代码。
当然,如果使用armlink命令行,还有-Omin,-Omax等选项。
AC6编译器的优化选项(含命令选项很多),这里可以参看我之前的一篇文章:AC5 和AC6 优化选项重要内容和区别AC6的注意事项除了在Keil MDK中使用常规的优化选项之外,还有很多选项,在使用的时候需要注意。
比如:-Omin将自动启用armclang -flto选项,并且生成的目标文件不适合创建静态库。
使用-Omin、-Omax时,Arm 无法保证在所有代码情况下都能实现最佳的代码大小优化。
启用-ffp-mode=fast armclang选项执行的积极优化可能会违反严格遵守语言标准的规定。
KEIL MDK配置参考手册v2.0

(1)在桌面建立一个工程文件夹,此处命名为“demo”(2)将(4)此时会弹出如下对话框,选择NUVOTON NUC1XX Devices然后点击OK(5)在接下来弹出的对话框中选择实际您用到的芯片型号,此处以NUC100LE3AN为例。
选择NUC100LE3AN并点击OK。
(6)此时会有提示框提示是否要将Startup Code拷贝到并添加到工程,此时点击“否”,这里我们用驱动程序中的启动文件。
(7)此时在左边的Project里面可以看到两个文件夹。
您可以对Project下的文件夹重命名,这里将Target1重命名成GPIO Test,Source Group 1重命名成main(重命名只是为了条理清晰,也可不用重命名)(8)将鼠标放到GPIO Test上面,右击àAdd Group…来添加一个新组,并命名为Driver,我们要将需要的驱动程序的C文件添加进来。
(9)右击Driver,选择”Add Files to Group ‘Driver’…”来添加需要的driver文件(10)此时软件会自动浏览到当前工程目录下(若没有进去,可以手动浏览到当前工程目录下),进入”…\demo\NUC_Driver\NUC_DrvC”目录并将所需的驱动程序添加到工程(注:一般都要将DrvGPIO.c,retarget.c,core_cm0.c和DrvSYS.c添加到工程)(11)单击新建文件图标,如下图。
此时会新建一个文本文件。
单击保存按钮,此时会让我们选择保存路径,我们保存在“…\demo\”文件夹下面并将其命名为“main.c”(可以任意命名,但后缀要为.c)。
(12)右击main文件夹,选择“Add Files to Group ‘main’…”,然后将刚才新建的“main.c”添加到该工程之文件夹下面,并将NUC_Driver中的启动文件“startup_NUC1xx.s”添加到main中。
keil 怎么编译c++代码

编译C++代码是将C++源代码转换为可执行的计算机程序的过程。
Keil是一款常用的嵌入式开发工具,可以用于编译C++代码并将其加载到嵌入式系统中。
本文将从如何设置Keil环境开始,详细介绍如何使用Keil编译C++代码。
欢迎阅读!一、设置Keil环境1. 安装Keil软件:首先需要下载并安装Keil软件,安装完成后打开软件。
2. 创建新项目:在Keil软件中点击“Project” -> “New µVision Project”来创建一个新项目。
3. 选择目标设备:在弹出的对话框中选择目标设备的型号,并点击“OK”。
4. 添加源文件:右键点击“Target” -> “Create New File”,选择C++文件类型,并输入文件名,点击“Add”即可添加C++源文件。
5. 设置编译选项:在“Project” -> “Options for Target…”中可以设置编译选项,包括编译器类型、优化级别等。
二、编写C++代码1. 在Keil软件中打开刚才创建的C++源文件,编写C++源代码。
2. 编写完毕后保存源文件。
三、编译C++代码1. 在Keil软件中点击“Project” -> “Build Target”来编译C++代码。
2. 编译完成后会在工程目录下生成可执行文件。
四、调试和运行1. 在Keil软件中点击“Debug” -> “Start/Stop Debug Session”来启动调试会话。
2. 在调试窗口中可以设置断点、观察变量等进行调试。
3. 调试完成后可以点击“Debug” -> “Start/Stop Debug Session”来停止调试会话。
4. 在Keil软件中点击“Project” -> “Build Target”来编译C++代码。
五、总结本文详细介绍了如何在Keil环境中编译C++代码的过程,包括设置Keil环境、编写C++代码、编译C++代码、调试和运行等步骤。
keil编译器使用

1、在任意路径下建议项目文件夹,文件夹的名字任意(一般做到见名知意)。
2、单击图标(此图标为Keil µVision2),启动Keil,如下图:3、选择菜单Project->New Project,新建一个工程,如下图:4、输入工程名“流水灯”,然后保存,如下图:5、选择器件型号为Atmel的AT89S51,然后确定,如下图:6、是否加入启动文件到工程,这时不加入选“否”,这样一个工程就建立完成,如下图:7、选择菜单File->New新建一个文件,如下图:8、选择菜单,File->Save,保存文件,输入文件件名为“流水灯.asm”,(C程序为.C文件)然后保存,如下图:选择,Add Files To Group 'Source Group 1',如下图:10、选择All files,找到刚才的“流水灯.asm”,然后点Add,然后就Close,如下图:11、可以看到工程里多了一个“流水灯.asm”文件,双击在里面输入下面程序,如下图:ORG 0X0000LJMP STARTSTART: MOV A,#0XFELOOP: RL AMOV P1,ALCALL DELAYSJMP LOOP ;延时程序DELAY: MOV R5,#200OUT: MOV R6,#250OUT1: MOV R7,#250IN: DJNZ R7,$DJNZ R6,OUT1DJNZ R5,OUTRETEND12、选择Project->Build target,或点击图标进行编译。
13、编译结果可以,看到错误(语法错误)和警告(情况较多,须具体分析)情况,如下图:14、如果没有错误,选择生成目标文件(机器码)。
15、选择菜单Debug->Start/Stop Debug Session,进入调试状态(此状态为默认的模拟调试,还可选择仿真器调试,proteus联机调试等),如下图:16、进入到调试状态后,选择菜单Perihperals->I/O-Ports->Port 1,打开端口1,下图为打开后的画面。
第1篇 KEIL C51编译器使用总结

序言用C语言来编写单片机程序,时下已是一种趋势。
C语言编写出来的程序其可读性、维护性、可移植性相对于汇编,其优势大很多。
C编译器有很多,单片机内核不同,其编译器也有很大的差别,但总的来说,C编程器基本上都有是从C语言的基础上增加一些针对单片机的特殊功能。
以下是本人使用过的C编译器,在编写单片机程序时的需主要了解的内容。
其内容的概述主要以下几方面:1、包含文件方式2、数据类型3、变量的声明(RAM的操作)4、常量的声明(ROM操作)5、函数的声明6、在线汇编及特殊ASM指令操作7、I/O端口操作方式8、中断操作方式9、堆栈的方式10、编译后的相关文件11、编写单片机C项目后的经验总结(单片机部分、C语言部分)附录A:入门篇——建第一个项目(包含相关主要设置)第一篇KEIL C51编译器1、包含文件方式1.1头文件(1)“xx.h”文件中可以提供给外部的变量与函数。
(2)“cstartup.a51”启动代码是指在执行main()函数之前清0内存单元,每次编译都会自动地加入在项目组中的第一个位置。
(3)在进行程序设计的时候,一般包含<xxxx.h>或<reg52.h>等,如是增加型51,则需用sfr来声明所增加的特殊功能寄存器。
例如:include <reg52.h> sfr ISP_CONTR =0XC7。
sbit CF =CCON^7,// CCON BIT,针对可位寻址的CCON寄存器。
1.2预处理(1)预处理命令必须放在一行的开头,而且必须以“#”为前缀。
#include “x.h”是指从当前目录中查找H文件。
而#include <x.h>是指从包含文件目录中查找H文件。
通常包含文件不带路径,文件为库文件时并被调用时,编译器按DOS设置的环境变量目录去寻找。
(2)define 格式:define 宏替换名字符串或数值宏替换名可以带形式参数,程序用到时输入实参。
KEIL使用时的一些配置

KEIL使⽤时的⼀些配置1、设置字体和tab键长度2、设置背景颜⾊ 选择ALL Editors的Caret Line,设置的是“|”的颜⾊和⾏的背景⾊,即当前编辑位置,Foreground 设置的是“|”的颜⾊,Background设置的是⾏的背景⾊。
选择ALL Editors的Text Selection,这个设置的是⽤⿏标选中代码后的颜⾊。
选择C/C++ Editor files的Text,这是设置C/C++⽂件的⽂本,Foreground不知道设置哪⾥的颜⾊,Background设置的是⽂本的背景⾊,正常设置成⽩⾊即可。
选择C/C++ Editor files的Number,这是设置C/C++⽂件的数字,设置Foreground的颜⾊就好。
选择C/C++ Editor files的Operator,Block,Brackets,设置的是代码中国各类符号的颜⾊,⽐如:() {} = + - * ;等符号。
选择C/C++ Editor files的Block Comment,这是设置/* */注释的颜⾊。
选择C/C++ Editor files的Line Comment,这是设置 // ⾏注释的颜⾊。
选择C/C++ Editor files的Keyword,设置的关键词的颜⾊,⽐如void、int、char、typedef等关键词。
选择C/C++ Editor files的String,设置的是⽤双引号括起来的字符串颜⾊。
选择C/C++ Editor files的Identifier,这⾥设置的是代码的颜⾊。
选择C/C++ Editor files的Preprocessor,设置的是预处理的颜⾊,⽐如#include、#if等。
选择C/C++ Editor files的Character,设置的是单引号内容的颜⾊。
选择C/C++ Editor files的Matching Braces,设置的是匹配的引号或括号类的颜⾊设置,⽐如选定⼀个引号,那么与它配对的引号就会⼀起以设定的颜⾊显⽰。
调用keil编译

调用keil编译
Keil是一款流行的嵌入式系统开发工具,它支持多种处理器架构,并且可以生成优化的可执行文件。
调用Keil编译的一般步骤如下:
1. 打开Keil软件并创建一个新工程。
2. 在工程中添加源代码文件,可以使用“文件”菜单下的“添加到工程”选项来添加。
3. 配置编译选项。
在Keil的顶部菜单中,选择“项目”->“选项”->“编译器选项”,然后设置编译器选项,例如优化级别、警告级别等。
4. 配置链接器选项。
在Keil的顶部菜单中,选择“项目”->“选项”-
>“链接器选项”,然后设置链接器选项,例如输出文件名、输出路径等。
5. 点击Keil的“编译”按钮,开始编译工程。
编译完成后,会在指定的输出路径下生成可执行文件。
6. 将可执行文件下载到目标硬件中进行测试和调试。
需要注意的是,使用Keil编译时,需要选择正确的处理器架构和工具链,以确保生成的代码可以在目标硬件上运行。
此外,还需要仔细配置编译器和链接器选项,以确保生成的代码质量和性能符合要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MDK Keil编译器编译窗口的设置
在使用MDK Keil编译器时会遇到一些和编辑窗户设置相关的问题,如字体的大小、颜色,字符字符串的颜色等。
现按照配置(configuation)的顺序归纳如下:
首先打开Keil编译界面,打开右上角的configuation(配置),如下图所示。
打开configuation后界面如下图。
1)Editor
General Editor Settings 中默认前两个勾上,View White Space若勾上,则会在空格的地方添加·····其界面如下
所以此选项一般勾掉不选。
在右边的Function Dispiay 中三个不选,用不到。
中间的Look&Feel是设置显示效果的,1处Highlight Current Line是当前行高亮,Highlight matching and matched braces 是突出显示匹配的括号。
中间右边2处Files&Projects Handing 是设置文件和工程的,需要勾上Save Projects before entering debug和Save Projects before entering debug 可以在进入每次Debug之前保存文档和工程。
3处的是设置C/C++编译窗口的tab 键代表几个空格和显示行号,4处的是设置ASM(汇编)编译窗口的tab键代表几个空格和显示行号。
2)Colors&Fonts
如下图:
前三个分别是设置汇编窗口、C语言窗口、C++窗口的,现在先看C语言出口的,其他两个窗口类似。
1处是设置颜色和字体的,2处设置前景和后景的,下面主要说明从text往下的设置;
Text Selection 是被选中的部分显示的颜色和背景颜色。
如下图背景蓝色,字体白色
Number是选择数字的。
Operator是运算符的设置,主要设置分号逗号等。
/*comment*/和//comment是被/*.....*/注释和单行注释的颜色。
Keyword是关键字,C语言中如void extern int double int char signed static typedef等等。
一般设置为蓝色。
String 是字符串,即在双引号””内的字符数字等,一般设置为显眼的颜色。
Identifier是标示符,即一般的代码文字,白背景下通常设置为黑色。
Preprocessor commond 是预处理命令,如#define #include #ifndef #endif 等,通常设置为蓝色。
Decimal Number 十进制数,也就是设置十进制数的颜色和背景。
Float Number 是浮点型数字,带小数点的数。
Octal number 是八进制数。
以0开头,后续跟0-7之间的数据
Hexadecimal number是十六进制数。
以0x开头,后续跟0-F之间的数据Character是字符,即在单引号‘’之间的字符。
Label是标号,如需要使用跳转指令goto时指向的地方。
User keyword是用户关键字,用户可以设置自己的关键字
Bracket是括号,Block是花括号。
Preprocessor string <stdio.h> 是尖括号内的字符串
Matching braces是匹配的括号,Mismatched braces是不匹配的括号
Current line是当前行的显示。
剩下的汇编和C++的设置同上。
其他的地方如调试窗口、串口窗口默认即可,如下
3)User Keywords
用户关键字是非常非常好用的一个功能,它可以使你自己定义的关键字像系统关键字一样高亮显示。
假如你有想写一个移植性比较高的程序,通常一些和编译器无关的变量类型需要这样定义:
typedef unsigned char uint8; /* 无符号8位整型变量*/
typedef signed char int8; /* 有符号8位整型变量 */
typedef unsigned short uint16; /* 无符号16位整型变量 */ uint8 test; //定义变量
这样有一个什么问题呢?就是uint8这个虽然是用户定义的关键字,但是它并不能像系统关键字那样高亮显示。
怎么办呢?完全有办法解决,而且就是在这个标签卡中就可完成。
方法如下:
a.打开User Keywords标签卡。
在左侧窗口选择文件类型,比如ARM:Editor C File;在右侧窗口点击按钮,新建一个用户关键字编辑框,输入用户定义的关键字,比如uint8,这样在程序代码中,所有的uint8都会高亮显示。
4)Shortcut Keys(快捷键)
这里快捷键如果设置得当将会带来很大的方便,现列举常用的依次如下:Debug时一些快捷键:
Disable all breakpoint 禁止所有断点 Ctrl+F2
Disable/Enable breakpoint 使能/ 禁止该断点 F2
Insert/remove breakpoint 插入/移除断点 F5
Kill all breakpoint 移除所有断点 Ctrl+F5
Run 执行代码运行 F6
Step 单步运行 F7
Step Out 跳出当前的函数 F8
Step Over 跳出该条语句 F9
Stop 停止 F10
Run to Cursor line 运行到光标处 F11
和Edit Advanced相关的
Comment selection 注释选择的部分 Ctrl+K
Uncomment selection 释放被注释的部分 Ctrl+M
Go to line 跳到指定行 Ctrl+G
Go to matching braces 跳到匹配的大、小括号 Ctrl+E
Indent selection 缩进选择 Ctrl+I
Make lowercase 使小写 Ctrl+U
Make uppercase 使大写 Ctrl+shift+U
和Edit相关的
Undo 撤销 Ctrl+Z
Redo 恢复 Ctrl+Y Ctrl+shift+Z Download 下载 Ctrl+D
Build 编译 Ctrl+B
Build all targets 编译所有 Ctrl+shift+B
5)Templates(模板)
这里是设置模板,有自带的也可以自己建立,大大的方便了使用。
例如在建立子函数时可以同时加入注释说明,如下图
因而模板的使用会带来极大地便捷,方便了模块化编程。