




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
看门狗定时器的主要作用当程序因为干扰而跑飞后,能够使系统复位。从而防止系统跑飞,提高系统稳定性。先来说说看门狗的工作原理:设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,TiTp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。看门狗设计步骤:1,设置看门狗中断操作,包括全局中断操作和看门狗中断的使能,看门狗中断向量的定义。html view plaincopyprint?1. #define rINTMSK (*(volatile unsigned *)0x4a000008) /Interrupt mask control 2. #define rINTSUBMSK (*(volatile unsigned *)0x4a00001c) /Interrupt sub mask #define rINTMSK (*(volatile unsigned *)0x4a000008)/Interrupt mask control#define rINTSUBMSK (*(volatile unsigned *)0x4a00001c)/Interrupt sub maskhtml view plaincopyprint?1. /开中断 2. rINTMSK &= (BIT_WDT_AC97); 3. rINTSUBMSK &= (BIT_SUB_WDT); /开中断 rINTMSK &= (BIT_WDT_AC97); rINTSUBMSK &= (BIT_SUB_WDT);2,对看门狗控制寄存器WTCON设置,包括设置预分频比例因子,分频器的分频值,中断使能,复位使能。WTCON相关位的作用可从下图看出:其中t_watchdog的计算方法为:如预分频值=100;时钟除数因子=128 ;PCLK=67.5MHz,则定时器时钟周期t_watchdog=1/PCLK/(预分频值+1)/时钟除数因子=1/67.5*1000000/(100+1)/128=0.0002预分频值,时钟除数因子的范围如下:html view plaincopyprint?1. rWTCON=(1008)|(33); /预分频值=100;时钟除数因子=128 ; rWTCON=(1008)|(33); /预分频值=100;时钟除数因子=128 ;html view plaincopyprint?1. rWTCON|=(10);/允许复位 rWTCON|=(10);/允许复位3,启动看门狗。html view plaincopyprint?1. rWTCON |= (15)|(12); /允许看门狗定时器和允许中断产生 rWTCON |= (15)|(12); /允许看门狗定时器和允许中断产生4,喂狗,即对WTDAT看门狗数据寄存器和WTCNT看门狗计数寄存器的设置。这要在在中断发生前,重新对看门狗定时器的寄存器进行赋值,使它的定时器重新开始计时。而不至于引起系统复位。html view plaincopyprint?1. rWTDAT=20000; /WTDAT看门狗数据寄存器,看门狗定时器重载的计数值 2. rWTCNT=20000; /WTCNT看门狗计数寄存器,看门狗定时器当前计数值 3. /看门狗时钟中断周期T=WTCNT*t_watchdog=4S rWTDAT=20000; /WTDAT看门狗数据寄存器,看门狗定时器重载的计数值 rWTCNT=20000; /WTCNT看门狗计数寄存器,看门狗定时器当前计数值 /看门狗时钟中断周期T=WTCNT*t_watchdog=4Swatchdog.c实现看门狗功能,防止程序跑飞:html view plaincopyprint?1. /* 2. /看门狗定时器函数 3. void watchdog_timer(void) 4. 5. /清WatchDog中断寄存器 6. rSRCPND |=BIT_WDT_AC97; 7. rINTPND |=BIT_WDT_AC97; 8. rSUBSRCPND |= BIT_SUB_WDT; 9.10. /建立WatchDog中断 11. pISR_WDT_AC97=(unsigned)Watchdog_ISR; 12.13.14. rWTCON=(1008)|(33); /预分频值=100;时钟除数因子=128 ; 15. /PCLK=67.5MHz,不允许中断 16. /每个定时器时钟周期t_watchdog=1/PCLK/(预分频值+1)/时钟除数因子 17. / =1/67.5*1000000/(100+1)/128=0.0002 18. / 19.20. /看门狗喂狗 21. rWTDAT=20000; /WTDAT看门狗数据寄存器,看门狗定时器重载的计数值 22. rWTCNT=20000; /WTCNT看门狗计数寄存器,看门狗定时器当前计数值 23. /看门狗时钟中断周期T=WTCNT*t_watchdog=4S 24. rWTCON &= (3); /不允许复位 25.26. rWTCON |= (15)|(12); /允许看门狗定时器和允许中断产生 27.28. /开中断 29. rINTMSK &= (BIT_WDT_AC97); 30. rINTSUBMSK &= (BIT_SUB_WDT); 31. while(count11); 32. 33. /* 34. /WatchDog中断 35. void _irq Watchdog_ISR(void) 36. 37.38. if(rSUBSRCPND & BIT_SUB_WDT) 39. /清除中断 40. rSUBSRCPND |=(BIT_SUB_WDT); /清除一级源中断指示寄存器相应位 41. rSRCPND |= BIT_WDT_AC97; 42. rINTPND |= BIT_WDT_AC97; /清除源中断指示寄存器相应位 43. count+; /复位次数自加 44.45. if(count11) ; /判断复位次数 46. else 47. 48. /屏蔽看门狗中断 49. rINTSUBMSK |= (BIT_SUB_WDT); /屏蔽看门狗相应中断位 50. rINTMSK |= (BIT_WDT_AC97); 51. 52. 53.54. if(rSUBSRCPND & BIT_SUB_AC97) 55. 56. rSUBSRCPND |=BIT_SUB_AC97; 57. rSRCPND |= BIT_WDT_AC97; 58. rINTPND |= BIT_WDT_AC97; /清除源中断指示寄存器相应位 59. 60. 61. /* 62. /*需要复位时选用 63. void watchdog_reset(void) /看门狗复位函数 64. 65.66. /预分频值=100;时钟除数因子=128 ;PCLK=67.5MHz 67. /每个定时器时钟周期t_watchdog=1/PCLK/(预分频值+1)/时钟除数因子 68. / =1/67.5*1000000/(100+1)/128=0.0002 69. /不允许中断 70. rWTCON=(1008)|(33); 71.72. /看门狗时钟周期T=WTCNT*t_watchdog=4S 73. /看门狗喂狗 74. rWTDAT=20000; 75. rWTCNT=20000; 76.77. rWTCON &= (31);/禁止看门狗中断 78.79. rWTCON|=(15)|(10);/允许看门狗定时,允许复位 80. while(1); 81. 82. */ /*/看门狗定时器函数void watchdog_timer(void) /清WatchDog中断寄存器 rSRCPND |=BIT_WDT_AC97; rINTPND |=BIT_WDT_AC97; rSUBSRCPND |= BIT_SUB_WDT; /建立WatchDog中断 pISR_WDT_AC97=(unsigned)Watchdog_ISR; rWTCON=(1008)|(33); /预分频值=100;时钟除数因子=128 ; /PCLK=67.5MHz,不允许中断 /每个定时器时钟周期t_watchdog=1/PCLK/(预分频值+1)/时钟除数因子 / =1/67.5*1000000/(100+1)/128=0.0002 / /看门狗喂狗 rWTDAT=20000; /WTDAT看门狗数据寄存器,看门狗定时器重载的计数值 rWTCNT=20000; /WTCNT看门狗计数寄存器,看门狗定时器当前计数值 /看门狗时钟中断周期T=WTCNT*t_watchdog=4S rWTCON &= (3); /不允许复位 rWTCON |= (15)|(12); /允许看门狗定时器和允许中断产生 /开中断 rINTMSK &= (BIT_WDT_AC97); rINTSUBMSK &= (BIT_SUB_WDT); while(count11); /*/WatchDog中断void _irq Watchdog_ISR(void) if(rSUBSRCPND & BIT_SUB_WDT) /清除中断 rSUBSRCPND |=(BIT_SUB_WDT); /清除一级源中断指示寄存器相应位 rSRCPND |= BIT_WDT_AC97; rINTPND |= BIT_WDT_AC97; /清除源中断指示寄存器相应位 count+; /复位次数自加 if(count11) ; /判断复位次数 else /屏蔽看门狗中断 rINTSUBMSK |= (BIT_SUB_WDT); /屏蔽看门狗相应中断位 rINTMSK |= (BIT_WDT_AC97); if(rSUBSRCPND & BIT_SUB_AC97) rSUBSRCPND |=BIT_SUB_AC97; rSRCPND |= BIT_WDT_AC97; rINTPND |= BIT_WDT_AC97; /清除源中断指示寄存器相应位 /*/*需要复位时选用void watchdog_reset(void) /看门狗复位函数 /预分频值=100;时钟除数因子=128 ;PCLK=67.5MHz /每个定时器时钟周期t_watchdog=1/PCLK/(预分频值+1)/时钟除数因子 / =1/67.5*1000000/(100+1)/128=0.0002 /不允许中断 rWTCON=(1008)|(33); /看门狗时钟周期T=WTCNT*t_watchdog=4S /看门狗喂狗 rWTDAT=20000; rWTCNT=20000; rWTCON &= (31);/禁止看门狗中断 rWTCON|=(15)|(10);/允许看门狗定时,允许复位 while(1);*/测试用主函数:html view plaincopyprint?1. void xmain(vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025初三升高一数学暑假衔接讲义25讲含答案(必修一内容)4.1 指数函数
- 阿司匹林肠溶片崩解时限检查授课侯秋苑药物分析80课件
- 考研复习-风景园林基础考研试题【a卷】附答案详解
- 风景园林基础考研资料试题及参考答案详解【轻巧夺冠】
- 《风景园林招投标与概预算》试题A附参考答案详解(达标题)
- 2025-2026年高校教师资格证之《高等教育法规》通关题库含答案详解(夺分金卷)
- 2023国家能源投资集团有限责任公司第一批社会招聘笔试备考题库含答案详解(培优b卷)
- 2025年黑龙江省五常市辅警招聘考试试题题库含答案详解(基础题)
- 短视频黄金三秒开头:抓住观众注意力的秘密武器
- 2025年中国国际体育用品博览会
- 初中语文:非连续性文本阅读练习(含答案)
- 中国历史地理智慧树知到期末考试答案章节答案2024年北京大学
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
- 基于微信小程序的连连看小游戏的设计与实现
- 国际汽车贸易检验、检疫、索赔、仲裁与不可抗力
- 发改委招标代理服务收费管理暂行办法
- (完整版)详细化学物质及其CAS注册号清单
- 名著导读《简爱》ppt课件(58页)
- 人教部编版初中英语中考100个长难句实例分析
- 碳纤维粘贴加固施工方案汇总
- 《铁路货车运用维修规程》2018年10月
评论
0/150
提交评论