转载及积累:
1、分配数组的时候,一定要够长,否则填入是数组越界的时候,造成很多的问题(包括潜在的问题)。
a:全局变量改变:越界数据将全局变量覆盖
b:数组越界,无止境增长,造成堆栈溢出,程序跑飞。
2、定义一个全局变量(数组),当变量(数组)很长的时候出现,能下载到单片机,但不能运行的情况。例:
char UART0_RX_BUF[400]={0}; 可以正下载程序,但是程序无法正常运行。
改为(缩小长度) char UART0_RX_BUF[200]={0}; 则正常。
原因:定义的数组很长,且要求其初始化,RAM的初始化时间大于WDT默认的32MS时间,因此MSP复位。
解决方法: 用 __no init_定义变量,上电编译器不产生特殊的附加函数去初始化变量。
网上同样问题:
“当在RAM中对其中一变量开辟的尺寸是512字节时,程序总占用3.5K RAM空间,可以正常烧到芯片中,也可以正常运行;当对同一变量开辟的尺寸是1024字节,而其它均未改变时,程序总占用4.0K左右RAM空间,可以正常烧到芯片中,却无法运行!!!!”
http://bbs.lierda.com/showthread.php?t=11608
利达尔:MSP430常见问题汇总
http://wenku.baidu.com/view/19f818d376eeaeaad1f33003.html