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

📄 main.c

📁 基于ARM9 S3C2410 定时器的实验程序原代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: main.c
** Last modified Date: 2006-01-10
** Last Version: v1.0
** Description: MagicARM2410实验箱的基础实验---定时器实验。
**              使用S3C2410A的定时器0实现0.5秒的定时并产生中断,每产生一次中断即控
**   制蜂鸣器的控制I/O口状态取反。
**------------------------------------------------------------------------------------------------------
** Created By: 黄绍斌
** Created date: 2006-01-10 
** Version: v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#include  "config.h"


// 定义蜂鸣器控制口
#define   	BEEP		   	(1<<10)     	/* GPH10口 */	
#define   	BEEP_MASK	  	(~BEEP)


/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 长软件延时。
**              延时时间与系统时钟有关。
** Input: dly	延时参数,值越大,延时越久
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  DelayNS(uint32  dly)
{  
	uint32  i;

   	for(; dly>0; dly--) 
       for(i=0; i<50000; i++);
}




/*********************************************************************************************************
** Function name: IRQ_Time0
** Descriptions: 定时器0中断服务程序。            
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-01-10 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  IRQ_Time0(void)
{	
    // 取反蜂鸣器控制I/O口的状态
	if(rGPHDAT & BEEP)
	{	
	    rGPHDAT= rGPHDAT & BEEP_MASK;
	}
	else
	{	
	    rGPHDAT = rGPHDAT | BEEP;
	}
	
    // 清除中断标志	
    rSRCPND = 1<<10;
    rINTPND = rINTPND;
}


/*********************************************************************************************************
** Function name: main
** Descriptions: 初始化定时器0,每0.5产生一次定时器中断。            
** Input: 无
** Output: 系统返回值0
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int  main(void)
{	
    // 初始化I/O  
    rGPHCON = (rGPHCON & (~(0x03<<20))) | (0x01<<20);   // rGPHCON[21:20] = 01b,设置GPH10为GPIO输出模式 	
	rGPHDAT = rGPHDAT | BEEP;   // 防止蜂鸣器响
	
	// 设置中断服务程序
	VICVectAddr[10] = (uint32) IRQ_Time0;

	// 设置中断控制器
	rPRIORITY = 0x00000000;		// 使用默认的固定的优先级
	rINTMOD = 0x00000000;		// 所有中断均为IRQ中断
	rINTMSK = ~(1<<10);			// 打开TIMER0中断允许
	
	// 定时器设置
	// Fclk=200MHz,时钟分频配置为1:2:4,即Pclk=50MHz。
	rTCFG0 = 250;				// 预分频器0设置为250,取得200KHz
	rTCFG1 = 1;					// TIMER0再取1/4分频,取得50KHz
	rTCMPB0 = 0x0000;			// 设置定时器为0
	rTCNTB0 = 25*1000;			// 定时0.5秒
	rTCON = (1<<1);				// 更新定时器数据		
	rTCON = (1<<0)|(1<<3);		// 启动定时器

	IRQEnable();				// 使能IRQ中断(CPSR)
		
	while(1);
		
   	return(0);
}

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

⌨️ 快捷键说明

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