keil编译软件的使用汇总

一、Keil v4中文注释代码出现乱码

在新版本的KEIL中,总有人反映中文注释会出现乱码。 出现这种情况,对于中文注释程序的人来说,无疑是一件十分不爽的事情。但实际解决这个问题其实很简单,在Edit/Configuration里如下图:

这个是view菜单的最后一下configuration的界面,在蓝色选中的部分选择GB2312,如图:

这时候,编辑文档里的删除文字和退格操作都是按照中文编码了,不再会出现乱码的情况。

-----------------------------------------------------------------------------------------------

二、Keil5代码补全功能

设置一下代码补全功能。

-----------------------------------------------------------------------------------------------

三、Keil5.12编译报错的处理

软件版本

 

1、编译后报错

原来的设置如下,后来突然就没有此选项(原因不明)。

这样就只能安装知识包,

 

将下图中的STM32F10X_MD去掉即可解决。

-----------------------------------------------------------------------------------------------

2、报错startup_stm32f10xx.s: error: A3906U: Malformed via file '.\debug\startup_stm32f10xx._ia'.

Hi,

when i setting up a new project in uVision, i get a crazy Error wich i cant handle with.

My error is --> main.c: error: C3906U: Malformed via file '.\main.__i'.

Can someone help me with this, what is the main.__i good for and why is it malformed?

Best regards Nils 

Hi Nils,

Only thing I found on google was to remove the file from the project, and then add it again. Make sure to clean the project and do a full re-build afterwards. Does this happen on all projects?

If this does not help, I would recommend posting this to Keil's forums. I believe that you would get a better answer there.

Best regards H?kon

you might be using special character like '#" for directory name under which you put your project.

就是在放工程的目录下方不能使用象“#”那样的特殊符号。

The easy solution is to make sure, the directory name under which you have your project files should not have any special characters.

e.g. your project path :C:\Users\acer\Desktop\myProject#2\App Code\Application\s310\arm

Here the directory "myProject#2" is invalid path for keil, if you remove the special character from directory name then it will compile without any error.

Best Regards Jadeja

-----------------------------------------------------------------------------------------------

四、如何查看内存

1、“字母:数字”,D、 I、 X、 C分别代表着直接寻址的片内RAM、间接寻址的片内RAM、扩展的外部RAM和

ROM。切记:查看内存仅限于模拟仿真时。



保存memory中的数据,注意保存下来的文件是HEX386 格式的,可以通过其他工具转换成BIN 格式。

“Command”中用“SAVE”命令:

SAVE path filename addr1, addr2

SAVE E:\ 0x0000,0x0100

2、keil编译后会产生.M51或者.map文件,在这里面可看到内存的使用情况。

3、C程序中查看某一个变量在内存中的地址,比如下面的ChannelKindFault变量

通过串口输出:printf("\r\nSRAM Address:%x",&ChannelKindFault); 

4、ARM单片机keil中的存储器情况

ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成一个ARM程序包含3部分:RO段,RW段和ZI段。

RO是程序中的指令和常量,   readonly,如const型

RW是程序中的已初始化变量   read/write

ZI是程序中的未初始化的变量 zero

烧写的时候是FLASH被占用的空间为:Code + RO Data + RW Data

程序运行的时候,芯片内部RAM使用的空间为:RW Data + ZI Data

ARM映像文件的组成  

所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。 Image文件包含了RO和RW数据。之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。

ARM程序的执行过程  

从以上两点可以知道,烧录到ROM中的image文件与实际运行时的ARM程序之间并不是完全一样的。因此就有必要了解ARM程序是如何从ROM中的image到达实际运行状态的。  

实际上,RO中的指令至少应该有这样的功能:

1)将RW从ROM中搬到RAM中,因为RW是变量,变量不能存在ROM中。更为具体的见main函数之前都发生了什么?

2)将ZI所在的RAM区域全部清零,因为ZI区域并不在Image中,所以需要程序根据编译器给出的ZI地址及大小来将相应得RAM区域清零。ZI中也是变量,同理:变量不能存在ROM中  在程序运行的最初阶段,RO中的指令完成了这两项工作后C程序才能正常访问变量。否则只能运行不含变量的代码。

-----------------------------------------------------------------------------------------------

五、如何查看代码运行时间

切记:查看代码运行时间仅限于模拟仿真时。

-----------------------------------------------------------------------------------------------

永不止步步 发表于12-17 09:49 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:345327个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号