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

📄 main.c

📁 完整的周立功公司的LPC213X开发板的光盘内容
💻 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:			Chenxibing
** Modified date:		2005-01-19
** Version:
** Descriptions:		看门狗溢出复位演示实验,在Flash中进行。
**
********************************************************************************************************/
#include "config.h"

#define 	LED1 	1 << 18		// P0.18控制LED1
#define 	KEY1 	1 << 16		// P0.16
#define 	KEY2 	1 << 17		// P0.17
#define 	BEEP 	1 << 7		// P0.7控制蜂鸣器


/*
********************************************************************************************************
** 函数名称: main
** 功能描述: 打开看门狗,KEY1停止喂狗,KEY2清除看门狗溢出标志
*******************************************************************************************************
*/
int main(void)
{
    uint32 i,j;

    IO0DIR = BEEP;					// 蜂鸣器控制口输出
    IO1DIR = LED1;					// LED1控制口输出
    IO0SET = BEEP;					// 关闭蜂鸣器
	
	/* 如果曾经发生过看门狗复位,则等待清除看门狗超时标志,在未清除之前蜂鸣器一直鸣叫 */
    while(( WDMOD & 0x04 ) == 0x04)             // 判断看门狗超时标志
    { 
      	/* 看门狗超时标志未清除 */ 
        for(j = 0; j < 0xFFFFF; j++);			// 蜂鸣器鸣叫周期             
        if((IO0SET & BEEP) == 0)
    	{
    		IO0SET = BEEP;						// 关闭蜂鸣器
     		if((IO0PIN & KEY2) == 0)			// 等待按键KEY2
     			WDMOD = 0x00;					// 如果KEY2按下,则软件清零看门狗超时标志位
     	}
   		else    IO0CLR = BEEP;					// 蜂鸣器鸣叫   	
    }
    
    /* 如果没有发生看门狗复位或者看门狗超时标志已经清除,则初始化看门狗 */    
	WDTC  = 0xff000;		        			// 设置看门狗定时器参数
	WDMOD = 0x03;                   			// 设置看门狗模式:中断且复位
    WDFEED = 0xAA;								// 第一次喂狗启动WDT
	WDFEED = 0x55;
	
    /* 正常情况下,闪烁LED1 */
    while(1)
    {	/* 用按键模拟导致无法周期性喂狗的意外情况 */
        while((IO0PIN & KEY1) == 0);            // 如果按键1按下,就停止喂狗
        
        for(j = 0; j < 0xFF; j++)				// LED1闪烁周期
        {
            for(i = 0; i < 0x0FFF; i++); 		// 喂狗周期       
            WDFEED = 0xAA;						// 喂狗时序
			WDFEED = 0x55;
        }
        /* 闪烁LED1 */
        if((IO1SET & LED1) == 0)  IO1SET = LED1;
        else	IO1CLR = LED1;
    }
    
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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