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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

Cortex-M0 看門狗程序詳解

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年08月17日   【字體:

  M0的看門狗和普通51單片機(jī)的看門狗類似。比較簡(jiǎn)單。在配置完看門狗寄存器后看門狗模塊就會(huì)隨程序一直執(zhí)行不能關(guān)閉。唯一關(guān)閉的方法就是系統(tǒng)發(fā)生復(fù)位。狗狗工作標(biāo)記位就會(huì)由硬件自動(dòng)清零而不工作了。在對(duì)看門狗寄存器寫數(shù)據(jù)前需要先使能看門狗模塊 :SYSAHBCLKCTRL|=1<<15;//使能看門狗模塊。這一點(diǎn)非常重要否則造成狗不工作

 
來(lái)認(rèn)識(shí)一下狗狗的寄存器,WDTCLKUEN-看門狗時(shí)鐘源使能寄存器。因?yàn)楣饭返臅r(shí)鐘是可選的。在對(duì)狗進(jìn)行時(shí)鐘源選擇前是要關(guān)閉狗狗的時(shí)鐘連接!該寄存器的有效位只有一位。WDTCLKUEN=0X01;//第0位為1連接看門狗時(shí)鐘源
 
WDTCLKSEL-看門狗時(shí)鐘源選擇寄存器。用于選擇看門狗的時(shí)鐘源。狗的時(shí)鐘源可以由LPC1114內(nèi)部時(shí)鐘源IRC提供,還可以由系統(tǒng)主時(shí)鐘和內(nèi)部看門狗時(shí)鐘提供。默認(rèn)是選擇IRC。這里我們選擇系統(tǒng)主時(shí)鐘。WDTCLKSEL=0X01;//選擇系統(tǒng)主時(shí)鐘
 
WDTCLKDIV-看門狗時(shí)鐘分頻寄存器。看門狗的時(shí)鐘源設(shè)置好了以后就可以對(duì)狗進(jìn)行分頻設(shè)置了。一般選擇1分頻。WDTCLKDIV=0X01;//選擇1分頻
 
設(shè)置完看門狗的時(shí)鐘后,就可以對(duì)狗狗的計(jì)數(shù)時(shí)間進(jìn)行設(shè)置了。LPC1114的看門狗計(jì)數(shù)器采用的減法計(jì)數(shù)。不像一般的計(jì)數(shù)器是往上下而是往下減。減到0還沒(méi)喂狗。系統(tǒng)就復(fù)位了。
 
WDTTC-看門狗計(jì)數(shù)寄存器。設(shè)置的是看門狗的計(jì)數(shù)時(shí)間。這個(gè)是一個(gè)32位的寄存器。有點(diǎn)特殊。最小值要求為0XFF,給它賦小于0XFF的值時(shí)系統(tǒng)自動(dòng)會(huì)為其設(shè)置成0XFF。WDTTC=0XFFFF;//設(shè)置看門狗的計(jì)數(shù)時(shí)間(既溢出時(shí)間)
 
WDTMOD-看門狗模式寄存器。設(shè)置完這些看門狗并不會(huì)工作。因?yàn)檫沒(méi)有對(duì)看門狗模塊設(shè)置成使能。需要啟動(dòng)看門狗模塊.該寄存器第0位是看門狗的使能位。要設(shè)置其為1.第2位是看門狗復(fù)位使能。M0的看門狗在未正常的喂狗的情況下是可以執(zhí)行2個(gè)步驟的。一個(gè)是產(chǎn)生系統(tǒng)復(fù)位,一個(gè)是產(chǎn)生中斷。這里我們選擇產(chǎn)生復(fù)位。WDTMOD=0X03;//設(shè)置開(kāi)啟看門狗使能和狗溢出后系統(tǒng)復(fù)位。完成上面的設(shè)置現(xiàn)在看門狗還是沒(méi)有啟動(dòng)的。那是因?yàn)樵趩?dòng)前必須要先喂一次狗(哈哈。。類似于先吃了才能工作)。
 
WDTFEED-看門狗饋送序列寄存器。該寄存器用來(lái)為喂狗。要分2次寫入0XAA,0X55。寫的時(shí)候要注意!兩次寫入要接連著完成。如果只寫了一句會(huì)引起系統(tǒng)復(fù)位。所以說(shuō)喂狗時(shí)最好先關(guān)掉中斷以免引起系統(tǒng)不正常復(fù)位!
 
WDTFEED=0XAA;WDTFEED=0X55;//以上完成后看門狗就徹徹底底的開(kāi)始工作了
 
以下是程序源代碼及工程文件(基于TKStduio環(huán)境)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;//關(guān)閉看門狗的時(shí)鐘源
 WDTCLKSEL=0X01;//選擇主時(shí)鐘作為看門狗的時(shí)鐘
 WDTCLKUEN=0X01;//開(kāi)啟看門狗的時(shí)鐘源,現(xiàn)在看門狗還不是工作的。需要喂一次狗
 WDTCLKDIV=0X01;//進(jìn)行1分頻
 SYSAHBCLKCTRL|=1<<15;//使能看門狗模塊。這一點(diǎn)非常重要否則造成狗不工作
 WDTTC=time;//設(shè)置看門狗的計(jì)數(shù)時(shí)間
 WDTMOD=0X03;//設(shè)置看門狗使能
 WDTFEED=0XAA;//啟動(dòng)看門狗喂狗序列。如果在看門狗正常工作后喂狗序列不完整會(huì)造成看門狗復(fù)位
 WDTFEED=0X55;//完成看門狗喂狗操作
}
 
void WDT_FEED(void)
{
 zyIrqDisable();//喂狗的時(shí)候停止中斷
 WDTFEED=0XAA;
 WDTFEED=0X55;//完成喂狗
 zyIrqEnable();//開(kāi)啟系統(tǒng)的中斷
}
 
int main (void)
{
  
 
   targetInit();                                                       
   pinInit();                                                          
   myDelay(1000);
   SYSAHBCLKCTRL |= (1ul << 6);                                          
 GPIO0DIR=0X02;//設(shè)置P0.02為IO輸出
   WDT_Init(0xffff);
 GPIO0DATA=0XFD;//led持續(xù)閃爍表明系統(tǒng)在不停的復(fù)位
 myDelay(1000);//加延時(shí)使LED閃爍跟明顯
   while (1) 
   {  
     myDelay(1000);//不喂狗LED會(huì)閃爍
  
   }
}
 
關(guān)閉窗口
主站蜘蛛池模板: 91久久久久国产一区二区 | 一区二区免费看 | 免费的黄色小视频 | 成人国产一区 | 黄色大片免费观看 | 欧美专区第一页 | 国模一区二区三区 | 午夜免费av| 91视频日本| 肉丝美脚视频一区二区 | www.中文字幕 | 成人免费黄色大片 | 亚洲激情网站 | 一级毛片在线 | 国产三级一区 | 国产精品成人一区二区网站软件 | 欧美一级黄色大片 | 欧美视频久久 | 日韩精品免费视频 | 99色综合 | 日批视频网站 | 最新中文字幕在线观看 | 五月天一区二区三区 | 中文字幕在线观看日韩 | 国产午夜精品久久久 | 久久国产99 | 亚洲无人区一线二线三线 | 国语对白做受69 | 日韩av不卡在线 | 亚洲精品18在线观看 | 激情丁香婷婷 | 一级做a视频| 亚洲国产欧美日韩 | 一区二区在线视频 | 欧美日韩第一页 | 欧美成人一级片 | 一级黄色录像片 | 亚洲视频在线看 | 成人午夜又粗又硬又大 | 99久久精品国产一区二区三区 | 亚洲精品www久久久久久广东 |