_data16_memzero里死循环

转自:http://blog.sina.com.cn/s/blog_7880d3350101oozo.html

TI技术论坛一个员工这么说的:

一直在_data16_memzero里死循环可能是因为程序最开始初始化变量的时候有大数组需要初始化。导致看门狗不断复位。这个初始化的过程是在进入main之前,有2种方式你可以尝试:

1.对你的数组用 __no init_定义,上电编译器不产生特殊的附加函数去初始化RAM
2. B
修改IARCstartup.S43文件中__program_start子程序,增加一个关闭WDT的操作或者设置WDT时间长度超过32MS
C
Project--Options--Linker--Config中选择 Override default programe,并将Entry lib 设置成__program_start

 

事实也确实如此,Cstartup.S43MSP430的启动文件,里面默认是打开看门狗的,添加个宏定义把看门狗关闭就解决了问题。

 

具体操作如下:

在安装文件:C:\……\src\lib\430 中找到启动文件:cstartup.s43

拷一个cstartup.s43,然后将其只读属性去掉。用记事本等打开cstartup.s43文件,看到文件内有如下语句:


#ifdef DISABLE_WATCHDOG

        MOV     #WDTPW + WDTHOLD, &WDTCTL
#endif


说明文件内已经有关闭看门狗的条件编译语句,只要我们定义条件,这样启动代码中的该语句就生效了,我们在文件头添加一句:

#define DISABLE_WATCHDOG

保存,然后再工程中将cstartup.s43文件添加到我们的工程当中。

Project->Options->Linker->Config页中选择Override default programe ,并将Entry symb 设置成__program_start
debugger->setup->Run to main销掉,这样我们就能够从启动代码开始一句一句的看了。 

cstartup.s43iar310a的路径如下$TOOLKIT_DIR$\src\LIB\

 

参考:

http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55/p/20519/68840.aspx

http://blog.sina.com.cn/s/blog_4c0cb1c001013k4x.html

http://zhidao.baidu.com/link?url=D8bFWuJgYrbaFYA-x8Ni9MSQtuUkqe_OX55VMHaFb5GTDeE7fNRb_8Gus4iipUL3kYcw23CuqxrqmiJfUB7QY_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值