一、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程序才能正常访问变量。否则只能运行不含变量的代码。
-----------------------------------------------------------------------------------------------
五、如何查看代码运行时间
切记:查看代码运行时间仅限于模拟仿真时。
-----------------------------------------------------------------------------------------------