初级会员

- 积分
- 73
- 金钱
- 73
- 注册时间
- 2011-5-12
- 在线时间
- 3 小时
|
实验遇到的问题:HEX文件大于11.3KB时,下载到实验板不能运行,反之则完全正常
做第一个实验时就遇到了个奇怪的问题,程序在软件里仿真是正确的,而下载到实验板就运行不了,在不断的尝试修改后终于正常了,但还是没有找出具体的原因,可是不能在这个问题上停滞不前啊,所以开始了按键输入的实验。
按键输入实验其实也很简单,相比第一个实验就是增加了将按键接口配置为输入模式一步,然后就可以和单片机一样来操作了。我在实验板上将8只LED连到PB[15:8],独立按键分别接在PB[7:0],程序实现的功能是 一只按键控制一个LED,比如KEY0按一次,LED0亮,再按一次,LED0灭…;KEY1按一次,LED1亮,再按一次,LED1灭…
很快,程序写好了,编译后照着手册上的步骤用软件进行仿真,没有问题,就下载到实验板了,邪门啊,又没反应了,和第一个实验一样,下载到板子就不运行了,纳闷!
不管怎么样,先回过头来查代码,没查出什么问题,崩溃边缘!好吧,这时我想,既然8个按键控制8个LED不运行,那再简单点,先只用1个按键控制1个LED,然后把端口重新配置了,将主函数里控制LED1--LED7亮灭的处理代码和按键扫描函数里的KEY1--KEY7的处理代码都注释掉了,再下载,呵呵,可以了。接下来,我就一个按键一个LED的往上加,当加到5个按键控制5个LED时,下载到实验板的程序又不运行了,将第五个注释掉,又可以;加第六个,也不行,我又把前4个都注释掉,单独试第5个和第6个,都是可以的,再加第7个和第8个,都没问题,这时我就任意注释掉4个,都是可以的,奇怪了,难道只支持最多4个KEY控制4个LED,显然不可能!
一下子又没有头绪了,后来突然想到,会不会是RV MDK的问题,以前看到网上有帖子说keil有代码大小限制,是未破解的版本。我就又打开工程,先把8只按键8只LED都加到程序里,然后将SYS.C和delay.c文件里未用到的函数注释掉,再试,完全正常了,难道我的猜想是对的,真有代码限制,我的可是破解过的哦,不管,先把注册机打开,重新注册,之后再恢复所有程序,又没反应,不可能是代码大小有限制把,我反复的试,然后每次编译后看看 HEX文件的大小,这时我发现,只要HEX文件小于11.3K程序就能正常运行,反之就不行。我用的是芯片是 STM32F103C8, 查了一下,程序存储器有64K的,也不会是程序装不下的。谁知道这时什么原因啊!
|
|