📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
** http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2006-02-22
** Last Version: 1.0
** Descriptions: header file of the specific codes for LPC2200 target boards
** Every project should include a copy of this file, user may modify it as needed
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#define IN_MAIN
#include "config.h"
#include "Time.h"
#include "ISR.h"
#pragma import(__use_no_semihosting_swi) //don't delete this line
/*
Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
*/
#define Tn_n 0 // 定时器0,Tn_n=0
// 定时器1,Tn_n=1
// 定时器2,Tn_n=2
// 定时器3,Tn_n=3
#define BEEP (1 << 7) // P0.7引脚控制蜂鸣器,低电平蜂鸣器鸣叫
#define Tn_time 110592/2 // 定时0.5S
#define Tn_PR 99 // 预分频100
#define Tn_MODE 0 // 匹配时,定时器复位
#define Tn_EXT_MODE 0 // 匹配时,不执行任何动作
#define Tn_MAT 0 // 匹配通道0
#define Tn_INT_En 1 // 匹配时,产生中断
#define Tn_slot 0 // 定时器中断通道0
/*********************************************************************************************************
** 函数名称:Tn_Int()
** 函数功能:定时器中断服务程序。
********************************************************************************************************/
void Tn_Int(void)
{
#if(Tn_n == 0) //定时器0
T0IR = 0x01; // 清除中断标志
#endif
#if(Tn_n == 1) //定时器1
T1IR = 0x01; // 清除中断标志
#endif
#if(Tn_n == 2) //定时器2
T2IR = 0x01; // 清除中断标志
#endif
#if(Tn_n == 3) //定时器3
T3IR = 0x01; // 清除中断标志
#endif
if( (IO0SET & BEEP) == 0 ) IO0SET = BEEP; // 控制蜂鸣器鸣叫
else IO0CLR = BEEP; // 控制蜂鸣器停止鸣叫
VICVectAddr = 0x00;
}
/*********************************************************************************************************
** Function name: IRQ_Exception
** Descriptions: interrupt exceptional handler , change it as needed
** don't delete this function
********************************************************************************************************/
void IRQ_Exception(void)
{
}
/*********************************************************************************************************
** 函数名称:Main()
** 函数功能:控制蜂鸣器鸣叫,中断方式。
** 说明:JP9短接,JP4断开。
********************************************************************************************************/
void Main(void)
{
TargetInit(VPBDIV_DATA, PLLCFG_DATA, MAMTIM_DATA); // don't delete
while((PLLSTAT & (1 << 10)) == 0); // can delete
PINSEL0 = 0x00000000; // 设置所有管脚连接GPIO
PINSEL1 = 0x00000000;
IO0DIR = BEEP; // 设置蜂鸣器控制口为GPIO输出模式
// 定时器0初始化
#if(Tn_n == 0)
T0MAT_Init(Tn_time,Tn_PR,Tn_MODE,Tn_EXT_MODE,Tn_MAT,Tn_INT_En);
SetISR(TIMER0_INT,Tn_slot,(uint32)Tn_Int);
#endif
#if(Tn_n == 1)
// 定时器1初始化
T1MAT_Init(Tn_time,Tn_PR,Tn_MODE,Tn_EXT_MODE,Tn_MAT,Tn_INT_En);
SetISR(TIMER1_INT,Tn_slot,(uint32)Tn_Int);
#endif
#if(Tn_n == 2)
// 定时器2初始化
T2MAT_Init(Tn_time,Tn_PR,Tn_MODE,Tn_EXT_MODE,Tn_MAT,Tn_INT_En);
SetISR(TIMER2_INT,Tn_slot,(uint32)Tn_Int);
#endif
#if(Tn_n == 3)
// 定时器3初始化
T3MAT_Init(Tn_time,Tn_PR,Tn_MODE,Tn_EXT_MODE,Tn_MAT,Tn_INT_En);
SetISR(TIMER3_INT,Tn_slot,(uint32)Tn_Int);
#endif
IRQEnable();
VICVectAddr = 0x00;
while(1); //等待中断
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -