您的位置 首页 测评

关于AVR单片机的看门狗

看门狗这个东西以前没接触过……理解它费了一点周折。使用它的复位MCU的功能实现LED的闪烁。准备工作是设定WDT的超时时间(如1s)首先使能

看门狗这个东西曾经没触摸过……

了解它费了一点曲折。

运用它的复位MCU的功用完成LED的闪耀。

准备工作是设定WDT的超时时刻(如1s)

首要使能看门狗(wdt_enable),然后喂狗(wdt_reset),再延时灯的闪耀时刻(delay=0.5s),使灯亮(SET_LED);再用一个恰当的比较长的延时(delay>0.5s)饿死狗。之后MCU重启,如此往复。

(1)延时能够调用库函数,还能够运用定时器;

(2)SET_LED; while(1) wdt_reset(); 表明 不断喂狗,然后不让MCU重启,使灯一向亮着。程序中运用这些代码的用处待考证,能够给作者发email 嘿嘿~

(3)软件看门狗和硬件看门狗。软件看门狗能够用wdt_disable来禁掉。而硬件看门狗不能。AVR能够经过修正熔丝位来别离完成软硬看门狗。

(4)wdt_enable(timeout)的参数timeout表明看门狗的超时时刻,即timeout时刻内不喂狗,狗就会叫,mcu就会复位。

=================================================================================================

#include
#include
#include

#define uchar unsigned char
#define uint unsigned int
#define SET_LED PORTA&=0XFE //PA0输出低电平,黄灯亮
#define CLR_LED PORTA|=0X01 //PA0输出高电平,黄灯灭

void DelayMs(uint ms)
{
uint i;
for(i=0;i
_delay_loop_2(2000); // 8MHz / 1000Hz=8000
//8000 / 4 = 2000
}

int main(void)
{
DDRA=_BV(PA0);
PORTA=_BV(PA0);

wdt_enable(WDTO_1S);//使能看门狗定时器,溢出时刻设置为1秒
wdt_reset(); //喂狗
DelayMs(500); //延时500毫秒
SET_LED;
DelayMs(5000); //延时5秒,等候看门狗定时器溢出

SET_LED;
while(1)
wdt_reset();
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/256654.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部