stm wwdg使用注意

stm wwdg使用注意

ID:33397388

大小:352.50 KB

页数:13页

时间:2019-02-25

stm wwdg使用注意_第1页
stm wwdg使用注意_第2页
stm wwdg使用注意_第3页
stm wwdg使用注意_第4页
stm wwdg使用注意_第5页
资源描述:

《stm wwdg使用注意》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、于WWDG的疑问回复数:18,点击数:565【楼主位】jeowill积分:18派别:等级:------来自:环境如下:IDE  MDK板子 STM3210E-------------------------------------------------------测试程序:void WWDG_Test(void){// Enable WDG clocks  RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG , ENABLE); // PCKL1: 36MHZ  WWDG_SetPrescaler(WWDG_Prescaler_8); //

2、 Set Window value to 65  WWDG_SetWindowValue(65); WWDG_Enable(127); // Clear EWI flag  WWDG_ClearFlag(); //Enable EW interrupt  WWDG_EnableIT(); while(1){  }}void WWDG_IRQHandler(void){   //WWDG_SetCounter(0x7F);       //WWDG_ClearFlag();     //香水城的文章 http://blog.ednchina.com/STM32/135104/m

3、essage.aspx 中说: 在中断里面喂狗是没有意义的;   //从灯灭,灯亮 (示波器也可以看到) 来看,如果这两句存在的话;灯可以持续闪烁, 但是程序不会重启;   //看起来狗被喂了;   //但是终究不能把狗放到这里来喂, 比如应该在上面的那个while(1)里面来喂, 但是当我注释掉这里的“喂狗”,   //将WWDG_SetCounter(0x7F);   WWDG_ClearFlag(); 移动到 上面的 while(1)后, 系统就不断的重启;    //现在的问题是: WWDG的这个狗到底该怎么喂?     if(1){          static 

4、unsigned char bval=0;if(0 == bval){ GPIO_SetBits(GPIOF, GPIO_Pin_9);//LED4 亮 bval=1;}else{ GPIO_ResetBits(GPIOF, GPIO_Pin_9);LED4 灭 bval=0; }}} 2009-05-22,17:02:48资料邮件回复引用回复编辑删除【1楼】__STM32__积分:1128派别:等级:------来自:窗口看门狗的特点是:不能在狗饱时喂狗,也不能在狗饿时喂狗 狗饿时喂狗,狗要咬人;狗饱的时候喂,狗也要咬人;只能在一个时间段内、当狗半饱的时候喂,狗才能乖乖地干

5、活。一般的看门狗是在任何时间都可以喂狗,不管狗是不是已经饱了。 你把喂狗操作放到主循环中,就是属于"狗饱的时候喂",它当然要咬人了。WWDG_IRQHandler是在喂狗窗口的最后产生的中断,产生这个中断时表示即将产生看门狗复位,也就是说程序中出现了问题,预定的喂狗操作没有被执行,出现了意想不到的错误,在这个中断里你需要赶紧把重要的数据存起来,做紧急关机等动作,而不是简单地喂狗,那样只能是错上加错,掩盖了其它的错误。正常情况下,不应该进入这个中断。可以看看我的博客:如何使用STM32的窗口看门狗 2009-05-22,17:21:13资料邮件回复引用回复编辑删除【2楼】jeo

6、will积分:18派别:等级:------来自:你好,香水城; 谢谢你这么快的回复;      理论上,我理解WWDG_IRQHandler 的用途; 它只是为了在复位前做一些关键的操作,比如重要数据的保存;      只是目前,我还没不知道狗是不是办饱;      我猜想: WWDG_Enable(0x7F);   0x7F  递减到 0x3F 的时候,应该就产生RESET,事件也就在0X3F的前一个计数;      那么半饱是不是意味这 Counter = 0x3F + (0x7F -0x3F)/2  也就是 Counter =  0x5F  ?     那么这个函数就改

7、写成:void WWDG_Test(void) {         // Enable WDG clocks           RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG , ENABLE);          // PCKL1: 36MHZ           WWDG_SetPrescaler(WWDG_Prescaler_8);          // Set Window value to 65           WWDG_SetWindowValu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。