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

📄 main.c

📁 easyarm 的主要程序
💻 C
字号:
/****************************************Copyright (c)***************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:         Li Baihua
** Modified date:       2008-04-03
** Version:             1.1
** Descriptions:        演示看门狗溢出复位,按键KEY1被按下后使得看门狗溢出复位,LED闪烁一次
**
*********************************************************************************************************/
#include   "config.h"

#define 	LED1 	1 << 17							                    /* P0.17控制LED1				*/
#define 	KEY1 	1 << 16							                    /* P0.16产生看门狗溢出按键		*/

/*********************************************************************************************************
** Function name:		DelayNS
** Descriptions:		延时函数
** input parameters:    uiDly   延时值
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void DelayNS(uint32 uiDly)
{
    uint32 i;
    for(; uiDly > 0; uiDly--)
    {
        for(i=0; i<50000; i++);
    }
}

/*********************************************************************************************************
** Function name:		WDTInit
** Descriptions:		看门狗初始化
** input parameters:    uiTime   设置看门狗定时器参数
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void WDTInit(uint32 uiTime)
{
	WDTC   = uiTime;							                        /* 设置看门狗定时器参数			*/
	WDMOD  = 0x03;								                        /* 设置看门狗模式:溢出后复位	*/
    								
    WDFEED = 0xAA;							                            /* 第一次喂狗启动WDT			*/
    WDFEED = 0x55;                                                      /* 喂狗序列	                    */
}

/*********************************************************************************************************
** Function name:		FeedDog
** Descriptions:		喂狗函数
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void FeedDog(void)
{
    IRQDisable ();                                                      /* 禁止中断	                    */
    WDFEED = 0xAA;							                            /* 喂狗序列	                    */
    WDFEED = 0x55;
    IRQEnable ();                                                       /* 喂狗序列	                    */
}

/*********************************************************************************************************
** Function name:		main
** Descriptions:		演示看门狗溢出复位,按键KEY1被按下后使得看门狗溢出复位,LED闪烁一次
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
int main (void)
{   
    uint32 i;

  	PINSEL0	=	0x00000000;						                        /*  管脚连接GPIO			    */
    IO0DIR	=	LED1;						                            /*  LED1控制口输出				*/
    
    IO0CLR	=	LED1;						                            /*  关闭蜂鸣器					*/
    DelayNS(100);
    IO0SET	=	LED1;						                            /*  关闭蜂鸣器					*/
    
	WDTInit(0x200000);                                                  /*  看门狗初始化				*/

    while(1){
    
        /* 
         * 用按键模拟导致无法周期性喂狗的意外情况 
         */
        while((IO0PIN & KEY1) == 0);						            /* 如果按键1按下,就停止喂狗	*/
        
        for(i = 0; i < 0xFF; i++);						                /* LED1闪烁周期		    		*/
        
        FeedDog();                                                      /* 喂狗		    		        */
    }
    return 0;
}

/*********************************************************************************************************
**                            End Of File
*********************************************************************************************************/

⌨️ 快捷键说明

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