OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5505|回复: 9

窗口看门狗的问题

[复制链接]

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
发表于 2012-10-15 21:16:31 | 显示全部楼层 |阅读模式
原子哥的原来中断

void WWDG_IRQHandler(void)
{         
 u8 wr,tr; 
  wr=WWDG->CFR&0X7F;
 tr=WWDG->CR&0X7F;
 if(tr<wr)WWDG_Set_Counter(WWDG_CNT);//只有当计数器的值,小于窗口寄存器的值才能写CR!!         
 WWDG->SR=0X00;//清除提前唤醒中断标志位
 LED1=!LED1;
}

这个函数,在程序运行几下,会出现LED0和LED1交替闪烁的时候,LED0闪几下,就不闪了(原子的原程序烧板)。(LED1闪非常快)

把“if(tr<wr)……”该为“if(tr<wr&&tr>0x40)”,程序就不会出现上面的状况,而是LED0和LED1交替闪烁。(数度一般)

请问各位大哥运行原子的窗口看门狗程序,会不会出现,LED0闪几下不会闪的问题啊。

另开着USART,好像没用,关掉屏蔽USART初始化, 程序照样运行。

再者,烧录代码后(原子代码),会出现一个BUG:运行一段时间,两个灯会同时灭一点多秒,然后又重新交替点亮。

咳,是不是我的板子有问题了,跑马灯和按键的实验,也会出现开始的时候异常,运行一段时间就不会出现啊,原子哥,怎么搞喔。

http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-15 22:47:43 | 显示全部楼层
回复【楼主位】moline:
---------------------------------
该为:
//初始化独立看门狗
//prer:分频数:0~7(只有低3位有效!)
//分频因子=4*2^prer.但最大值只能是256!
//rlr:重装载寄存器值:低11位有效.
//时间计算(大概):Tout=((4*2^prer)*rlr)/40 (ms).
void IWDG_Init(u8 prer,u16 rlr) 
{
IWDG->KR=0X5555;//使能对IWDG->R和IWDG->RLR的写     
   IWDG->R=prer;  //设置分频系数   
   IWDG->RLR=rlr;  //从加载寄存器 IWDG->RLR  
IWDG->KR=0XAAAA;//reload    
   IWDG->KR=0XCCCC;//使能看门狗
}
//喂独立看门狗
void IWDG_Feed(void)
{
IWDG->KR=0XAAAA;//reload    
}
//保存WWDG计数器的设置值,默认为最大. 
u8 WWDG_CNT=0x7f; 
//初始化窗口看门狗 
//tr:T[6:0],计数器值 
//wr:W[6:0],窗口值 
//fprer:分频系数(WDGTB),仅最低2位有效 
//Fwwdg=PCLK1/(4096*2^fprer). 
void WWDG_Init(u8 tr,u8 wr,u8 fprer) 
{    
RCC->APB1ENR|=1<<11;  //使能wwdg时钟 
WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT.     
WWDG->CFR|=fprer<<7;    //PCLK1/4096再除2^fprer 
WWDG->CFR&=0XFF80;      
WWDG->CFR|=wr;      //设定窗口值      
WWDG->CR|=WWDG_CNT;  //设定计数器值 
WWDG->CR|=1<<7;   //开启看门狗      
MY_NVIC_Init(2,3,WWDG_IRQChannel,2);//抢占2,子优先级3,组2     
WWDG->SR=0X00;  //清除提前唤醒中断标志位 
WWDG->CFR|=1<<9;        //使能提前唤醒中断 

//重设置WWDG计数器的值 
void WWDG_Set_Counter(u8 cnt) 

WWDG->CR =(cnt&0x7F);//重设置7位计数器 

//窗口看门狗中断服务程序 
void WWDG_IRQHandler(void) 
{      
WWDG_Set_Counter(WWDG_CNT);//重设窗口看门狗的值!         
WWDG->SR=0X00;//清除提前唤醒中断标志位 
LED1=!LED1; 
}

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-15 23:14:46 | 显示全部楼层
我搜了帖子,改用新的程序,LED0一直亮,LED1是有闪烁(非常快),但非常暗。如果不仔细看,都看不到在闪烁。

这下麻烦了...........................
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-15 23:22:23 | 显示全部楼层
你下载我们原本的程序,就不应该有问题的哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-15 23:24:06 | 显示全部楼层
我就是用你原来的程序来着,就是闪几下,就看不到LED0闪烁了,
如果把“if(tr<wr)……”该为“if(tr><wr&&tr>0x40)”,那么闪烁跟跑马灯差不多了。。。。。。。
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-15 23:25:57 | 显示全部楼层
就单单把tr<wr,改为tr><wr&&tr>0x40,交替闪烁就很正常啊。
我一开始做跑马灯和按键实验的时候,包括看门狗实验,都会出现开始的时候闪烁异常,过一会儿就不会了
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-15 23:31:04 | 显示全部楼层
太奇怪了,我中断与条件判断没什么关系,现在变成有关系了,...我这个板子的IC估计是特制的,.......
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-16 00:13:37 | 显示全部楼层
回复【5楼】moline:
---------------------------------
你看看看门狗的实验现象描述!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-9-15
在线时间
0 小时
发表于 2015-9-15 09:49:35 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我的也这样,刚通电时LED0会中途闪五下,然后正常,在通电状态下,下载进去就完全正常,一断电再通电就闪五下,改程序了还是这样
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-22 23:15:10 | 显示全部楼层
回复【9楼】MXJ:
---------------------------------
这是正常的,一键下载电路的影响....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 03:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表