OpenEdv-开源电子网

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

求教一个窗口看门狗触发中断的的问题

[复制链接]

18

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2013-7-6
在线时间
0 小时
发表于 2013-8-8 10:07:20 | 显示全部楼层 |阅读模式
            


这个主函数设置计数器的值为127,上窗口值为95,书上说在计数器的值快到0X40(下窗口的值)时,如果EWI置位了,便可以唤醒中断


但是在上面这个函数中要判断tr<wr,按照上面触发中断的条件可知,tr接近0x40(64)才触发中断,0x40小于5f,即触发中断时tr已近小于wr,但是为啥不要那句判断就会一直复位,不解!希望学过的人能提点一下。谢谢了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-8 11:14:40 | 显示全部楼层
这个bug,是个奇葩问题,暂时无法得到解释.
新例程已经修改了.
如下:
//保存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
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2013-7-6
在线时间
0 小时
 楼主| 发表于 2013-8-8 12:25:53 | 显示全部楼层
恩,谢谢正点原子的回复
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 10:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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