IAR怎么在启动程序里面添加关闭看门狗代码
看网上的资料教这么做:
解决办法:
方法一 将一些变量(主要是大全局数组)定义成 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
按照上面的指示:我在文件中加入:MOV.W #WDTPW+WDTHOLD , &WDTCTL
(也尝试过,在我的工程中添加#define DISABLE_WATCHDOG 语句,均无效果;也尝试过,直接注释掉调件编译,让其直接编译,也没有效果:
//#ifdef DISABLE_WATCHDOG
MOV #WDTPW + WDTHOLD, &WDTCTL
//#endif
但是我的IAR 是6.0版的,我用的是MSP430,没有看到Entry lib ,取而代之的是Entry symb 所以我选择了 Entry symb :__program_start
但是没有任何效果,什么原因??
晕死!上面不是已经说了,进不了main吗,还在main里面初始化,晕死。
“因为我里面有大数组,上电后先经过编译器的启动程序,启动程序给数组初始化,超过看门狗的默认时间,就重启了,进不了mian里面,所以main里面的关闭看门狗没有。不信你设一个很大很大的数组试试,包你下进去了跑不了”
你可以做个试验,就是定义一组很大很大的数组,然后载进去你就知道怎么回事了,到时候你就知道我这个问题的意义了,所以你也去看看怎么在启动程序内加关看门狗吧,一起解决