概述
看門狗定時(shí)器(WDT,Watch Dog Timer)是單片機(jī)的一個(gè)組成部分,它實(shí)際上是一個(gè)計(jì)數(shù)器,一般給看門狗一個(gè)數(shù)字,程序開(kāi)始運(yùn)行后看門狗開(kāi)始計(jì)數(shù)。如果程序運(yùn)行正常,過(guò)一段時(shí)間CPU應(yīng)發(fā)出指令讓看門狗置零,重新開(kāi)始計(jì)數(shù)。如果看門狗增加到設(shè)定值就認(rèn)為程序沒(méi)有正常工作,強(qiáng)制整個(gè)系統(tǒng)復(fù)位。
PMS171B配置之看門狗寄存器
在這里插入圖片描述
clkmd寄存器是時(shí)鐘模式寄存器,需要打開(kāi)看門狗時(shí)需要配置0-1位位11,gpcc配置如下所示,開(kāi)啟看門狗配置如下:
CLKMD.2 =1;
CLKMD.1 =1;
在這里插入圖片描述
開(kāi)啟看門狗之后需要復(fù)位,可以使用上圖所示wdreset進(jìn)行復(fù)位。
在這里插入圖片描述
在這里插入圖片描述
看門狗是一個(gè)計(jì)數(shù)器,其時(shí)鐘源來(lái)自內(nèi)部低頻振蕩器(ILRC),默認(rèn)是8k個(gè) ILRC 時(shí)鐘周期,故看門狗默認(rèn)復(fù)位時(shí)間為8k/50k=0.16s=160ms,由于看門狗技術(shù)周期會(huì)比預(yù)期要短,建議設(shè)置160ms/2=80ms就要喂狗。
視頻
配置管腳輸入
在這里插入圖片描述
若配置管腳進(jìn)行輸入設(shè)置,可以如下配置:
pa.5=0;
pac.5=0;/*輸入*/
paph.5=0;/*上拉*/
本章通過(guò)PA5按鍵進(jìn)行檔位切換輸出不同占空比的PWM,當(dāng)為0檔時(shí)關(guān)閉PWM,一檔時(shí)輸出30%,二檔時(shí)輸出50%,三檔時(shí)輸出70%,同時(shí)加入了按鍵防抖動(dòng),防止誤觸,建議PA5接個(gè)下拉電阻,防止抖動(dòng)。
在這里插入圖片描述
完整代碼
#include "extern.h"//是程序的頭文件。
BIT PWM : PA.3; //端口定義
BIT LED1 : PA.5;
/*********按鍵變量**********************/
BYTE PWM_i1 ;//PWM按鍵變量,檔位
BYTE PWM_i2 ;//PWM按鍵變量,是否松開(kāi)按鍵
BYTE PWM_i3 ;//PWM按鍵變量,防止抖動(dòng)
void FPPA0 (void)//相當(dāng)于程序的 main() 函數(shù)。
{
/*單片機(jī)內(nèi)部RC震動(dòng)時(shí)鐘為 IHRC默認(rèn)為16M,因此,IHRC/4=4M,系統(tǒng)時(shí)鐘為4M*/
.ADJUST_IC SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
/********看門狗***************/
CLKMD.2 =1;
CLKMD.1 =1;
/*端口設(shè)置為輸入 低,PA5默認(rèn)輸入,可以不配置*/
pa.5=0;
pac.5=0;/*輸入*/
paph.5=0;/*上拉*/
/*********PWM*********************/
tm2ct = 0x0;
//tm2b = 0x4d;//占空比 30%4d 50%7f 70%b4
//S1= tm2s[6:5] : 預(yù)分頻器設(shè)定值(1, 4, 16, 64)
//S2 = tm2s[4:0] : 分頻器值(十進(jìn)制,0 ~ 31)
//輸出頻率 =4MHz÷ ( 256 * S1 (16) * (S2+1)1) = 976Hz
tm2s = 0b0_10_00000; // 8-bit PWM ,預(yù)分頻 = 16 ,分頻 = 0
//tm2c = 0b0001_10_1_0; // 系統(tǒng)時(shí)鐘,輸出 =PA3 , PWM 模式
PWM_i2 =0;
PWM_i1 =0;
while (1)
{
wdreset;//喂狗
if(PWM_i1==0)
tm2c = 0b0001_00_1_0; // 停用PWM
else if(PWM_i1==1)
{
tm2c = 0b0001_10_1_0; //啟動(dòng)PWM
tm2b = 0x4d;//占空比 30%4d 50%7f 70%b4
}
else if(PWM_i1==2)
{
tm2b = 0x7f;//占空比 30%4d 50%7f 70%b4
}
else if(PWM_i1==3)
{
tm2b = 0xb4;//占空比 30%4d 50%7f 70%b4
}
else//重置
{
PWM_i1 = 0;
tm2c = 0b0001_00_1_0; // 停用PWM
}
if(LED1 && PWM_i2==0)//按鍵按下,第一次
{
PWM_i2=1;
}
if(LED1 && PWM_i2&&PWM_i3<10)//按鍵按下,第二次以后,防止抖動(dòng)
{
PWM_i3++;
}
if(PWM_i3==10&&LED1==0)
PWM_i1++;//檔位
if(LED1==0 && PWM_i2==1)//松開(kāi)按鍵
{
PWM_i3=0;
PWM_i2=0;
}
.delay 4000*5;
}
}
演示效果
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6058文章
44822瀏覽量
644722 -
看門狗
+關(guān)注
關(guān)注
10文章
576瀏覽量
71460 -
PMS171B
+關(guān)注
關(guān)注
1文章
7瀏覽量
2487
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
PMS171B的相關(guān)資料分享
PMS171B的相關(guān)資料分享
應(yīng)廣PMS171B(1)--概述&&配置端口輸出高低電平
應(yīng)廣PMS171B(2)--PWM輸出
應(yīng)廣PMS171B(3)--比較器測(cè)供電電源VDD電壓
stm32看門狗時(shí)間計(jì)算 獨(dú)立看門狗和窗口看門狗的特性是什么
什么是stm32看門狗?獨(dú)立看門狗和窗口看門狗工作原理解析

STM32看門狗配置(獨(dú)立看門狗IWDG和窗口看門狗WWDG)

應(yīng)廣單片機(jī)

應(yīng)廣PMS171B(4)--ADC

應(yīng)廣PMS171B(1)--概述與配置端口輸出高低電平

應(yīng)廣PMS171B(3)--比較器測(cè)供電電源VDD電壓

應(yīng)廣PMS171B(4)--ADC

STM32中的獨(dú)立看門狗和窗口看門狗
什么是看門狗,工業(yè)路由器看門狗技術(shù)的功能優(yōu)勢(shì)

評(píng)論