?? main.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-20
** Version:
** Descriptions: 外部中斷喚醒掉電CPU,同時(shí)產(chǎn)生中斷。
**
********************************************************************************************************/
#include "config.h"
#define BEEP 1 << 7 // P0.7控制BEEP
/*
*********************************************************************************************************
** 函數(shù)名稱 :IRQ_Eint0()
** 函數(shù)功能 :外部中斷0 EINT0服務(wù)程序
** 入口參數(shù) :無。
** 出口參數(shù) :無。
*********************************************************************************************************
*/
void __irq IRQ_Eint0 (void)
{
/* 等待外部中斷信號恢復(fù)為高電平
若信號保持為低電平,中斷標(biāo)志會一直置位。*/
while ((EXTINT & 0x01) != 0)
{
EXTINT = 0x01; // 清除EINT0中斷標(biāo)志
}
VICVectAddr = 0; // 向量中斷結(jié)束
}
/*
*********************************************************************************************************
** 函數(shù)名稱 :main()
** 函數(shù)功能 :演示外部中斷喚醒掉電的CPU
** 入口參數(shù) :無。
** 出口參數(shù) :無。
*********************************************************************************************************
*/
int main (void)
{
PINSEL0 = 0x00000000; // 管腳連接GPIO
PINSEL1 = 0x00000001; // P0.16連接EINT0
IO0DIR = BEEP; // 設(shè)置BEEP控制口為輸出,其余輸入
IRQEnable(); // 使能IRQ中斷
/* 外部中斷0初始化 */
VICIntSelect = 0x00000000; // 設(shè)置所有中斷分配為IRQ中斷
VICVectCntl0 = 0x20 | 14; // 分配外部中斷0到向量中斷0
VICVectAddr0 = (uint32)IRQ_Eint0; // 設(shè)置中斷服務(wù)程序地址
VICIntEnable = 1 << 14; // 使能EINT0中斷
EXTWAKE = 0x01; // 外部中斷0喚醒芯片
EXTINT = 0x01; // 清除EINT0中斷標(biāo)志
IO0SET = BEEP;
while (1)
{
PCONP = 0x00; // 關(guān)閉定時(shí)器、RTC、UART等功能部件
PCON = 0x02; // 系統(tǒng)進(jìn)入掉電模式
/* 當(dāng)系統(tǒng)被喚醒后,取反BEEP控制 */
if ((IO0SET & BEEP) == 0) IO0SET = BEEP;
else IO0CLR = BEEP;
}
return (0);
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -