以前写了一个测试程序,昨晚上想把测试程序在改进时候,发现我多增加一个全局变量 unsigned int flag; //定义一个全局变量 ,烧写到单片机。。单片机运行时候。LCD 显示就正常了。测量到的数据也显示不了, 反复测试好多次, 发现问题就在这句: unsigned int flag; //定义一个全局变量 多定义一个就出现错误。 我百思不得其解。。 最后我只有请教了一些朋友,一些有经验的朋友很快就知道问题出在哪里了。 是单片机的RAM 不够了。 因为我的这个程序比较大,涉及全局变量用到的比较多,超出范围了。KEIL有三种存储模式SMALL,COMPACT,LARGE. 默认存储模式是SMALL , 默认就把所有的变量都放在RAM里面,这样访问速度是最快,但是适合小程序, 我的RAM 只有1280字节 。是不够的。所以要选择large模式,该模式空间大,可存变量多,但是访问速度相对于比较慢。 所以。。只要把 KEIL Memory Model 设置为:large 即可。
OK ,人多力量大。。 问题就这样解决了。 所以,做个记录。 让看过这篇**的人,下次遇到这样问题,也可以试试这个方法。
|