搞定了:
Q6:当在RAM 中对其中一变量开辟的尺寸是512 字节时,程序总占用3.5KRAM 空间,可以正常烧到芯片中,
也可以正常运行;
当对同一变量开辟的尺寸是1024 字节,而其它均未改变时,程序总占用4.0K左右RAM 空间,可以正常烧到芯
片中,却无法运行!!!!
A6:方法一将一些变量定义成no init 类型
方法二修改IAR 的cstartup.s43 程序,具体方法如下:(iar310a为例)
1 将cstartup.s43 程序加载到用户自己的项目中,cstartup.s43在iar310a的路径如下$TOOLKIT_DIR$\src\LIB\
2 修改cstartup.s43 中的__program_start子程序,加入关闭看门狗的命令MOV#0x5A80,&0x0120
3 在Project->Options->Linker->Config 页中选择Override default programe ,并将Entry lib 设置成
__program_start
摘录:
1、msp430在执行主程序之前默认会对将程序中定义的相关变量初始化为0,但当需要在程序中定义大型数组时,最好在数组前加__no__init,告诉编译器这个数组不需要进行初始化,否则可能因为初始化时间超过WDT而导致不断复位。我曾经在写过一个程序,需要定义两个1024长度 int型全局数组,也就是说总共占用4KB字节RAM,当时用的是msp430f2618,其RAM为8KB,按道理不应该出问题。不过当我把程序下到单片机里是,程序一直运行在main函数之前的一段引导区代码,无法进入到主程序中。在加了__no__init预编译说明后,问题得到解决。
|