📄 wdtrun_test.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 + -