keil

STM32,ARM,Keil工具相关

China☆狼群 提交于 2020-01-28 16:11:01
One ELF Section per Function https://blog.csdn.net/iceiilin/article/details/6091575 因此,可以得出,选项One ELF Section per Function的主要功能是对冗余函数的优化。通过这个选项,可以在最后生成的二进制文件中将冗余函数排除掉(虽然其所在的文件已经参与了编译链接),以便最大程度地优化最后生成的二进制代码。 而该选项实现的机制是将每一个函数作为一个优化的单元,而并非整个文件作为参与优化的单元。 选项One ELF Section per Function所具有的这种优化功能特别重要,尤其是在对于生成的二进制文件大小有严格要求的场合。人们习惯将一系列接口函数放在一个文件里,然后将其整个包含在工程中,即使这个文件将只有一个函数被用到。这样,最后生成的二进制文件中就有可能包含众多的冗余函数,造成了宝贵存储空间的浪费。 The One ELF Section per Function option tells the compiler to put all functions into their own individual ELF sections. This allows the linker to remove unused functions. An ELF code

keil仿真

喜你入骨 提交于 2020-01-26 15:45:15
先配置时钟频率,与代码中的一致 再配置debug调试文件 其中parameter 要与上图中的STMicroelectronics名字一致。Dialog.DLL不能写错 再点击调试,无误则成功。在运行过程中可以查看外设寄存器的情况 也可以查看更多资源 第一个是command windows 命令控制台,可以看到程序是否有误 第二个是disassembly 反汇编,显示对应的汇编语言 第四个是寄存器窗口 第六个是查看任意变量的窗口 第七个是查看内存的窗口 第八个是串口查看窗口 第九个是分析仪器如逻辑分析仪 第十个是每一个外设的寄存器 来源: CSDN 作者: 零点xu 链接: https://blog.csdn.net/qq_38348811/article/details/100567525

Keil出现Error:Flash Download failed - Could not load file错误 解决点拨

末鹿安然 提交于 2020-01-23 18:48:12
根本原因 很多大学生刚接触keil在新建模版时可能会出现“ Error:Flash Download failed - Could not load file…… ”的错误。由于机器人工程专业的新开办,可能老师也无法解决,其实原因很简单,归根到底 是添加文件时发生了错误 。 探究根源 不论对于新手小白,还是上手几年的学长,很多都不知道keil到底支持添加什么类型的文件,在此,本博主一张图为你解答。所以,当你添加了图中以外的文件类型时就会出现这个错误。 解决方法十分简单,只需要remove(除去)keil软件不支持类型的文件即可 。 希望我的分析过程能带给大家一点帮助,祝学习愉快。 来源: CSDN 作者: 努力爱专业爱自己 链接: https://blog.csdn.net/wzh365979633/article/details/104076487

Keil中各种模式与存储类型

戏子无情 提交于 2020-01-21 23:47:45
1、存储类型 data:直接访问内部数据存储器(128字节片内RAM),访问速度最快。 bdata:可位寻址内部数据存储器(16字节片内RAM),允许位于字节混合访问。 idata:间接访问内部数据存储器(256字节片内RAM),允许访问全部内部地址。 pdata:分页访问外部数据存储器(256字节片外RAM),用"MOVX @Ri"指令访问。 xdata:外部数据存储器(64KB外部RAM),用"MOVX @DPTR"指令访问。 code:程序存储器(片内4KB或64KB片外FLASH),用"MOVC @A+DPTR"指令访问。 [单片机内存模型] 2、存储模式 存储模式决定了默认的存储器类型此存储器类型将应用于函数参数局部变量和定义时未包含存储器类型的变量你可以在命令行用SMALLCOMPACT和LARGE参数定义存储模式定义变量时使用存储器类型显式定义将屏蔽默认存储器类型。 小(SMALL)模式 所有变量都默认在8051的内部数据存储器中这和用data显式定义变量起到相同的作用在此模式下变量访问是非常快速的然而所有数据对象包括堆栈都必须放在内部RAM中堆栈空间面临溢出因为堆栈所占用多少空间依赖于各个子程序的调用嵌套深度在典型应用中如果具有代码分段功能的BL51连接/定位器被配置成覆盖内部数据存储器中的变量时此SMALL模式是最好的选择。 紧凑COMPACT模式

使用keil建立标准STM32工程模版(图文详细版!)

我们两清 提交于 2020-01-20 21:06:30
1. 模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当你着手于较大的软件项目时,类别分明,层次合理的工程目录结构会让你的开发管理化繁为简。 (1) 首先在一个目录下创建主文件夹,名字按需求取,这里取名为:(0)工程模板 (2) 在该文件夹里分别建立名字为 Project 和 Source 的文件夹。其中 Project 文件夹用来放置工程文件,而 Source 用来放置程序代码文件。 ↑ (3) 在 Project 文件夹里建立名字为 Obj 和 List 的文件夹,这是用来存放工程编译文件的。 ↑ (4) 然后在 Source 文件夹中建立3个名字分别为 Application , Drivers 和 STM32_FWLib 的文件夹。 Application 是用来放置应用程序文件的,例如 main.c, 和一些应用配置文件,如 stm32f10x_it.c , stm32f10x_conf.h 。 Drivers 是用来放置驱动程序文件的, STM32_FWLib 是用来放置ST固件库文件的。 ↑ (5) 在 Application 中添加一个名为 main 的文件夹。如果有其他应用程序

KEIL编译时Warning: C3008W: splitting LDM/STM has no benefit的消除

吃可爱长大的小学妹 提交于 2020-01-19 02:36:37
有时在多次修改程序后编译时出现报警,前面是某个C程序比如main.c:,后面跟着:Warning: C3008W splitting LDM/STM has no benefit 解决办法:若是CM内核的,则在魔术棒Option for Target中C/C++选项卡下的Split Load and Store Multiple选项,去掉打勾不要选,重新编译就好了。 百度有人说CM3中r1pn的Bug报错不是这么回事,我没遇到过; 并且指明:Cortex M系列由于能保存STM/LDM的REG读写状态,所以不需要加Split LDM/STM的编译选项了。 来源: CSDN 作者: kaoyanshiyong 链接: https://blog.csdn.net/kaoyanshiyong/article/details/103933275

keil MDK注意事项

血红的双手。 提交于 2020-01-16 14:51:58
1.MDK中的char类型的取值范围是? 在MDK中,默认情况下,char 类型的数据项是无符号的,所以它的取值范围是0~255。它们可以显式地声明为signed char 或 unsigned。因此,定义有符号char类型变量,必须用signed显式声明。我曾读过一本书,其中有一句话:“signed关键字也是很宽宏大量,你也可以完全当它不存在,在缺省状态下,编译器默认数据位signed类型”,这句话便是有异议的,我们应该对自己所用的CPU构架以及编译器熟练掌握。 关于keil MDK工程项目设置可参考:https://blog.csdn.net/ybhuangfugui/article/details/51655502,https://blog.csdn.net/ybhuangfugui/article/details/53131141 2.赋初值的全局变量和静态变量,初值被放在什么地方? unsigned int g_unRunFlag=0xA5; static unsigned int s_unCountFlag=0x5A; 这两行代码中,全局变量和静态变量在定义时被赋了初值,MDK编译环境下,你知道这个初值保存在那里吗? 对于在程序中赋初值的全局变量和静态变量,程序编译后,MDK将这些初值放到Flash中,紧靠在可执行代码的后面。在程序进入main函数前,会运行一段库代码

Keil (MDK)中变量定义位置

被刻印的时光 ゝ 提交于 2020-01-16 14:36:54
在keil中编译程序时提示:error: #268: declaration may not appear after executable statement in block 错误, 说是声明不能在执行语句后,也就是说变量的声明写在了使用语句的后面,导致程序在编译链接时, 使用到该变量的语句找不到这个变量,故出错。 这其实与keil所采用的标准有关,Keil5(版本是5,14.2)默认采用C89标准, //报错代码 flag = 0; u16 i = 0; 这个标准要求在编写程序时变量不能放在函数体中间,只能在函数最开始定义或声明变量。如何修改呢? 方法1 将变量都放在函数最开头,且注意变量在函数体中出现的先后顺序,应该按照后面使用的顺序进行定义或声明变量,否则仍会报同样的错。 //修改代码 u16 i = 0; flag = 0; 方法2 将keil的标准改为C99,重新编译即可。如图所示,在option的C/C++标签中勾选上C99 Mode 选项(在中间右侧)。 方法3 来源: https://www.cnblogs.com/ys77/p/11541775.html

Deploying Qt dll file - cannot find windows plugin although platforms/qwindows.dll exists and so libEGL and libGLES

≯℡__Kan透↙ 提交于 2020-01-15 23:50:09
问题 I built my app as normal exe and run windeployqt on it. I got long list of files in folder with exe. files: ./ D3Dcompiler_47.dll Qt5Core.dll Qt5Gui.dll Qt5Svg.dll Qt5Widgets.dll WLedPlugin.exe accessible files.txt iconengines icudt52.dll icuin52.dll icuuc52.dll imageformats libEGL.dll libGLESv2.dll platforms qt_cs.qm qt_de.qm qt_fi.qm qt_hu.qm qt_it.qm qt_ja.qm qt_ru.qm qt_sk.qm qt_uk.qm ./accessible: qtaccessiblewidgets.dll ./iconengines: qsvgicon.dll ./imageformats: qdds.dll qgif.dll qicns