您现在的位置: 主页 > MCU > 单片机技术应用 > MSP430 大型数组 上电不启动 -
本文所属标签:
为本文创立个标签吧:

MSP430 大型数组 上电不启动 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
现象:程序烧录板子后,单片机不启动,卡死。注释掉部分字节数组后,才能运行。分析: 这是IAR编译的方法,导致看门狗溢出了。MSP430单片机一上电看门狗就已经启动,但是在进入main()函数之前,软件会

现象:程序烧录板子后,单片机不启动,卡死。注释掉部分字节数组后,才能运行。

本文引用地址: http://www.21ic.com/app/mcu/201806/764611.htm

分析:

这是IAR编译的方法,导致看门狗溢出了。MSP430单片机一上电看门狗就已经启动,但是在进入main()函数之前,软件会先初始化用到的一些数据,比如数组。如果数定义的比较大,初始化时间比较长,那就有可能导致看门狗溢出了,单片机复位,然后重启,再初始化,再溢出,再复位..程序永远也进不去主函数。

解决方法:

使用低级初始化函数:int __low_level_init(void)。该函数会自动把低级初始化函数放在程序的最开始处,在此可以关闭看门狗,等低级初始化函数执行完之后,才会进行数据初始化,最后再进入main()函数。

void main()

{

}

int __low_level_init(void)
{
WDTCTL = WDTPW+WDTHOLD; // Stop WDT
/* Insert your low-level initializations here */

/*
* Return value:
*
* 1 - Perform data segment initialization.
* 0 - Skip data segment initialization.
*/

return 1;
}

也不用调用该函数,编译器自动将其放在最开始处。

当然也可以把所有硬件初始化函数写进来,这样在进入main函数之前,把硬件都准备好了,避免了其他bug产生。

__no_init unsigned char all_25665[] ={

//4K多字节

};




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > MSP430 大型数组 上电不启动 -
 

"MSP430 大型数组 上电不启动 -"的相关文章

网站地图

围观()