⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdtrun_test.c

📁 Altera公司的NIOS2SOPC平台上的看门狗试验程序。 Quartus2软件版本5.0 NIOS2IDE软件版本5.0 硬件平台根据软件需求在Quartus2软件中构建
💻 C
字号:
/********************************************************************
* 文 件 名:WDTRun_test.c
* 功    能:运行WDT,并控制LED1--LED8显示输出。程序开始先对LED1--LED8进行闪烁控制
*           和喂狗处理;然后只点亮LED1,并进入死循环,等待WDT复位。
* 说    明:需要将程序烧写到FLASH运行
********************************************************************/
#include <stdio.h>
#include "system.h"
#include "altera_avalon_timer_regs.h"
#include "altera_avalon_pio_regs.h"  //包含基本的IO寄存器信息
#include "alt_types.h"                 //Altera定义的数据类型

/******************************************************************
*      与硬件相关的宏定义,用户根据实际情况修改
******************************************************************/
// 用户添加并命名的外设基地址,在SYSTEM中定义,用户需要根据不同的命名来修改此处
#ifndef LED_PIO_BASE             //这是LED_PIO核的基地址
#define LED_PIO_BASE  0xffffffff //user's definition here
#endif

#if LED_PIO_BASE == 0xffffffff
#error "No definition of LED_PIO_BASE.\n"
#endif

#ifndef WATCHDOG_BASE             //这是WATCHDOG核的基地址
#define WATCHDOG_BASE  0xffffffff //user's definition here
#endif

#if WATCHDOG_BASE == 0xffffffff
#error "No definition of WATCHDOG_BASE.\n"
#endif

#define   LEDCON    0xff

/********************************************************************
* 名    称:WdtFeed()
* 功    能:看门狗喂狗操作,向看门狗寄存器写入任意值即可完成看门狗复位
* 入口参数:无
* 出口参数:无
********************************************************************/
void  WdtFeed(void)
{  
    IOWR_ALTERA_AVALON_TIMER_PERIODL(WATCHDOG_BASE, 0x1234); 
}

/********************************************************************
* 名    称:DelayNS()
* 功    能:长软件延时,具有喂狗功能。
* 入口参数:dly    延时参数,值越大,延时越久
* 出口参数:无
********************************************************************/
void  DelayNS(alt_u32  dly)
{ 
    alt_u32  i;
    for(; dly>0; dly--) 
    {
        for(i=0; i<1000; i++)
            WdtFeed();
    }

}

/********************************************************************
* 名    称:InitWDT()
* 功    能:初始化WDT,即开启看门狗定时器;
*         需要注意的是,看门狗定时器一旦开启,无法关闭。
* 入口参数:无
* 出口参数:无
********************************************************************/
void  InitWDT(void)
{ 
   /* 该宏开启 WATCHDOG */
   IOWR_ALTERA_AVALON_TIMER_CONTROL(WATCHDOG_BASE, 
                             ALTERA_AVALON_TIMER_CONTROL_START_MSK);
}
/********************************************************************
* 名    称:main()
* 功    能:初始I/O口及WDT,然后开始先对LED1--LED8闪烁控制,并进行喂狗处理;
*           然后只点亮LED1,并进入死循环,等待WDT复位。
* 说    明:如果将程序烧写到FLASH运行,WDT复位后程序会重新开始;
********************************************************************/
int  main(void)
{  
    alt_u8  i;

    InitWDT();              // 初始化看门狗
    WdtFeed();              // 进行喂狗操作 
          
    for(i=0; i<8; i++) 
    {  
        IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,0xff);
        DelayNS(100);
        IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,0x00);
        DelayNS(100);
    }
    IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,0xfe);
   
    while(1);   
    return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -