6104|14

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助:如何在主函数运行前关闭看门狗 MSP430 [复制链接]

我用的芯片是MSP430F5438A,由于需要,要在主函数运行前关闭看门狗,否则由于看门狗的复位会造成系统无法进入主函数。
我在网上查了很多方法,但是他们提得方法针对的是IAR的低版本,我用的是IAR 5.20.1版本,并不适用。
我想知道,如何设置CSTARTUP.S43文件等已达到在主函数运行前关闭看门狗。

最新回复

在cstartup.s43里有这段代码。 #ifdef DISABLE_WATCHDOG         MOV     #WDTPW + WDTHOLD, &WDTCTL #endif 所以只要在这个文件的最前面#define DISABLE_WATCHDOG  详情 回复 发表于 2011-12-26 14:08
 
点赞 关注

回复
举报

424

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
一般都是在Main函数中用  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
不知道你为什么要这么做?
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 鸵鸟蝈蝈 的帖子

出于某种考虑,程序初始化时间比较长,超过了看门狗默认的32MS,所以如果不在启动文件中修改默认设置,我是无法进入main()函数的,自然也无法执行“ WDTCTL = WDTPW + WDTHOLD”此语句。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

4
 
UP
不要沉了
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
IAR下面的low_level_init.c在这个文件里面关闭即可。

我的路径是:\IAR Systems\Embedded Workbench 6.0 Evaluation\430\src\lib

/*
 * To disable the watchdog timer, include a suitable device header
 * file (or "msp430.h") and add the following line to the function
 * below:
 *
 *     WDTCTL = WDTPW+WDTHOLD;
 *
 */


#include <intrinsics.h>

int __low_level_init(void)
{
  /* Insert your low-level initializations here */

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

  return 1;
}


 
 
 

回复

44

帖子

0

TA的资源

一粒金砂(中级)

6
 
还会出现这种情况?
 
 
 

回复

5015

帖子

12

TA的资源

裸片初长成(初级)

7
 
原帖由 lyzhangxiang 于 2011-12-22 16:58 发表
IAR下面的low_level_init.c在这个文件里面关闭即可。我的路径是:\IAR Systems\Embedded Workbench 6.0 Evaluation\430\src\lib/* * To disable the watchdog timer, include a suitable device header *  ...

这个方案,lz可以试下
 
 
 

回复

419

帖子

0

TA的资源

一粒金砂(高级)

8
 
在IAR安装目录下搜cstart,有个汇编文件,里面有个条件编译是否关闭看门狗,你宏定义一下就关闭看门狗了。
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

9
 

回复 7楼 wstt 的帖子

验证过的   绝对没问题的。

有点类似启动代码一样,低水平的初始化代码。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 8楼 woody_chen 的帖子

我曾经找到过这个启动文件。
也在里面定义过,但是无效。
你是在文件那里定义的?
可否详细告知,看是不是我定义的位置不对。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 9楼 lyzhangxiang 的帖子

你的方法使管用的,但是我看下函数说明,会不会影响其他功能的实现。
因为我仅仅是想关闭看门狗而已。
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

12
 
WDTCTL  = WDTPW + WDTHOLD;    //创建工程时 自动生成这句话(停看门狗)
官方例程里都这样
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

13
 

回复 11楼 xiaofengcheng 的帖子

不会的 也仅仅是关闭看门狗 在初始化数据之前关闭

一般在main'里面的都是在初始化结束,只有这一点点区别。
 
 
 

回复

419

帖子

0

TA的资源

一粒金砂(高级)

14
 
在cstartup.s43里有这段代码。
#ifdef DISABLE_WATCHDOG
        MOV     #WDTPW + WDTHOLD, &WDTCTL
#endif
所以只要在这个文件的最前面#define DISABLE_WATCHDOG
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

15
 
多谢
“lvzhangxiang”和“woody_chen”两位大神热心细致的帮助,问题得到解决!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表