单片机程序中为什么要禁止看门狗 20

在F2407A的C语言编程中,都有类似的初始化语句,voidSystemInit(){asm("SETCINTM");/*关闭总中断*/asm("CLRCSXM");/*... 在F2407A的C语言编程中,都有类似的初始化语句,

void SystemInit()
{
asm(" SETC INTM "); /* 关闭总中断 */
asm(" CLRC SXM "); /* 禁止符号位扩展 */
asm(" CLRC CNF "); /* B0块映射为 on-chip DARAM*/
asm(" CLRC OVM "); /* 累加器结果正常溢出*/
*SCSR1=0x81FE; //CPU CLOCK = 10*4=40M
/* 打开ADC,EVA,EVB,CAN和SCI的时钟*/
*WDCR=0x006F; //Disable on-chip WD,看门狗时钟64分频

KickDog(); //Initial WD

*IFR=0xFFFF; //清除中断标志
*IMR=0x0006; //Open Int2, Int3
}

在这里面有*WDCR=0x006F;这样的一句,这是把内部的看门狗禁止了。那么在2407的应用系统中,一般需要这个看门狗功能,现在把它禁止了看门狗还有用么?为什么要禁止它呢?

难道说正常的2407工作时都是看门狗禁止吗,那要它还有什么用?是不是在那个地方再把它打开?但是在程序中找不到呀?

请各位解释一下,非常谢谢!
展开
 我来答
procatlaw
2009-02-16 · TA获得超过401个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:244万
展开全部
你要先明白看门狗的用途
看门狗其实就是一个定时器
这个定时器溢出是会产生一个中断响应
中断服务就是跳会程序开头,即复位
看门狗常用在程序很容易跑飞的情况下(如等待超时,意外进入死循环等)
启动看门狗后要定时在程序中把看门狗的计数值清0,就是防止它进入中断然后复,这种常称为喂狗
如果在一般简单的程序中是不太可能会跑飞的话多数会关闭看门狗,因为引入了看门狗就多了定时计数值处理的一些代码,增加了程序的复杂性

但是看样子楼主的原因并非以上几个方面, 关闭看门狗的目的是让他先暂停再设置,而之后打开,就是那个kickdog()

在程序中的应用,会表现在为计数器的值赋0,可能你没有留意

再者,正如楼上所说,你用的不纯粹是单片机,而是DSP
DSP具体和单片机有什么区别, 你可以暂时理解为专门为乘法和存储优化使其速度加快以适用于通信领域的单片机
micropower
推荐于2017-11-27 · TA获得超过1万个赞
知道大有可为答主
回答量:2619
采纳率:50%
帮助的人:1544万
展开全部
这个并不是单片机,是德州仪器的DSP芯片TMS320F2407。
这是设置看门狗的时候,必须先关闭它才能设置,否则在开启状态下设置狗可能会出现问题。一般单片机和DSP、还有ARM芯片里设置内部功能的时候,都是先关闭这个功能,再设置,设置完后再打开。就像这个函数的开头,它把中断关闭了,但后面又打开了,就是这个道理
你看看下面这个KickDog();里面是不是把看门狗又开了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sxrmq
2009-02-15 · 超过23用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:75.6万
展开全部
可能用的外部看门狗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式