久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

Cortex-M0 看門狗程序詳解

作者:佚名   來源:本站原創   點擊數:  更新時間:2014年08月17日   【字體:

  M0的看門狗和普通51單片機的看門狗類似。比較簡單。在配置完看門狗寄存器后看門狗模塊就會隨程序一直執行不能關閉。唯一關閉的方法就是系統發生復位。狗狗工作標記位就會由硬件自動清零而不工作了。在對看門狗寄存器寫數據前需要先使能看門狗模塊 :SYSAHBCLKCTRL|=1<<15;//使能看門狗模塊。這一點非常重要否則造成狗不工作

 
來認識一下狗狗的寄存器,WDTCLKUEN-看門狗時鐘源使能寄存器。因為狗狗的時鐘是可選的。在對狗進行時鐘源選擇前是要關閉狗狗的時鐘連接!該寄存器的有效位只有一位。WDTCLKUEN=0X01;//第0位為1連接看門狗時鐘源
 
WDTCLKSEL-看門狗時鐘源選擇寄存器。用于選擇看門狗的時鐘源。狗的時鐘源可以由LPC1114內部時鐘源IRC提供,還可以由系統主時鐘和內部看門狗時鐘提供。默認是選擇IRC。這里我們選擇系統主時鐘。WDTCLKSEL=0X01;//選擇系統主時鐘
 
WDTCLKDIV-看門狗時鐘分頻寄存器。看門狗的時鐘源設置好了以后就可以對狗進行分頻設置了。一般選擇1分頻。WDTCLKDIV=0X01;//選擇1分頻
 
設置完看門狗的時鐘后,就可以對狗狗的計數時間進行設置了。LPC1114的看門狗計數器采用的減法計數。不像一般的計數器是往上下而是往下減。減到0還沒喂狗。系統就復位了。
 
WDTTC-看門狗計數寄存器。設置的是看門狗的計數時間。這個是一個32位的寄存器。有點特殊。最小值要求為0XFF,給它賦小于0XFF的值時系統自動會為其設置成0XFF。WDTTC=0XFFFF;//設置看門狗的計數時間(既溢出時間)
 
WDTMOD-看門狗模式寄存器。設置完這些看門狗并不會工作。因為還沒有對看門狗模塊設置成使能。需要啟動看門狗模塊.該寄存器第0位是看門狗的使能位。要設置其為1.第2位是看門狗復位使能。M0的看門狗在未正常的喂狗的情況下是可以執行2個步驟的。一個是產生系統復位,一個是產生中斷。這里我們選擇產生復位。WDTMOD=0X03;//設置開啟看門狗使能和狗溢出后系統復位。完成上面的設置現在看門狗還是沒有啟動的。那是因為在啟動前必須要先喂一次狗(哈哈。。類似于先吃了才能工作)。
 
WDTFEED-看門狗饋送序列寄存器。該寄存器用來為喂狗。要分2次寫入0XAA,0X55。寫的時候要注意!兩次寫入要接連著完成。如果只寫了一句會引起系統復位。所以說喂狗時最好先關掉中斷以免引起系統不正常復位!
 
WDTFEED=0XAA;WDTFEED=0X55;//以上完成后看門狗就徹徹底底的開始工作了
 
以下是程序源代碼及工程文件(基于TKStduio環境)attachment download
 
#include "..\config.h"
 
 
 
void myDelay (INT32U ulTime)
{
    INT32U i;
    
    i = 0;
    while (ulTime--) {
      for (i = 0; i < 5000; i++);
    }
}
 
void WDT_Init(INT32U time)
{
 if(time<0xff)
  time=0xff;
 WDTCLKUEN=0X00;//關閉看門狗的時鐘源
 WDTCLKSEL=0X01;//選擇主時鐘作為看門狗的時鐘
 WDTCLKUEN=0X01;//開啟看門狗的時鐘源,現在看門狗還不是工作的。需要喂一次狗
 WDTCLKDIV=0X01;//進行1分頻
 SYSAHBCLKCTRL|=1<<15;//使能看門狗模塊。這一點非常重要否則造成狗不工作
 WDTTC=time;//設置看門狗的計數時間
 WDTMOD=0X03;//設置看門狗使能
 WDTFEED=0XAA;//啟動看門狗喂狗序列。如果在看門狗正常工作后喂狗序列不完整會造成看門狗復位
 WDTFEED=0X55;//完成看門狗喂狗操作
}
 
void WDT_FEED(void)
{
 zyIrqDisable();//喂狗的時候停止中斷
 WDTFEED=0XAA;
 WDTFEED=0X55;//完成喂狗
 zyIrqEnable();//開啟系統的中斷
}
 
int main (void)
{
  
 
   targetInit();                                                       
   pinInit();                                                          
   myDelay(1000);
   SYSAHBCLKCTRL |= (1ul << 6);                                          
 GPIO0DIR=0X02;//設置P0.02為IO輸出
   WDT_Init(0xffff);
 GPIO0DATA=0XFD;//led持續閃爍表明系統在不停的復位
 myDelay(1000);//加延時使LED閃爍跟明顯
   while (1) 
   {  
     myDelay(1000);//不喂狗LED會閃爍
  
   }
}
 
關閉窗口
主站蜘蛛池模板: 久久精品综合网 | 欧美成人精品在线观看 | aaa大片免费观看 | 日韩一区二区不卡 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 真人女人一级毛片免费播放 | 成人一区二区在线 | 一区二区三区高清 | 亚洲在线免费观看 | 九九热精品免费 | 欧美中文字幕一区二区三区亚洲 | 欧美精品久久久 | 2022国产精品 | 日韩精品一区二区三区中文在线 | 国产一区二区三区精品久久久 | 亚洲精品日日夜夜 | 国产精品呻吟久久av凹凸 | 亚洲精品免费在线 | 天堂久久一区 | 成人免费小视频 | 日韩精品免费一区 | 一区二区在线不卡 | 亚州精品天堂中文字幕 | 久久精品视频一区二区 | 成人免费视频观看视频 | 亚洲精品久久久一区二区三区 | 99热成人在线| 蜜桃av鲁一鲁一鲁一鲁 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 国产免费一区二区 | 欧美黄色网络 | 久久国产精品免费 | 一区日韩| 日韩三级在线 | 精品日韩一区二区 | www.色.com| av一区二区三区四区 | 天天操一操 | 亚洲国产一区二区三区在线观看 | 国产激情偷乱视频一区二区三区 | 看片网站在线 |